
Utilidades de Python para comprobar si un servidor TLS requiere certificados de cliente y para escanear binarios ELF locales en busca de código vulnerable de OpenSSL 3.x vinculado a CVE-2022-3602 y CVE-2022-3786.
Esta es una colección de utilidades sencillas en el contexto de las vulnerabilidades recién descubiertas CVE-2022-3602 y CVE-2022-3786, que permiten responder a las siguientes preguntas:
Ejecutar el siguiente comando
python openssl_req_client_cert.py HOST_NAME PORT
determinará si el servidor SSL requiere autenticación de cliente, en cuyo caso los servidores basados en OpenSSL 3.0.0..3.0.6 serán vulnerables a las CVE anteriores [https://jfrog.com/knowledge-base/upcoming-openssl-3-x-critical-vulnerability/]
Por ejemplo:
|ψ> python openssl_req_client_cert.py 127.0.0.1 12345
127.0.0.1:12345 -> Client certificate not required
Las aplicaciones que ejecutan OpenSSL son fáciles de pasar por alto si la biblioteca está enlazada estáticamente en el binario de una aplicación. Ejecutar el siguiente comando
python scan_vulnerable_openssl_code.py ROOT_DIR
escandirá recursivamente ROOT_DIR en busca de archivos ELF e informará de los archivos que incluyen el patrón ossl_punycode_decode (indicativo de versiones >=3.0.0), mientras que los archivos que además incluyen el patrón ripemd160_newctx, indicativo de la versión actualizada (3.0.7), se informarán como tales.