
CVE-2020-13777に対して脆弱なサーバーを検出するZeekスクリプト
このスクリプトは、サーバーが CVE-2020-13777 に対して脆弱である可能性があるかどうかを確認するための簡単なテストを実行します。
CVE-2020-13777 は GnuTLS に暗号化されていないセッションチケットを作成させます。これは、gnutls が key_name をゼロに設定するかどうかを確認することで検出できるようです。このために、セッションチケットの最初の 16 バイトを使用します。このスクリプトは以下をチェックします:
どちらのケースも、サーバーが脆弱なバージョンの GnuTLS を使用していることを示します。
検出されたケースは notice.log に書き込まれます。出力例:
1591660828.497706 CHhAvVGS1DHFjwGM9 ::1 58800 ::1 5556 - - - tcp CVE_2020_13777::CVE_2020_13777_Server Server potentially vulnerable to CVE-2020-13777 detected - ::1 ::1 5556 - - Notice::ACTION_LOG 3600.000000 - - - - -
1591660837.423412 ClEkJM2Vm5giqnMf4h ::1 58802 ::1 5556 - - - tcp CVE_2020_13777::CVE_2020_13777_Resumed Server potentially vulnerable to CVE-2020-13777 detected; client resumed with suspicious session ticket - ::1 ::1 5556 - - Notice::ACTION_LOG 3600.000000 - - - - -
通知は重複排除され、サーバーごとに default_suppression_interval (デフォルト: 1 時間) ごとに 1 回だけログに記録されます。
zkg でインストールするには、次のようにします:
zkg install 0xxon/cve-2020-0601
このスクリプトは TLS 1.2 (またはそれ以下) の接続でのみ動作します。TLS 1.3 を使用する脆弱なサーバーには警告しません。
このスクリプトは広範囲にテストされていません。自己生成したテストデータで動作し、脆弱なサーバーを見つけるはずです。別のサーバーソフトウェアで誤検知が発生する可能性はありますが、その可能性は低いです。