SVG Security Analysis Toolkit が登場:隠された悪意のスクリプトを安全に検出

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 ベースの巧妙なフィッシングやマルウェア攻撃に対して、防御側は先手を打てることになる。