
Pacote Zeek que usa OpenSSL para detectar tentativas de exploração da CVE-2020-0601
Este script pode detectar tentativas de exploração para CVE-2020-0601. Ele realiza uma verificação para ver se uma curva conhecida é usada em um certificado - se não for o caso, um aviso é emitido.
Exemplo de aviso no 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 Curve validation code: 0 192.241.209.49 192.241.202.21 4433 - -Notice::ACTION_LOG 3600.000000 - - - - -
Para registrar certificados suspeitos, use
redef CVE_2020_0601::log_certs = T;
no seu local.bro/local.zeek para ativar a extração. Uma vez ativado, certificados suspeitos serão registrados em um novo arquivo cve-2020-0601-certs.log.
Este script requer OpenSSL 1.1.1. Ele usa funcionalidades do OpenSSL para testar se uma curva contida em um certificado é uma curva conhecida ou não.
Por favor, note que é muito possível que este teste seja excessivo. Se você quiser um script mais simples, que não requer carregar código C compilado na sua instalação do Zeek, dê uma olhada no repositório em https://github.com/0xxon/cve-2020-0601, que usa uma solução pura de script. A solução pura de script tem uma taxa de falsos positivos potencialmente maior - mas atualmente não tenho nenhum relato de falsos positivos.
Atualmente não tenho planos de fazer uma versão deste pacote que compile com versões mais antigas do OpenSSL.