该脚本可以检测针对 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 Curve validation code: 0 192.241.209.49 192.241.202.21 4433 - -Notice::ACTION_LOG 3600.000000 - - - - -
要记录可疑证书,请在 local.bro/local.zeek 中使用以下配置以开启提取:
redef CVE_2020_0601::log_certs = T;
开启后,可疑证书将被记录到一个新的 cve-2020-0601-certs.log 文件中。
该脚本需要 OpenSSL 1.1.1。它利用 OpenSSL 功能来测试证书中包含的曲线是否为已知曲线。
请注意,这种检测方式可能存在过度检测的情况。如果您需要一个更简单的脚本,无需将编译后的 C 代码加载到 Zeek 安装中,请参考 https://github.com/0xxon/cve-2020-0601 中的仓库,那里提供了一个纯脚本解决方案。纯脚本方案可能存在更高的误报率——但目前我尚未收到任何误报报告。
我目前没有计划提供可编译到旧版本 OpenSSL 的该包版本。