Firmas psíquicas - lo que necesitas saber
El 19 de abril de 2022, Neil Madden reveló una vulnerabilidad en Oracle Java 15 a 18, y OpenJDK 15, 17 y 18. La vulnerabilidad reside en la criptografía de las firmas ECDSA, lo que permite a un atacante saltarse por completo las comprobaciones de las firmas.
Es fácil ver los 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 los sistemas en 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. Entra directamente en nuestro laboratorio gratuito - Missions para probarlo tú mismo.
¿Cuál es el problema con ECDSA?
Puede que no haya oído hablar antes de ECDSA. Es la abreviatura de Algoritmo de Firma Digital de Curva Elíptica, que es un tipo de criptografía que hace uso de las propiedades matemáticas de las curvas elípticas, ofreciendo una de las mayores seguridades criptográficas de la industria en este momento.
Esto significa que se utiliza para un montón de funciones importantes, como:
- La firma de certificados SSL
- Apretones de manos durante las comunicaciones cifradas
- SAML
- Firmas JWT
- Firmas de OpenID Connect
Esto significa que ECDSA es una parte clave de muchas de las funciones más sensibles para la protección de sistemas que existen. La capacidad de eludir las comprobaciones de firmas sería potencialmente bastante devastadora.
¿Cómo se explota la vulnerabilidad?
Las matemáticas de ECDSA son algo complicadas, por desgracia. Pero lo fundamental es saber que una firma ECDSA contiene 2 datos: 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 señala explícitamente que si el valor de r o s es alguna vez 0, deben descartarse.
Pero la implementación de ECDSA en Java se olvidó de tener esto en cuenta. Por lo tanto, aceptará una firma en la que tanto r como s sean 0, lo que siempre será cierto. Podemos demostrar esto 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:

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

Vamos a cambiar nuestro JWT para utilizar esta nueva firma. Ten en cuenta que en los JWT no se incluye el signo de igualdad.

Ahora, nuestra firma tiene r y s establecidas en 0, y en las versiones vulnerables de Java la comprobación de la firma tendrá éxito para cualquier carga útil que se especifique.
¿A quién afecta y cómo mitigarlo?
La vulnerabilidad afecta tanto a Oracle Java como a OpenJDK. Estos incluyen:
Oracle Java SE (Y versiones anteriores no soportadas):
- 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 pueden aplicarse de inmediato.
Prácticas para defenderse de esta vulnerabilidad
Aquí en Secure Code Warrior, nos esforzamos por proporcionar a los desarrolladores la información más relevante y ejercicios prácticos para las vulnerabilidades críticas, ya sea una más reciente como Psychic Signatures o algo que ha existido durante años.
Creemos que, para mantener realmente el riesgo a raya, es necesario permitir a los desarrolladores entender el mecanismo de defensa y escribir código seguro desde el principio. Por eso creamos un recorrido paso a paso de esta vulnerabilidad (y muchas otras) para ti y los equipos que se ven afectados.
En el tutorial, podrás seguir las instrucciones para explotar la Firma Física en JWTs y ver el impacto en una aplicación que funciona en tiempo real.
Pruébalo ahora.


La vulnerabilidad de Psychic Signature radica en la criptografía de las firmas ECDSA, que protege los sistemas para tareas críticas como la autenticación. Los hackers pueden saltarse cualquier comprobación de firmas con esta vulnerabilidad. En este post explicaremos en qué consiste y cómo mitigarla.

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostración

El 19 de abril de 2022, Neil Madden reveló una vulnerabilidad en Oracle Java 15 a 18, y OpenJDK 15, 17 y 18. La vulnerabilidad reside en la criptografía de las firmas ECDSA, lo que permite a un atacante saltarse por completo las comprobaciones de las firmas.
Es fácil ver los 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 los sistemas en 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. Entra directamente en nuestro laboratorio gratuito - Missions para probarlo tú mismo.
¿Cuál es el problema con ECDSA?
Puede que no haya oído hablar antes de ECDSA. Es la abreviatura de Algoritmo de Firma Digital de Curva Elíptica, que es un tipo de criptografía que hace uso de las propiedades matemáticas de las curvas elípticas, ofreciendo una de las mayores seguridades criptográficas de la industria en este momento.
Esto significa que se utiliza para un montón de funciones importantes, como:
- La firma de certificados SSL
- Apretones de manos durante las comunicaciones cifradas
- SAML
- Firmas JWT
- Firmas de OpenID Connect
Esto significa que ECDSA es una parte clave de muchas de las funciones más sensibles para la protección de sistemas que existen. La capacidad de eludir las comprobaciones de firmas sería potencialmente bastante devastadora.
¿Cómo se explota la vulnerabilidad?
Las matemáticas de ECDSA son algo complicadas, por desgracia. Pero lo fundamental es saber que una firma ECDSA contiene 2 datos: 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 señala explícitamente que si el valor de r o s es alguna vez 0, deben descartarse.
Pero la implementación de ECDSA en Java se olvidó de tener esto en cuenta. Por lo tanto, aceptará una firma en la que tanto r como s sean 0, lo que siempre será cierto. Podemos demostrar esto 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:

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

Vamos a cambiar nuestro JWT para utilizar esta nueva firma. Ten en cuenta que en los JWT no se incluye el signo de igualdad.

Ahora, nuestra firma tiene r y s establecidas en 0, y en las versiones vulnerables de Java la comprobación de la firma tendrá éxito para cualquier carga útil que se especifique.
¿A quién afecta y cómo mitigarlo?
La vulnerabilidad afecta tanto a Oracle Java como a OpenJDK. Estos incluyen:
Oracle Java SE (Y versiones anteriores no soportadas):
- 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 pueden aplicarse de inmediato.
Prácticas para defenderse de esta vulnerabilidad
Aquí en Secure Code Warrior, nos esforzamos por proporcionar a los desarrolladores la información más relevante y ejercicios prácticos para las vulnerabilidades críticas, ya sea una más reciente como Psychic Signatures o algo que ha existido durante años.
Creemos que, para mantener realmente el riesgo a raya, es necesario permitir a los desarrolladores entender el mecanismo de defensa y escribir código seguro desde el principio. Por eso creamos un recorrido paso a paso de esta vulnerabilidad (y muchas otras) para ti y los equipos que se ven afectados.
En el tutorial, podrás seguir las instrucciones para explotar la Firma Física en JWTs y ver el impacto en una aplicación que funciona en tiempo real.
Pruébalo ahora.

El 19 de abril de 2022, Neil Madden reveló una vulnerabilidad en Oracle Java 15 a 18, y OpenJDK 15, 17 y 18. La vulnerabilidad reside en la criptografía de las firmas ECDSA, lo que permite a un atacante saltarse por completo las comprobaciones de las firmas.
Es fácil ver los 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 los sistemas en 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. Entra directamente en nuestro laboratorio gratuito - Missions para probarlo tú mismo.
¿Cuál es el problema con ECDSA?
Puede que no haya oído hablar antes de ECDSA. Es la abreviatura de Algoritmo de Firma Digital de Curva Elíptica, que es un tipo de criptografía que hace uso de las propiedades matemáticas de las curvas elípticas, ofreciendo una de las mayores seguridades criptográficas de la industria en este momento.
Esto significa que se utiliza para un montón de funciones importantes, como:
- La firma de certificados SSL
- Apretones de manos durante las comunicaciones cifradas
- SAML
- Firmas JWT
- Firmas de OpenID Connect
Esto significa que ECDSA es una parte clave de muchas de las funciones más sensibles para la protección de sistemas que existen. La capacidad de eludir las comprobaciones de firmas sería potencialmente bastante devastadora.
¿Cómo se explota la vulnerabilidad?
Las matemáticas de ECDSA son algo complicadas, por desgracia. Pero lo fundamental es saber que una firma ECDSA contiene 2 datos: 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 señala explícitamente que si el valor de r o s es alguna vez 0, deben descartarse.
Pero la implementación de ECDSA en Java se olvidó de tener esto en cuenta. Por lo tanto, aceptará una firma en la que tanto r como s sean 0, lo que siempre será cierto. Podemos demostrar esto 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:

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

Vamos a cambiar nuestro JWT para utilizar esta nueva firma. Ten en cuenta que en los JWT no se incluye el signo de igualdad.

Ahora, nuestra firma tiene r y s establecidas en 0, y en las versiones vulnerables de Java la comprobación de la firma tendrá éxito para cualquier carga útil que se especifique.
¿A quién afecta y cómo mitigarlo?
La vulnerabilidad afecta tanto a Oracle Java como a OpenJDK. Estos incluyen:
Oracle Java SE (Y versiones anteriores no soportadas):
- 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 pueden aplicarse de inmediato.
Prácticas para defenderse de esta vulnerabilidad
Aquí en Secure Code Warrior, nos esforzamos por proporcionar a los desarrolladores la información más relevante y ejercicios prácticos para las vulnerabilidades críticas, ya sea una más reciente como Psychic Signatures o algo que ha existido durante años.
Creemos que, para mantener realmente el riesgo a raya, es necesario permitir a los desarrolladores entender el mecanismo de defensa y escribir código seguro desde el principio. Por eso creamos un recorrido paso a paso de esta vulnerabilidad (y muchas otras) para ti y los equipos que se ven afectados.
En el tutorial, podrás seguir las instrucciones para explotar la Firma Física en JWTs y ver el impacto en una aplicación que funciona en tiempo real.
Pruébalo ahora.

Haga clic en el siguiente enlace y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónEl 19 de abril de 2022, Neil Madden reveló una vulnerabilidad en Oracle Java 15 a 18, y OpenJDK 15, 17 y 18. La vulnerabilidad reside en la criptografía de las firmas ECDSA, lo que permite a un atacante saltarse por completo las comprobaciones de las firmas.
Es fácil ver los 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 los sistemas en 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. Entra directamente en nuestro laboratorio gratuito - Missions para probarlo tú mismo.
¿Cuál es el problema con ECDSA?
Puede que no haya oído hablar antes de ECDSA. Es la abreviatura de Algoritmo de Firma Digital de Curva Elíptica, que es un tipo de criptografía que hace uso de las propiedades matemáticas de las curvas elípticas, ofreciendo una de las mayores seguridades criptográficas de la industria en este momento.
Esto significa que se utiliza para un montón de funciones importantes, como:
- La firma de certificados SSL
- Apretones de manos durante las comunicaciones cifradas
- SAML
- Firmas JWT
- Firmas de OpenID Connect
Esto significa que ECDSA es una parte clave de muchas de las funciones más sensibles para la protección de sistemas que existen. La capacidad de eludir las comprobaciones de firmas sería potencialmente bastante devastadora.
¿Cómo se explota la vulnerabilidad?
Las matemáticas de ECDSA son algo complicadas, por desgracia. Pero lo fundamental es saber que una firma ECDSA contiene 2 datos: 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 señala explícitamente que si el valor de r o s es alguna vez 0, deben descartarse.
Pero la implementación de ECDSA en Java se olvidó de tener esto en cuenta. Por lo tanto, aceptará una firma en la que tanto r como s sean 0, lo que siempre será cierto. Podemos demostrar esto 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:

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

Vamos a cambiar nuestro JWT para utilizar esta nueva firma. Ten en cuenta que en los JWT no se incluye el signo de igualdad.

Ahora, nuestra firma tiene r y s establecidas en 0, y en las versiones vulnerables de Java la comprobación de la firma tendrá éxito para cualquier carga útil que se especifique.
¿A quién afecta y cómo mitigarlo?
La vulnerabilidad afecta tanto a Oracle Java como a OpenJDK. Estos incluyen:
Oracle Java SE (Y versiones anteriores no soportadas):
- 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 pueden aplicarse de inmediato.
Prácticas para defenderse de esta vulnerabilidad
Aquí en Secure Code Warrior, nos esforzamos por proporcionar a los desarrolladores la información más relevante y ejercicios prácticos para las vulnerabilidades críticas, ya sea una más reciente como Psychic Signatures o algo que ha existido durante años.
Creemos que, para mantener realmente el riesgo a raya, es necesario permitir a los desarrolladores entender el mecanismo de defensa y escribir código seguro desde el principio. Por eso creamos un recorrido paso a paso de esta vulnerabilidad (y muchas otras) para ti y los equipos que se ven afectados.
En el tutorial, podrás seguir las instrucciones para explotar la Firma Física en JWTs y ver el impacto en una aplicación que funciona en tiempo real.
Pruébalo ahora.
Índice

Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Asistentes de codificación de IA: Guía de navegación segura para la próxima generación de desarrolladores
Los grandes modelos lingüísticos ofrecen ventajas irresistibles en velocidad y productividad, pero también introducen riesgos innegables para la empresa. Las barandillas de seguridad tradicionales no bastan para controlar el diluvio. Los desarrolladores necesitan conocimientos de seguridad precisos y verificados para identificar y prevenir los fallos de seguridad desde el principio del ciclo de vida de desarrollo del software.
Seguridad desde el diseño: Definición de las mejores prácticas, capacitación de los desarrolladores y evaluación comparativa de los resultados de la seguridad preventiva
En este documento de investigación, los cofundadores Secure Code Warrior , Pieter Danhieux y el Dr. Matias Madou, Ph.D., junto con los expertos colaboradores, Chris Inglis, ex Director Nacional Cibernético de EE.UU. (ahora Asesor Estratégico de Paladin Capital Group), y Devin Lynch, Director Senior, Paladin Global Institute, revelarán los hallazgos clave de más de veinte entrevistas en profundidad con líderes de seguridad empresarial, incluyendo CISOs, un VP de Seguridad de Aplicaciones y profesionales de seguridad de software.
Recursos para empezar
Más de 10.000 actividades de aprendizaje sobre código seguro: Una década de gestión de riesgos para desarrolladores
Más de 10 000 actividades de aprendizaje de código seguro y una década ayudando a los desarrolladores a reducir riesgos, mejorar la calidad del código y abordar con confianza el desarrollo asistido por IA.
Estableciendo el estándar: SCW publica reglas de seguridad de codificación de IA gratuitas en GitHub
El desarrollo asistido por IA ya no es una posibilidad: ya está aquí y está transformando rápidamente la forma de escribir software. Herramientas como GitHub Copilot, Cline, Roo, Cursor, Aider y Windsurf están transformando a los desarrolladores en sus propios copilotos, permitiendo iteraciones más rápidas y acelerando todo, desde la creación de prototipos hasta grandes proyectos de refactorización.
Cierre el círculo de las vulnerabilidades con Secure Code Warrior + HackerOne
Secure Code Warrior se complace en anunciar nuestra nueva integración con HackerOne, líder en soluciones de seguridad ofensiva. Juntos, estamos construyendo un ecosistema potente e integrado. HackerOne señala dónde se producen realmente las vulnerabilidades en entornos reales, exponiendo el "qué" y el "dónde" de los problemas de seguridad.