
このスクリプトは 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 - - - - -
不審な証明書をログに記録するには、local.zeek で次の設定を使用して抽出を有効にしてください:
redef CVE_2020_0601::log_certs = T;
これを有効にすると、不審な証明書が新しい cve-2020-0601-certs.log ファイルに記録されます。
このスクリプトは、証明書の解析中に OpenSSL が明示的曲線を自動的に名前に変換するインストール環境を必要とします。多くの Linux ディストリビューションが提供する OpenSSL のバージョンではこれが行われないようです。現在、その理由についてはやや確信が持てていません。
動作の異なる OpenSSL バージョンを使用すると、誤検出の量が増加します。このパッケージのテストでは、インストール時に OpenSSL の動作を確認します。"explicit.zeek" テストが失敗した場合、お使いの OpenSSL は要求される動作をしていません。
その場合、スクリプトは明示的曲線定義を持つすべての証明書に対しても警告を発します。そのような証明書は非常に稀ですが、それ自体が問題というわけではありません。
このプラグインの第2バージョンは https://github.com/0xxon/cve-2020-0601-plugin で入手できます。第2バージョンは OpenSSL プリミティブを使用して証明書の曲線を直接チェックします。ただし、プラグインバージョンは OpenSSL 1.1.x が必要であり、Zeek インストールに C++ コードをビルドしてロードする必要があります。
https://github.com/0xxon/cve-2020-0601-plugin のプラグインバージョンの利点は、精度が高く、発見された悪用試行に関するより詳細な情報を提供する具体的な通知が得られることです。欠点は主にインストールのハードルが高いことです。
このプラグインは既知の PoC コードを正常に検出しますが、攻撃の別の亜種が検出されない可能性は(低いですが)存在します。