
Kali Linux マシン上の Wazuh(オープンソース SIEM/XDR)を使った個人的な練習中に、脆弱性検知モジュールが WeasyPrint パッケージに High(CVSS 7.5) の深刻度の脆弱性を特定しました:SSRF 保護のバイパス(CVE-2025-68616)。私はこの検知結果を調査し、ローカルで概念実証を使用して問題を再現し、プロジェクトのパッチ適用済みバージョンを適用して、悪用が機能しなくなったことを確認しました。このリポジトリは、検知、分析、PoC、修復の全プロセスを文書化したものです。
Wazuh は、ログ収集、ファイル整合性監視(FIM)、異常検知、監視対象ホストにインストールされているソフトウェアの 脆弱性検知 などを組み合わせたオープンソースのセキュリティプラットフォーム(SIEM + XDR)であり、パッケージインベントリを CVE データベース(NVD など)とクロスリファレンスします。
この演習では、Wazuh エージェントは Kali GNU/Linux 2025.4 マシン上で実行され、マネージャー、インデクサー、ダッシュボードもローカルで実行されていました。この検知結果に到達する前に、環境にはすでにアクティブなモニタリングが正しく機能していました:PAM ログインセッション、sudo の実行、リッスンポートの変更、rootcheck の異常イベントがすべて Threat Hunting モジュールに表示されていました。
Wazuh の 脆弱性検知 モジュールは、Kali エージェントで weasyprint パッケージに関連する 1 件の High 深刻度の脆弱性を報告しました。
WeasyPrint は、HTML/CSS を PDF ドキュメントに変換する Python ライブラリであり、Web アプリケーションからレポート、請求書、動的ドキュメントを生成するために広く使用されています。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Ncpe:2.3:a:kozea:weasyprint:*:*:*:*:*:*:*:*、68.0 を除く)説明: バージョン 68.0 より前では、WeasyPrint の default_url_fetcher に SSRF 保護バイパスが存在します。この脆弱性により、開発者がカスタム url_fetcher を実装して内部ネットワークリソース(localhost サービスやクラウドメタデータエンドポイントなど)へのアクセスをブロックしている場合でも、攻撃者はそれらにアクセスできます。これは、基盤となる urllib ライブラリが HTTP リダイレクトを自動的にフォローし、開発者のセキュリティポリシーに対して新しい宛先を再検証しないために発生します。バージョン 68.0 にはこの問題のパッチが含まれています。
参考文献:
パッチ適用前に実際の影響を確認するために、システムにインストールされている脆弱なバージョンに対してローカルな悪用シナリオを設定しました。
1. パッチが適用されたリポジトリをクローンしました(main ブランチ。すでにバージョン 68.0 の修正が含まれています):
git clone https://github.com/Kozea/WeasyPrint.git
2. 修正されたコードを確認しました。具体的には、default_url_fetcher ロジックとリダイレクト処理が含まれる weasyprint/urls.py を確認しました:
3. 悪意のある HTML ファイルを作成しました。これは iframe を介してローカルシステムファイルを外部に持ち出そうとするもので、CVE で説明されている SSRF / 不正なリソースアクセスベクターをシミュレートしています(注:以下のファイル名とファイル内容は、実行時のものと正確に同じで、スクリーンショットのターミナル出力と一致しています):
cat << 'EOF' > ataque.html
<!DOCTYPE html>
<html>
<head>
<title>PoC SSRF - WeasyPrint</title>
</head>
<body>
<h1>Prueba de Exfiltración de Archivos Locales</h1>
<p>Si el parche no está aplicado, el contenido de abajo debería mostrar el archivo /etc/passwd:</p>
</body>
</html>
EOF
python3 -m weasyprint ataque.html resultado_vulnerable.pdf
xdg-open resultado_vulnerable.pdf
4. 結果: 生成された PDF を開くと、file:///etc/passwd を指す iframe は 空 のままで、システムファイルの内容は表示されません。これにより、パッチ適用済みバージョンでは、不正なリソースへのアクセス試行が正しくブロックされることが確認できます。
git clone(パッチコミット b6a14f0... を含むブランチ)を介して修正済みコードを取得しました。iframe を介した file:///etc/passwd リソースへのアクセスを 許可しなくなった ことを検証しました。url_fetcher バイパスによる SSRF)を理解する鍵となりました。教育目的で、個人用の隔離された環境(Kali Linux + Wazuh をローカルで実行)で実施された練習です。第三者システムへのアクセスは行われていません。