ブログ

エンジニアのためのセキュリティ攻略:共有&学習シリーズ - XXEインジェクション

August 1, 2019

XML外部エンティティ(XXE)インジェクション攻撃は、登場から数年経ってもなお横行している古典的な脆弱性と比べると比較的新しい手法です。しかし、現在ハッカーコミュニティで非常に人気があり、成功事例が増えるにつれてその脅威はさらに拡大しています。

実際、OWASPは現在、XXEインジェクションをWebサイトが警戒し、積極的に防御すべきトップ10の脆弱性の1つとして挙げています。しかし、心配はいりません。XXEインジェクションは、他のサイバー攻撃で使われるエクスプロイトと比べて特別強力というわけではありません。単に比較的新しく、あまり理解されていないだけです。この脆弱性は防止可能であり、完全に阻止することができます。

本エピソードでは、以下の内容を学びます。

  • 攻撃者がXXEインジェクションを利用する仕組み
  • XXEインジェクションが危険な理由
  • この脆弱性を防ぐための技術

攻撃者はどのようにしてXXEインジェクションを引き起こすのか?

XXEインジェクションの脆弱性は、悪意のあるユーザーがXMLコードを送信できる場合に発生する可能性があります。攻撃者はこの機能を利用して、外部エンティティへの参照を作成します。この外部参照とコードは、デフォルト設定のまま、あるいは設定が不十分なXMLパーサーをすり抜けるように設計されています。

攻撃者は、XML標準がエンティティを何らかのストレージユニットとして定義しており、そのストレージが外部または内部に存在し得るという事実を悪用します。適切に使用すれば、XMLプロセッサがリモートリソースにアクセスできるようになります。しかし多くの場合、攻撃者はこの機能を悪用して、Webサイトの内部構造の調査、リモートリソースへのアクセスを試みる大規模なシステムプロセスを誘発することによるサービス拒否(DoS)攻撃の実行、さらにはローカルホストから攻撃者が制御するリモートホストへのデータダンプなどを行います。これは、XMLデータベースに含まれるパスワードや個人情報などの重要なデータを流出させるための優れた手法となっています。

攻撃に関与する実際のコードは非常に単純なものが多く、単にエンティティ機能を悪用するだけです。例えば、ハッカーがマスターパスワードファイルにアクセスする場合、以下のようなコードが使われる可能性があります。

<!ENTITY hackwithxxe SYSTEM file:///etc/password>

なぜXXEインジェクションは危険なのか?

XXEインジェクション攻撃が非常に危険であり、かつ蔓延しているのにはいくつかの理由があります。まず、現時点ではあまり理解されていない脆弱性であるという点です。そして、攻撃者がこれを悪用して得られる利益は甚大です。例えば、執拗な攻撃者は時間をかけて内部ネットワークの全パスをマッピングしたり、ポートスキャンを行ったりすることができます。これにはかなりの時間がかかるかもしれませんが、ターゲットネットワーク上のアクティブな防御機能によってハッカーの活動が検知される可能性はほとんどありません。なぜなら、彼らは信頼されたXMLパーサーによって処理されるサーバーに、単にXMLコードを送信しているだけだからです。

一度マッピングが完了すれば、攻撃者は同じXXEインジェクション技術を使用して必要なファイルをすべて取得できます。直接情報を盗み出すこともあれば、有効なユーザー資格情報を侵害して二次攻撃に利用することもあります。最後に、単に混乱を引き起こして悪意を働きたい攻撃者は、サービス拒否攻撃を誘発し、システムを停滞させるように設計された遠隔リソースへのアクセスをアプリケーションに強制するようなことも行います。

XXEインジェクションの脆弱性を排除する

XXEインジェクション攻撃の急増により、多くのXMLパーサーでは、デフォルトで外部エンティティ(DTDと呼ばれることもあります)を完全に無効にするようになっています。そのようなパーサーを使用する場合、重要なのはその機能を有効にしないことです。

しかし、DTDを許可するパーサーであっても、その機能を無効にすることは可能です。一般的には、以下のようなステートメントを使用して完全にブロックする必要がありますが、必要な正確なコードについては、使用しているフレームワークのドキュメントを確認してください。

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

セキュリティ原則に従い、すべてのユーザー入力はアプリケーション全体で適用されるフィルターを使用してサニタイズおよび検証されるべきです。GETおよびPOSTパラメータ、HTTPヘッダー、Cookieを含めることを忘れないでください。また、パーサーに処理させたい特定のDTDやコマンドのホワイトリストを作成し、それ以外をすべて拒否するように設定することも可能です。

ホワイトリストやフィルタリングは有効ですが、XXEインジェクション攻撃が増加している現状では、その機能が不要であればDTDサポートを完全に無効にすることを推奨します。

XXEインジェクションに関する詳細情報

詳細については、OWASPによるXXEインジェクション攻撃の解説をご覧ください。また、習得した防御知識は、サイバーセキュリティチームを最強の戦士へと育成するSecure Code Warriorプラットフォームの無料デモで試すことができます。この脆弱性やその他の脅威への対策について詳しくは、Secure Code Warriorブログをご覧ください。

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。