
SpookySSL CVE-2022-3602 SSLv3 Scanner para Windows, Linux, macOS
Escáner SpookySSL CVE-2022-3602 SSLv3 para Windows, Linux, macOS
Primero, el problema surge al determinar el tamaño del byte. Al determinar el tamaño del byte, si no se define un valor NULL (vacío/cero), la longitud del byte puede establecerse como cero. En el comando de abajo, la parte que comienza con xn-- significa la conversión directa de nombres de dominio escritos en diferentes alfabetos (por ejemplo, convertidos de chino a punycode) al alfabeto latino. Dentro del condicional If, el comando memcpy asigna en la memoria un espacio de pila de valor delta + 1 y escribe el valor outptr en ese espacio. Cuando se ingresa un valor NULL, como se abre un espacio de 1 byte, dos códigos de espacio crean un desbordamiento de búfer.
Para más información: https://github.com/openssl/openssl/commit/c42165b5706e42f67ef8ef4c351a9a4c5d21639a
En primer lugar, debemos conocer la ejecución remota de código (RCE).
Los ataques de ejecución remota de código (RCE) permiten a un atacante ejecutar código malicioso de forma remota en una computadora. El impacto de una vulnerabilidad RCE puede variar desde la ejecución de malware hasta que un atacante obtenga el control total de una máquina comprometida.
La vulnerabilidad CVE-2022-3602 en OpenSSL se produce debido al procesamiento incorrecto de Punycode al verificar certificados X.509.
Punycode es una representación de cadenas Unicode utilizando el subconjunto limitado de caracteres ASCII. Generalmente se utiliza para codificar nombres de dominio que contienen caracteres no ASCII, por ejemplo letras japonesas. Una cadena codificada en punycode
comienza con “xn--” y es seguida por caracteres y dígitos en inglés.
La función vulnerable ossl_punycode_decode puede causar un desbordamiento de búfer durante la decodificación de cadenas Punycode. Es llamada cuando OpenSSL procesa una cadena de certificados. Para explotar la vulnerabilidad se requiere:
1) Crear un certificado de CA (autoridad de certificación) o un certificado intermedio que contenga el campo “nameConstraints” con una cadena Punycode maliciosa. La cadena Punycode debe contener al menos 512 bytes excluyendo “xn--”.
2) Crear un certificado hoja que contenga un campo otherName de SubjectAlternateName (SAN) que especifique una cadena SmtpUTF8Mailbox.
Vulnerabilidad de Denegación de Servicio (DoS)
Un ataque de Denegación de Servicio (DoS) es un ataque destinado a apagar una máquina o red, haciéndola inaccesible para sus usuarios previstos. Los ataques DoS logran esto inundando el objetivo con tráfico o enviándole información que provoca un bloqueo.
La vulnerabilidad CVE-2022-3602 también tiene una vulnerabilidad de Denegación de Servicio, como otros desbordamientos de búfer. El desbordamiento de búfer ocurre en la función vulnerable ossl_a2ulabel. Cuando esta función encuentra una parte Punycode seguida de un carácter de punto (“.”), también agrega “.” al búfer de salida incluso si desborda su tamaño.
De esta manera, un atacante puede desbordar el búfer de salida con cualquier número de caracteres “.”, lo que lleva a la corrupción de la pila. Esta vulnerabilidad no puede usarse para ejecución remota de código, solo para denegación de servicio.
Fuente: https://blog.checkpoint.com/2022/11/01/openssl-vulnerability-cve-2022-3602-remote-code-execution-and-cve-2022-3786-denial-of-service-check-point-research-update/
