
Paquet Zeek pour détecter CVE-2020-0601
Ce script peut détecter les tentatives d'exploitation pour CVE-2020-0601. Il effectue une simple vérification pour voir si une courbe connue est utilisée dans un certificat - si ce n'est pas le cas, une notification est levée.
Exemple de notification dans 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 - - - - -
Pour journaliser les certificats suspects, veuillez utiliser
redef CVE_2020_0601::log_certs = T;
dans votre local.zeek pour activer l'extraction. Une fois activée, les certificats suspects seront journalisés dans un nouveau fichier cve-2020-0601-certs.log.
Ce script nécessite une installation OpenSSL qui convertit automatiquement les courbes explicites en noms lors de l'analyse du certificat. De nombreuses versions d'OpenSSL fournies par différentes distributions Linux ne semblent pas le faire ; je ne suis actuellement pas tout à fait sûr de la raison.
L'utilisation de versions d'OpenSSL avec un comportement différent entraînera un nombre plus élevé de faux positifs. Les tests de ce paquet vérifieront le comportement d'OpenSSL lors de l'installation ; si le test "explicit.zeek" échoue, votre version d'OpenSSL ne se comporte pas comme requis.
Dans ce cas, le script alertera également sur tous les certificats qui ont des définitions de courbes explicites ; ceux-ci devraient être très très rares, mais ne sont pas en soi un problème.
Il existe une deuxième version de ce plugin disponible à l'adresse https://github.com/0xxon/cve-2020-0601-plugin. La deuxième version utilise les primitives OpenSSL pour vérifier directement une courbe de certificat. Cependant, la version plugin nécessite OpenSSL 1.1.x - et nécessite que du code C++ soit compilé et chargé dans votre installation Zeek.
Les avantages de la version plugin à https://github.com/0xxon/cve-2020-0601-plugin sont une précision plus élevée - avec des notifications plus spécifiques donnant plus d'informations sur une tentative d'exploitation trouvée. Les inconvénients sont principalement une friction d'installation plus élevée.
Bien que ce plugin détecte avec succès le code POC connu, il est possible (mais peu probable) qu'une autre variante de l'attaque ne soit pas détectée.