
Zeek-пакет для обнаружения CVE-2020-0601
Этот скрипт может обнаруживать попытки эксплуатации уязвимости CVE-2020-0601. Он выполняет простую проверку, используется ли известная кривая в сертификате — если это не так, выводится уведомление.
Пример уведомления в 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 - - - - -
Для записи подозрительных сертификатов используйте
redef CVE_2020_0601::log_certs = T;
в вашем local.zeek для включения извлечения. После включения подозрительные сертификаты будут записываться в новый файл cve-2020-0601-certs.log.
Этот скрипт требует установки OpenSSL, который автоматически преобразует явные кривые в имена при разборе сертификата. Многие версии OpenSSL, поставляемые различными дистрибутивами Linux, по-видимому, этого не делают; я пока не совсем уверен, почему так происходит.
Использование версий OpenSSL с отличающимся поведением приведет к большему количеству ложных срабатываний. Тесты этого пакета проверят поведение OpenSSL во время установки; если тест "explicit.zeek" не пройден, ваша версия OpenSSL ведет себя не так, как требуется.
В этом случае скрипт будет также предупреждать обо всех сертификатах, имеющих явные определения кривых; они должны быть очень редкими, но сами по себе не являются проблемой.
Существует вторая версия этого плагина по адресу https://github.com/0xxon/cve-2020-0601-plugin. Вторая версия использует примитивы OpenSSL для прямой проверки кривой сертификата. Однако версия плагина требует OpenSSL 1.1.x и требует сборки и загрузки кода C++ в вашу установку Zeek.
Преимущества версии плагина по адресу https://github.com/0xxon/cve-2020-0601-plugin — более высокая точность, с более конкретными уведомлениями, дающими больше информации о найденной попытке эксплуатации. Недостатки в основном заключаются в более сложной установке.
Хотя этот плагин успешно обнаруживает известный POC-код, возможно (но маловероятно), что другой вариант атаки не будет обнаружен.