Iconos SCW
héroe bg sin separador
Blog

사이킥 시그니처 - 알아야 할 사항

Charlie Eriksen
Publicado el 27 de abril de 2022
Última actualización el 9 de marzo de 2026

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:

Un token generado con el algo ES256

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. 

Codificación DER para los valores de la firma

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

Nuevo JWT con firma codificada DER

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.

Ver recursos
Ver recursos

Psychic Signature 취약점은 인증과 같은 중요한 작업을 위해 시스템을 보호하는 ECDSA 서명용 암호화에 있습니다.해커는 이 취약점으로 인해 모든 서명 검사를 우회할 수 있습니다.이 게시물에서는 이 문제의 정의 및 완화 방법에 대해 설명하겠습니다.

¿Le interesa saber más?

Más información

Secure Code Warrior está aquí para ayudar a las organizaciones a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura que priorice la ciberseguridad. Ya seas administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudarte a reducir los riesgos asociados al código inseguro en tu organización.

Reserva de demostración
Destinatarios:
marcas de LinkedInSocialx logotipo
Autor
Charlie Eriksen
Publicado el 27 de abril de 2022

Destinatarios:
marcas de LinkedInSocialx logotipo

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:

Un token generado con el algo ES256

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. 

Codificación DER para los valores de la firma

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

Nuevo JWT con firma codificada DER

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.

Ver recursos
Ver recursos

Para descargar el informe, rellene el siguiente formulario.

Solicitamos su consentimiento para enviarle información sobre nuestros productos y/o temas relacionados con la codificación de seguridad. Siempre tratamos su información personal con el máximo cuidado y nunca la vendemos a otras empresas con fines de marketing.

Enviar
Icono de éxito de SCW
Icono de error scw
Para enviar el formulario, active la cookie «Analytics». Una vez completado, puede desactivarla en cualquier momento.

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:

Un token generado con el algo ES256

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. 

Codificación DER para los valores de la firma

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

Nuevo JWT con firma codificada DER

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.

Ver seminario web
Empezar
Más información

Haga clic en el siguiente enlace y descargue el PDF de este recurso.

Secure Code Warrior está aquí para ayudar a las organizaciones a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura que priorice la ciberseguridad. Ya seas administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudarte a reducir los riesgos asociados al código inseguro en tu organización.

Ver informeReserva de demostración
Ver recursos
Destinatarios:
marcas de LinkedInSocialx logotipo
¿Le interesa saber más?

Destinatarios:
marcas de LinkedInSocialx logotipo
Autor
Charlie Eriksen
Publicado el 27 de abril de 2022

Destinatarios:
marcas de LinkedInSocialx logotipo

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:

Un token generado con el algo ES256

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. 

Codificación DER para los valores de la firma

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

Nuevo JWT con firma codificada DER

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

Descargar PDF
Ver recursos
¿Le interesa saber más?

Más información

Secure Code Warrior está aquí para ayudar a las organizaciones a proteger el código durante todo el ciclo de vida del desarrollo de software y a crear una cultura que priorice la ciberseguridad. Ya seas administrador de AppSec, desarrollador, CISO o cualquier persona relacionada con la seguridad, podemos ayudarte a reducir los riesgos asociados al código inseguro en tu organización.

Reserva de demostraciónDescargar
Destinatarios:
marcas de LinkedInSocialx logotipo
Centro de recursos

Recursos útiles para empezar

Más publicaciones
Centro de recursos

Recursos útiles para empezar

Más publicaciones