Psychic Signatures: lo que necesitas saber

El 19 de abril de 2022, Neil Madden reveló una vulnerabilidad en Oracle Java 15 a 18, y en OpenJDK 15, 17 y 18. La vulnerabilidad reside en la criptografía de las firmas ECDSA, lo que permite a un atacante eludir por completo las comprobaciones de firma para estas firmas.
Es fácil ver titulares sobre esta vulnerabilidad y pasarlos por alto dada la naturaleza oscura de las firmas ECDSA. Sin embargo, las firmas ECDSA desempeñan un papel clave en la protección de sistemas en todo Internet para tareas críticas como la autenticación.
Antes de entrar en detalles, si quieres experimentar cómo los hackers explotan las firmas psíquicas de forma práctica, dirígete directamente a nuestro laboratorio gratuito - Missions para probarlo tú mismo.
¿Qué tiene de importante ECDSA?
Es posible que no hayas oído hablar de ECDSA antes. Es el acrónimo de Elliptic Curve Digital Signature Algorithm (Algoritmo de firma digital de curva elíptica), un tipo de criptografía que utiliza las propiedades matemáticas de las curvas elípticas y que ofrece actualmente una de las seguridades criptográficas más sólidas del sector.
Esto significa que se utiliza para muchas funciones importantes, como:
- La firma de certificados SSL
- Negociaciones (handshakes) durante comunicaciones cifradas
- SAML
- Firmas JWT
- Firmas OpenID Connect
Esto significa que ECDSA es una parte clave de muchas de las funciones más sensibles para proteger los sistemas actuales. La capacidad de eludir las comprobaciones de firma podría ser potencialmente devastadora.
¿Cómo se explota la vulnerabilidad?
Desafortunadamente, las matemáticas de ECDSA son algo complicadas. Pero lo fundamental es saber que una firma ECDSA contiene 2 piezas de información: r y s.
Estos números se utilizan para calcular la validez de la firma. El valor r es el "resultado" (lado izquierdo) de un cálculo que utiliza tanto r como s en el lado derecho de la ecuación. Dado que multiplicar por 0 es una mala idea, la especificación ECDSA indica explícitamente que si el valor de r o s es 0, deben descartarse.
Pero la implementación de ECDSA en Java olvidó tener esto en cuenta. Por lo tanto, aceptará una firma con r y s iguales a 0, lo cual siempre será cierto. Podemos demostrarlo con un ejemplo de un JWT, mostrando lo fácil que es. Usando https://token.dev/, podemos generar un token con el algoritmo ES256, similar al que generaría una aplicación:

Recuerda que un JWT se divide en 3 partes:
- Encabezado (en azul)
- Carga útil (en verde)
- Firma (en rojo)
Ahora, si quisiéramos eludir la comprobación de la firma, ¿cómo lo haríamos? La firma especifica los valores para r y s, y está codificada en formato DER.

Cambiemos nuestro JWT para usar esta nueva firma. Ten en cuenta que en los JWT, el signo igual no se incluye.

Ahora, nuestra firma tiene r y s establecidos en 0, y en las versiones vulnerables de Java, la verificación de la firma tendrá éxito para cualquier carga útil que especifiques.
¿Quiénes están afectados y cómo mitigarlo?
La vulnerabilidad afecta tanto a Oracle Java como a OpenJDK. Estos incluyen:
Oracle Java SE (y versiones anteriores no compatibles):
- 18
- 17.0.2
Oracle GraalVM Enterprise Edition:
- 22.0.0.2
- 21.3.1
OpenJDK:
- 18
- 17.0.2
- 15.0.6
- 13.0.10
- 11.0.14
- 8u322
- 7u331
Tanto Oracle como OpenJDK han publicado avisos y parches para el problema que se pueden aplicar de inmediato.
Prácticas prácticas para defenderse de esta vulnerabilidad
En Secure Code Warrior, nos esforzamos por brindar a los desarrolladores la información más relevante y ejercicios prácticos sobre vulnerabilidades críticas, ya sea una reciente como Psychic Signatures o algo que ha existido durante años.
Creemos que, para mantener el riesgo a raya, es necesario capacitar a los desarrolladores para que comprendan el mecanismo de defensa y escriban código seguro desde el principio. Por eso creamos un tutorial paso a paso de esta vulnerabilidad (y muchas otras) para ti y los equipos afectados.
En el tutorial, podrás seguir las instrucciones para explotar Psychic Signatures en JWT y ver el impacto en una aplicación funcional en tiempo real.
Pruébalo ahora.
Controle el desarrollo impulsado por IA antes de su lanzamiento
Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).
Explorar más blogs
Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

Una cultura de seguridad: cómo Sage creó su programa de defensores
Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores
La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro
IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial
Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Habilitador 8: Branding de su programa
Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.
.avif)
Cada empleado está ahora en la primera línea de la ciberseguridad de la IA
El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.
Proteja el desarrollo basado en IA antes de su lanzamiento
Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.