AIハッキング - ハッカーは人工知能をサイバー攻撃にどう利用するか

今すぐ読む
サイト翻訳には人工知能を利用しており、正確性を追求しておりますが、必ずしも100%正確とは限りません。ご了承ください。

SVG Unveiled:XXEの脆弱性を理解し、コードベースを守る

By ルアン・ファム、アソシエイト・ペネトレーション・テスター
この記事を共有する

画像ファイルは一般的に安全なファイルと考えられており、潜在的なセキュリティ問題を意識せずに扱われることがよくあります。これらの画像ファイル、特にSVGファイルは、クロスサイトスクリプティング(XSS)やXML外部エンティティ(XXE)インジェクションのような危険な攻撃を仕掛けるための一般的な攻撃ベクトルです。XSS攻撃とは対照的に、XXEインジェクション攻撃はクライアント側には影響しませんが、サーバー側に大きな影響を与える可能性があり、いくつかの深刻な影響につながります。 このブログ記事では、特にScalable Vector Graphics(SVG)攻撃ベクトルを介したXXE攻撃の本質を探り、実例について説明し、OPSWAT 製品による緩和策を提供します。 

背景情報

脆弱性を掘り下げる前に、まずXML、SVGファイルフォーマット、そしてXXEインジェクションテクニックの背後にある根本原因を検証する。 

XMLファイル形式

XML(eXtensible Markup Language)は、構造化されたデータを保存・交換するための、プラットフォームに依存しないファイルフォーマットである。XMLは階層構造をサポートしており、複雑なデータ関係を表現するのに理想的です。XML形式のデータは、HTMLと同じようにタグ、属性、コンテンツに整理されます。しかし、XMLは高度にカスタマイズ可能で拡張性があるため、ユーザーは自分の要求に合わせてタグや属性を定義することができる。下図は、IT 部門のデータを XML 形式で示したものである。 

IT 部門構造で従業員の詳細を表示する XML コード・スニペット

XMLエンティティ

XMLでは、エンティティはデータのプレースホルダで、テキストや文書全体を現在の文書に埋め込むことができます。構文上、XMLのエンティティはアンパサンド(&)とセミコロン(;)で囲まれる。以下の例では、2つの実体がDocument Type Definitionで定義され、XMLファイルの内容を参照している。2つのエンティティの違いは、内部エンティティは現在のドキュメント内で定義され参照されるのに対し、外部エンティティのコンテンツは外部ドキュメントのものであることである。エンティティの解析と解決が終わると、エンティティは対応するデータに置き換えられる。 

挨拶を含む内部エンティティおよび外部エンティティを持つXMLドキュメントのコード例
エンティティとコンテンツの構造と使い方を強調した、簡略化されたXMLコード例

SVGファイル形式

SVG (Scalable Vector Graphics)は、ウェブ開発、グラフィックデザイン、データビジュアライゼーションに広く使用されている汎用性の高いファイルフォーマットです。JPEGやPNGのような伝統的な画像フォーマットとは異なり、SVGはXMLフォーマットを使用して2次元ベクトルグラフィックスを記述します。具体的には、SVG 画像は線、曲線、多角形のような幾何学的形状で構成され、個々のピクセルではなく数式で定義されます。その結果、SVG画像は品質を落とすことなく無限に拡大縮小することができ、レスポンシブ・ウェブデザインや高解像度ディスプレイに理想的なものとなっている。SVG形式はXMLの性質を持っているため、XML関連の悪用のための潜在的な攻撃ベクトルも提供する。 

テキストコンテンツを持つ基本的なSVGファイル構造を示すサンプル画像

ゼクシオの射出技術と影響

XXEインジェクションのテクニックは、外部エンティティ解決メカニズムを悪用する。具体的には、パーサーが外部エンティティに出会うと、リソースファイルのタイプに基づいて対応するコンテンツをフェッチする。  

リソースファイルがローカルの場合、パーサはファイルのコンテンツを取得し、エンティティを対応するデータに置き換えます。これにより攻撃者は、サーバー設定や認証情報などの機密データを表示することが可能になる。脆弱性の悪用を成功させるには、攻撃者は機密ファイルのコンテンツ、例えば/etc./passwordを参照する外部エンティティを宣言する。 

しかし、リソースがリモートまたは内部サービスの場合、パーサーは定義されたURLをリクエストしてデータを取得しようとします。これを悪用してサーバーサイドリクエストフォージェリ(SSRF)を実行する可能性があります。この場合、攻撃者はローカルファイルを参照する代わりに、ペイロードを脆弱なサービスのURLに変更し、サーバーに代わってリクエストします。 

SVGファイルの誤操作によるXXE攻撃:ケーススタディ 

実際の事例であるバージョン0.9.3までのSVGLIBライブラリのXXEを調査する。この脆弱性は2020年に発見され、CVE-2020-10799が割り当てられている。まずライブラリの流れを調べ、脆弱性のあるコード・スニペットを解析し、最後にSVGからPNGへの変換サービスを介した悪用を証明する。対象は、脆弱なSVGLIBバージョンを変換に使用する自己実装のウェブ・アプリケーションである。 

svglib パッケージ

svglibは純粋なPythonライブラリで、Report Labのオープンソースツールキットを使用してSVGフォーマットをPNG、JPG、PDFなどの他のフォーマットに変換するように設計されています。SVGファイルはXML形式を使用するため、XMLの解析と処理もライブラリのメインフローに関連する部分です。ライブラリの主な流れは以下の3つです: 

SVGファイルの解析から他のフォーマットへの変換までの手順を示すプロセスフロー図

開発 

この脆弱性はSVGファイルの解析処理にあり、設定を誤るとサーバー上の機密データが漏洩し、SSRFの脆弱性を引き起こす可能性がある。svglibパッケージのソースコードをさらに調べると、XXEの脆弱性は、SVGファイルをロードする際にXMLフォーマットをパースして処理するためのデフォルトの設定を使用することに起因している。このパッケージはlxmlパッケージを使用しており、XMLParserクラスのresolve_ entities属性のデフォルト値はTrue です。  

Python関数の変更点を示すコードの差分(エンティティの解像度オプションでSVGファイルをロードする場合
セキュリティの観点からSVGファイルを使用したXXE攻撃プロセスのフロー図

修復

この問題の根本的な原因は、svglib ライブラリと lxml 依存関係の一部で不正に実装されている、安全でない XML 解析にあります。その結果、このライブラリの脆弱なバージョンを使用すると、導入環境やアプリケーションの機能によっては、機密情報の漏洩やサーバサイドリクエストフォージェリ、あるいはリモートでコードが実行される可能性があります。サードパーティライブラリから導入される脆弱性は、その依存関係が複雑で透過的でない可能性があるため、大規模アプリ ケーションのセキュリティにとって深刻な問題です。  

MetaDefender Software Supply Chain

OPSWAT MetaDefender Software Supply Chainは、複数のテクノロジーを組み合わせることで、可視性を拡大し、サプライチェーンのリスクに対する強固な防御を提供します。OPSWAT Software Bill of Materials (SBOM) 、オープンソースのサードパーティソフトウェアパッケージを可視化し、コンテナイメージの各レイヤーの下に存在するソフトウェアの依存関係、脆弱性、その他の潜在的なリスクを特定するのに役立ちます。30以上のアンチウイルスエンジンを統合したMultiscanning テクノロジーのマルウェア検出率は99.99%以上に達します。さらに、Proactive DLP (Data Loss Prevention)テクノロジーは、ソースコードに残されたパスワード、シークレット、トークン、API キー、その他の機密情報などのクレデンシャルを識別します。ゼロ・トラストの脅威検出・防止テクノロジーにより、ソフトウェア開発ライフサイクル(SDLC)はマルウェアや脆弱性から保護され、アプリケーション・セキュリティとコンプライアンスの遵守が強化されます。  

OPSWAT MetaDefender Supply Chain 、脆弱性と脅威のリポジトリスキャン結果を表示します。
OPSWAT MetaDefender Software Supply Chain セキュリティレポート(requirements.txt ファイル)。

MDSSC は svglib で見つかった CVE を検出する。また、SBOMレポートでCVEの重大度レベルをフラグし、脆弱なソフトウェアのバージョンを特定します。

MetaDefender Core -Deep CDR

エクスプロイトを可能にするもう一つの理由は、アプリケーションが悪意のあるペイロードが注入されたSVGファイルを処理することです。その結果、もし画像ファイルが変換サービスに投入される前にサニタイズされれば、ペイロードは除去され、攻撃を防ぐことができます。MetaDefender Core の Deep Content Disarm and Reconstruction (CDR) テクノロジーは、ファイルをサニタイズおよび再構築することにより、既知および未知のファイルを媒介とする脅威から保護します。160 以上の一般的なファイル タイプと数百のファイル再構築オプションをサポートするOPSWATのDeep CDR は、埋め込まれた潜在的な脅威を中和し、サニタイズされたファイルが安全なコンテンツで完全なユーザビリティを維持することを保証します。 

DOCTYPE要素でXXEの脆弱性を概説したSVG形式の編集可能なXMLコード
悪意のあるSVGファイル
XXE脆弱性のないSVG形式のXMLコードのクリーンバージョン
MetaDefender Core - でサニタイズされた後の SVG ファイル。Deep CDR 
脆弱性評価後、許可されサニタイズされたとマークされたSVGファイルを示すセキュリティ・レポート
MetaDefender Core -Deep CDR サニタイズ結果

著者略歴

ルアン・ファムはOPSWAT の重要インフラサイバーセキュリティ大学院フェローシッププログラムに参加し、現在はOPSWAT のアソシエートペネトレーションテスターである。彼はOPSWAT の製品を潜在的脅威から守り、知識を共有することに情熱を注いでいる。 

ルアン・ファム
アソシエイト・ペネトレーション・テスター

OPSWATで最新情報をお届けします!

今すぐご登録ください、 ストーリー、イベント情報などをお届けします。