SVG Security Analysis Toolkit to Detect Malicious Scripts Hidden in SVG Files
2025/09/29 CyberSecurityNews — SVG (Scalable Vector Graphics) を悪用する脅威アクターが、ステルス的なコード・インジェクション攻撃を仕掛けるケースが増えている。その一方でセキュリティ研究者たちは、SVG アセットに埋め込まれた難読化されたペイロードの検出において、数多くの課題に直面している。HackingLZ の SVG Security Analysis Toolkit は、包括的なソリューションを提供し、このような状況を改善するものだ。このツールキットは4つの Python ベースのツールで構成されており、アナリストを危険な実行環境にさらすことなく、隠されたスクリプトの検出/難読化された URL のデコード/保護メカニズムの検証を実現する。

静的/動的な難読化の解除
このツールキットの、1つ目と2つ目のコンポーネントである “extract.py” と”extract_dynamic.py” は連携して動作し、静的/動的な分析を通じて悪意のスクリプトを検出する。
“extract.py” は、コードを実行せずにパターン・ベースの分析を実行する、静的 SVG URL 抽出ツールである。
そこで用いられるのは、String.fromCharCode パターンおよび、データ URI から抽出された Base64 エンコード URL/parseInt と、XOR ループを介した文字演算スキームなどであり、それらにより、XOR 暗号化されたペイロードを自動的に検出してデコードする。その柔軟性を示す使用例を以下に示す。

“extract_dynamic.py” は、box-js を活用した動的 JavaScript 実行ツールである。サンドボックス内において、埋め込まれた JavaScript を安全に実行し、最終的な URL 構造をキャプチャする。主な機能は以下のとおりである。
- location.assign()、window.open()、AJAX 呼び出しを監視するための、高度なフックシステム。
- 完全な URL と部分的な URL を区別するための、最終 URL 優先順位付け。
- Windows 固有のスクリプト監視のための、ActiveX / WScript サポート。

保護検出
このツールキットに含まれる3つ目と4つ目のコンポーネントは、分析ワークフローを完了するための “cf_probe.py” と “encoder.py” である。
“cf_probe.py” は、HTTP およびメタリフレッシュ・リダイレクトをスキャンして Cloudflare のチャレンジを検出するプログラムである。
それにより、data-sitekey 属性を介した Turnstile の識別と、リンクされた JavaScript のスキャンによる reCAPTCHA/custom CAPTCHA システムの検出が行われ、CF-Ray や DDoS 防御メッセージなどの CF ヘッダーを報告する。
“encoder.py” は SVG テストケース・ジェネレーターである。セキュリティ・チームは、検出パイプラインを検証するために、現実的な難読化 SVG サンプルを生成できる。
- XOR + ES6 Proxy を含む、6種類の難読化パターンのサポート
- 16進数でエンコードされた関数コンストラクタと、データ URI スクリプト
HackingLZ は、最大限のカバレッジと安全性を実現するために、以下の分析シーケンスを推奨している。
- テストケースの生成:encoder.py –random-all -o test_cases/
- 静的分析:python3 extract.py -i test_cases/*.svg -v
- 動的分析:python3 extract_dynamic.py -i test_cases/ -o dynamic_results/
- 保護検証:python3 cf_probe.py -i malicious_urls.txt
この SVG セキュリティ分析ツールキットは、静的文字列のデコード/サンドボックス化されたスクリプト実行/保護検出/制御されたテストデータの生成を組み合わせるものだ。それにより、SVG ベースの巧妙なフィッシングやマルウェア攻撃に対して、防御側は先手を打てることになる。
SVG に悪意のスクリプトを埋め込むという、攻撃キャンペーンが数多く検出されています。この問題の原因は、SVG 内に埋め込まれた JavaScript やデータ URI を難読化して検出を逃れる手口と、静的解析だけでは把握し切れない動的な振る舞いにあります。特に、ログやブラウザ挙動を悪用する間接的なプロンプト注入や、XOR/プロキシなど多様な難読化パターンが組み合わさることで、従来のサニタイズや単純なシグネチャ検出が無力化されやすい状況にあります。こうした原因に対処するための、現実的な一歩が情報した感じがしますね。よろしければ、SVG で検索も、ご参照ください。
You must be logged in to post a comment.