
PCAPとSuricataシグネチャを使用して、OpenSSL CVE-2022-3602の悪用試行を検出するためのものです。悪意のあるクライアント/サーバートラフィックや、正規のpunycode証明書の例を含みます。
PCAPがなければ、それは起こっていない
最近公開されたOpenSSL v3.0からv3.0.6の脆弱性(CVE-2022-3602)を受けて、私たちは悪用の試みが「ネットワーク上で」どのように見えるかを調査しました。このリポジトリには、さまざまな悪用シナリオのPCAPと、Suricata用の検出ルールが含まれています。
また、subject alternative nameにpunycodeエンコードされたメールアドレスを含む正当な証明書の交換を含むPCAPも含まれています。このPCAPを使用して、悪用の試みで予想される非常に長いsubject alternative nameではなく、短いsubject alternative nameのみを持つ証明書に対してルールが誤検知を引き起こさないかをテストしました。
OpenSSL CVE-2022-3602バグをトリガーするトラフィックを含むPCAPファイルを作成するために、以下のリソースを使用しました:
| PCAP | 説明 |
|---|
| spookyssl-windowscrash.pcap | DataDogのWindows Crash PoCを使用して作成 |
| spookyssl-malicious_client.pcap | DataDogのmalicious_client PoCを使用して作成 |
| spookyssl-malicious_server.pcap | DataDogのmalicious_server PoCを使用して作成 |
| not-spookyssl-certificate.pcap | 正当なpunycode証明書(悪意はありません) |
OpenSSL CVE-2022-3602バグを検出するために、以下のSuricataシグネチャが作成されました:
alert tls any any -> any any (msg:"FOX-SRT - Exploit - Possible SpookySSL Certificate Observed (CVE-2022-3602)"; \
flow:established; \
content:"|2b 06 01 05 05 07 08 09|"; fast_pattern; \
content:"|06 03 55 1d 1e|"; content:"xn--"; \
content:!"|81|"; distance:-6; within:1; byte_test:2,>=,500,-6,relative; \
classtype:attempted-user; threshold:type limit,track by_src,count 1,seconds 3600; \
reference:url,www.openssl.org/news/secadv/20221101.txt; \
reference:url,https://github.com/fox-it/spookyssl-pcaps; \
metadata:ids suricata; \
metadata:created_at 2022-11-02; sid:21004268; rev:3;)
コンテンツマッチの内訳:
|2b 06 01 05 05 07 08 09| -- type-id: 1.3.6.1.5.5.7.8.9 (id-pkix.8.9)(id-on-SmtpUTF8Mailbox)を検出|06 03 55 1d 1e| -- Extension Id: 2.5.29.30 (id-ce-nameConstraints)(nameConstraints拡張)を検出"xn--" -- punycodeを検出。byte_testキーワードを使用したpunycode値のサイズと組み合わせて:
byte_test:2,>=,500,-6,relative;また、小さなpunycode値を明示的にチェックし、その場合にシグネチャがトリガーされないようにするために以下を使用します:
content:!"|81|"; distance:-6; within:1;TLSv1.3を使用するセッションでは証明書が暗号化されるため、ネットワークシグネチャは機能しません。
クライアントのクラッシュにより、spookyssl-windowscrash.pcapでリセットパケットも確認できます。
