
Paquete de Zeek para detectar CVE-2020-0601
Este script puede detectar intentos de explotación de CVE-2020-0601. Realiza una comprobación simple para ver si se utiliza una curva conocida en un certificado; si no es el caso, se genera una notificación.
Ejemplo de notificación en notice.log:
1579043477.791522 CHhAvVGS1DHFjwGM9 192.241.209.49 46110 192.241.202.21 4433 F37z6n1B8zn1fZjpj application/x-x509-user-cert 192.241.202.21:4433/tcp tcp CVE_2020_0601::Unknown_X509_Curve ECC certificate with unknown curve; potential CVE-2020-0601 exploit attempt - 192.241.209.49 192.241.202.21 4433 - - Notice::ACTION_LOG 3600.000000 - - - - -
Para registrar certificados sospechosos, utilice
redef CVE_2020_0601::log_certs = T;
en su local.zeek para activar la extracción. Una vez activada, los certificados sospechosos se registrarán en un nuevo archivo cve-2020-0601-certs.log.
Este script requiere una instalación de OpenSSL que convierta automáticamente las curvas explícitas en nombres mientras se analiza el certificado. Muchas versiones de OpenSSL distribuidas por diferentes distribuciones de Linux no parecen hacerlo; actualmente no estoy seguro de por qué ocurre esto.
El uso de versiones de OpenSSL con comportamiento diferente generará una mayor cantidad de falsos positivos. Las pruebas de este paquete verificarán el comportamiento de OpenSSL durante la instalación; si falla la prueba "explicit.zeek", su versión de OpenSSL no se comporta como se requiere.
En este caso, el script también alertará sobre todos los certificados que tengan definiciones de curvas explícitas; estos deberían ser muy muy raros, pero no son un problema per se.
Hay una segunda versión de este plugin disponible en https://github.com/0xxon/cve-2020-0601-plugin. La segunda versión utiliza primitivas de OpenSSL para verificar directamente la curva de un certificado. Sin embargo, la versión del plugin requiere OpenSSL 1.1.x y requiere que se compile y cargue código C++ en su instalación de Zeek.
Las ventajas de la versión del plugin en https://github.com/0xxon/cve-2020-0601-plugin son una mayor precisión, con notificaciones más específicas que brindan más información sobre un intento de explotación encontrado. Las desventajas son principalmente una mayor fricción de instalación.
Si bien este plugin detecta con éxito el código POC conocido, es posible (aunque improbable) que otra variante del ataque no sea detectada.