
Script de escaneo automático y explotación remota de CVE-2020-1971. Script de escaneo local automático y parcheo.
CVE-2020-1971 Script de escaneo automático & explotación remota. Script de escaneo local automático & parcheo.
5:03pm
Actualmente estoy desarrollando los scripts y espero tener todo listo para esta noche. Por ahora este repositorio solo contiene el código fuente parcheado de OpenSSL 1.1.1i. Actualmente estoy trabajando en un script de parcheo de instalación/actualización.
5:50pm
Script de instalación para Debian/Ubuntu Linux subido. Para las instrucciones de instalación, consulte "Instalación de Linux"
6:40pm
El tipo X.509 GeneralName es un tipo genérico para representar diferentes tipos de nombres. Uno de esos tipos de nombre se conoce como EDIPartyName. OpenSSL proporciona una función GENERAL_NAME_cmp que compara diferentes instancias de un GENERAL_NAME para ver si son iguales o no. Esta función se comporta incorrectamente cuando ambos GENERAL_NAME contienen un EDIPARTYNAME. Puede ocurrir una desreferencia de puntero NULL y un bloqueo, lo que conduce a un posible ataque de denegación de servicio.
OpenSSL utiliza la función GENERAL_NAME_cmp para dos propósitos
Comparar los nombres de los puntos de distribución CRL entre una CRL disponible y un punto de distribución CRL incrustado en un certificado X509
Al verificar que el firmante del token de respuesta de marca de tiempo coincide con el nombre de la autoridad de marca de tiempo (expuesto a través de las funciones de API TS_RESP_verify_response y TS_RESP_verify_token)
Si un atacante puede controlar ambos elementos que se comparan, entonces podría provocar un bloqueo. Por ejemplo, si el atacante puede engañar a un cliente o servidor para que compruebe un certificado malicioso contra una CRL maliciosa, esto puede ocurrir.
Tenga en cuenta que algunas aplicaciones descargan automáticamente las CRL basándose en una URL incrustada en un certificado. Esta comprobación se realiza antes de que se verifiquen las firmas del certificado y de la CRL. Las herramientas s_server, s_client y verify de OpenSSL admiten la opción "-crl_download", que implementa la descarga automática de CRL, y se ha demostrado que este ataque funciona contra esas herramientas.
Tenga en cuenta que un error no relacionado hace que las versiones afectadas de OpenSSL no puedan analizar ni construir codificaciones correctas de EDIPARTYNAME. Sin embargo, es posible construir un EDIPARTYNAME malformado que el analizador de OpenSSL acepte y, por lo tanto, desencadenar este ataque.
Todas las versiones de OpenSSL 1.1.1 y 1.0.2 se ven afectadas por este problema. Otras versiones de OpenSSL están fuera de soporte y no se han comprobado. Corregido en OpenSSL 1.1.1i (Afectadas 1.1.1-1.1.1h). Corregido en OpenSSL 1.0.2x (Afectadas 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
Ejecutar:
sudo ./Linux_Patched_Install_From_Source_Script
El OpenSSL "nativo" utiliza las API de Windows directamente en tiempo de ejecución. Para compilar un OpenSSL nativo puede utilizar:
El compilador de C de Microsoft Visual C++ (MSVC) en la línea de comandos
o
el compilador cruzado MinGW ejecutado en el entorno de desarrollo similar a GNU MSYS2 o ejecutado en Linux o Cygwin
El OpenSSL "alojado" (hosted) se basa en una capa de compatibilidad POSIX externa para la compilación (utilizando shell, compilador y herramientas GNU/Unix) y en tiempo de ejecución. Para esta opción puede utilizar Cygwin.
Además de los requisitos e instrucciones enumerados en INSTALL.md, también se requieren los siguientes:
Perl. Strawberry Perl, disponible en http://strawberryperl.com/ Lea NOTES.PERL para obtener más información, incluido el uso de CPAN. Una alternativa es ActiveState Perl, https://www.activestate.com/ActivePerl para la cual es posible que necesite compilar explícitamente el módulo Perl Win32/Console.pm a través de https://platform.activestate.com/ActiveState y luego descargarlo.
Compilador de C de Microsoft Visual.
Netwide Assembler (NASM), disponible en https://www.nasm.us Tenga en cuenta que NASM es el único ensamblador compatible.
Instale Perl
Instale NASM
Asegúrese de que Perl y NASM estén en su %PATH%
Utilice el Símbolo del sistema para desarrolladores de Visual Studio con privilegios de administrador, eligiendo una de sus variantes según la arquitectura prevista. O ejecute "cmd" y ejecute "vcvarsall.bat" con una de las opciones x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm o amd64_arm64. Esto configura las variables de entorno necesarias para nmake.exe, cl.exe, etc. Consulte también https://docs.microsoft.com/cpp/build/building-on-the-command-line
Desde la raíz del directorio de código fuente de OpenSSL, escriba perl Configure VC-WIN32 si desea OpenSSL de 32 bits o perl Configure VC-WIN64A si desea OpenSSL de 64 bits o perl Configure para que Configure determine la plataforma
nmake
nmake test
nmake install
Para obtener las instrucciones completas de instalación, o si algo sale mal en cualquier etapa, consulte el archivo INSTALL.md.
Los directorios de instalación predeterminados se derivan de las variables de entorno.
Para VC-WIN32, se utilizan los siguientes valores predeterminados:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
Para VC-WIN64, se utilizan los siguientes valores predeterminados:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
Si esas variables de entorno no existen (en una instalación Win32 pura, por ejemplo), se utilizan estos valores de respaldo:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
TENGA EN CUENTA TAMBIÉN que esos directorios suelen estar protegidos contra escritura, incluso si su cuenta está en el grupo de Administradores. Para solucionarlo, inicie el símbolo del sistema haciendo clic derecho sobre él y eligiendo "Ejecutar como administrador" antes de ejecutar 'nmake install'. La otra solución es, por supuesto, elegir un conjunto diferente de directorios utilizando --prefix y --openssldir durante la configuración.
Los objetivos de UWP solo admiten la compilación de bibliotecas estáticas y dinámicas.
Debe definir el tipo de plataforma como "uwp" y la arquitectura de destino mediante "vcvarsall.bat" antes de compilar. Por ejemplo, si desea compilar versiones "arm64", debe ejecutar "vcvarsall.bat x86_arm64 uwp".
Las referencias se proporcionan para comodidad del lector y para ayudar a distinguir entre vulnerabilidades.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc