
Zeek package to detect CVE-2020-0601
Este script pode detectar tentativas de exploração para o CVE-2020-0601. Ele realiza uma verificação simples 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 - 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.zeek para ativar a extração. Assim que isso for ativado, certificados suspeitos serão registrados em um novo arquivo cve-2020-0601-certs.log.
Este script requer uma instalação do OpenSSL que converta automaticamente curvas explícitas em nomes enquanto o certificado é analisado. Muitas versões do OpenSSL distribuídas por diferentes distribuições Linux não parecem fazer isso; atualmente estou um pouco incerto sobre o porquê disso.
O uso de versões do OpenSSL com comportamento diferente levará a uma quantidade maior de falsos positivos. Os testes deste pacote verificarão o comportamento do OpenSSL durante a instalação; se o teste "explicit.zeek" falhar, sua versão do OpenSSL não se comporta conforme o necessário.
Nesse caso, o script também alertará sobre todos os certificados que possuem definições de curva explícitas; estes devem ser muito, muito raros, mas não são um problema em si.
Há uma segunda versão deste plugin disponível em https://github.com/0xxon/cve-2020-0601-plugin. A segunda versão usa primitivas do OpenSSL para verificar diretamente a curva de um certificado. No entanto, a versão do plugin requer OpenSSL 1.1.x - e requer que código C++ seja compilado e carregado em sua instalação do Zeek.
As vantagens da versão do plugin em https://github.com/0xxon/cve-2020-0601-plugin são uma maior precisão - com avisos mais específicos que fornecem mais informações sobre uma tentativa de exploração encontrada. As desvantagens são principalmente maior dificuldade de instalação.
Embora este plugin detecte com sucesso o código POC conhecido, é possível (mas improvável) que outra variante do ataque não seja detectada.