

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
はじめに
xxeとは XML External Entity の略で、XMLを処理するプログラムが外部エンティティを読み込む際に生じる脆弱性のことです。すべてのXMLパーサーがこの脆弱性を持つわけではありませんが、多くのパーサーで設定次第で悪用される可能性があります。初心者の方には「XMLの世界は難しそう」と感じるかもしれませんが、要点はとてもシンプルです。
この仕組みを理解する鍵は、外部リソースを参照する機能と、それをどう扱うかという設計の問題です。攻撃者はこの機能を利用して、ローカルのファイルを読み出す、サーバーへ不正なリクエストを送る、時には内部の情報を外部に漏らすといった影響を狙います。
どういう仕組みか
XMLにはエンティティと呼ばれる仕組みがあり、内部エンティティと外部エンティティの2種類があります。外部エンティティは外部のデータを参照するため、XML文書を受け取る側のプログラムがそのデータを読み込むことになります。もしその読み込み先が不正な場所だったり、 ローカルファイルを指していたりすると、意図せず重要な情報が漏れる危険があります。
このような挙動は、特にウェブアプリケーションのバックエンドやデータ連携の場面で問題になることが多いです。安全側に倒す設計を心掛け、外部エンティティを正しく扱わないようにすることが重要です。
よくある誤解と注意点
「XXEは昔の話」という認識は間違いです。新しい言語やパーサーでも、設定次第でXXEが有効になることがあります。ですから、全てのXML取扱い箇所で設定を見直すことが大切です。
対策と防御
対策の基本は以下の通りです。
| 説明 | |
|---|---|
| 外部エンティティの無効化 | パーサーの設定で外部エンティティの読み込みを禁止する |
| DOCTYPE/DTDの無効化 | DOCTYPE宣言の処理を止め、外部リソース参照を防ぐ |
| セキュアなパーサーの選択 | XXE対策が組み込まれているライブラリやパーサーを選ぶ |
| 最新パッチの適用 | OSやアプリケーションの脆弱性修正パッチを適用する |
現場では、入力データを信頼しすぎない方針と、アプリケーションの設計段階での対策が重要です。XMLを使う箇所が複数ある場合は、共通のセキュリティ方針を適用して整合性を保つと良いでしょう。
まとめ
XXEは正しく理解し、適切な設定と対策を講じることで多くの被害を防ぐことができます。外部エンティティの読み込みを無効化することが最も効果的な対策であり、パーサー選択とパッチ適用を組み合わせることが現実的な防御策です。
xxeの同意語
- XML 外部実体攻撃
- XML の外部実体参照を悪用して機密情報の漏えいを招く、ファイル読み出しなどを目的とした攻撃の総称。XXE の日本語表現として最も一般的です。
- XML External Entity Attack
- XXE の英語名称。XML の外部実体参照を悪用する攻撃を指す正式な表現です。
- 外部実体参照攻撃
- XML の外部実体参照を利用して不正な処理をさせる攻撃の総称。外部実体参照を悪用する形式のことを指します。
- 外部エンティティ攻撃
- 外部エンティティを悪用する攻撃の別称。外部実体攻撃と同義として使われることがあります。
- 外部エンティティ参照攻撃
- XML の外部エンティティ参照を利用する攻撃で、ファイル読み出しなどを狙うケースが多いです。
- XXE 脆弱性
- XML の外部実体参照を悪用されうる脆弱性のこと。対策としてはパーサの設定見直し・外部リソースの遮断などが挙げられます。
- XMLの外部実体参照脆弱性
- XML の外部実体参照を悪用されやすい脆弱性。XXE脆弱性と同義で使われます。
xxeの対義語・反対語
- XML内部エンティティ
- 外部エンティティを使わず、内部定義だけを参照するXMLのエンティティ運用。XXEの脆弱性の回避・対極に位置する概念として挙げられることが多い。
- 外部エンティティ無効化
- XMLの読み込み時に外部エンティティを一切参照しない設定・挙動。XXEを防ぐ基本的な対策の一つ。
- セキュアなXML処理
- 安全性を最優先に設計・実装されたXML処理全体の考え方。XXEを含む脆弱性を回避する方向性。
- XXE対策済み
- XXEの脆弱性を回避・緩和するように実装・設定された状態。対義語として提示されることがある。
- 外部リソース読み込み禁止
- XMLパーサが外部リソースを参照・読み込む機能をオフにした状態。
- 内部参照のみのXML
- XML内で定義された内部エンティティだけを参照する運用・設計。
- 安全なXMLパーサ
- 外部エンティティの悪用を防ぐ機能を備えたXMLパーサ。
- 防御的XML設計
- 外部エンティティの利用を最小化・排除し、セキュリティを前提としたXML設計方針。
- 外部エンティティ依存の排除
- 外部エンティティに依存しない設計思想・実装方針。
xxeの共起語
- XML
- Extensible Markup Language。データを階層的に表現するマークアップ言語。
- DTD
- Document Type Definition。XML文書の構造と要素・属性を定義する仕組み。
- 外部エンティティ
- XML文書内で外部リソースを参照するエンティティのこと。
- エンティティ参照
- XML内でエンティティを参照する記法のこと。
- DOCTYPE宣言
- XML文書のDOCTYPEを指定する宣言部分。
- XMLパーサ
- XMLを解析してデータ構造に変換するソフトウェアやライブラリ。
- 脆弱性
- セキュリティ上の弱点のこと。
- セキュリティ
- 情報を守るための防御・対策全般。
- 対策
- XXE脆弱性を防ぐための具体的な方法や設定。
- 防御
- 脆弱性を回避するための防御手段。
- 無効化
- DOCTYPEや外部エンティティ参照を無効化する設定・方針。
- サニタイズ
- 入力データを安全な状態に整える処理。
- 検証
- XMLを安全に扱うための妥当性チェックや制約の適用。
- SSRF
- Server-Side Request Forgery。サーバー側から不正な外部リソースへアクセスさせる攻撃経路の一つ。
- 情報漏洩
- 機密情報が不正に外部へ流出するリスク。
- ファイル読み取り
- 外部エンティティ経由でサーバー内のファイルを読み取られるリスク。
xxeの関連用語
- XML
- 可変長のタグ付きデータを記述してデータの構造を階層的に表現するマークアップ言語。データの交換や保存に広く使われます。
- DTD(Document Type Definition)
- XML文書の構造や要素・属性・エンティティのルールを定義する仕組み。文書の正当性を検証するために使われます。
- 内部エンティティ
- 文書内で宣言されるエンティティ。参照に置換される文字列や値を表します。
- 外部エンティティ
- 外部リソースを参照するエンティティ。ファイルやネット上のデータを読み込む可能性があります。
- エンティティ宣言
- の形でエンティティを定義するDTDの宣言。
- DOCTYPE宣言
- XML文書の先頭でDTDを適用するための特別な宣言。外部エンティティの参照にも影響します。
- 外部サブセット
- 外部で参照されるDTDの一部。ネットワーク経由で読み込まれる場合があります。
- 内部サブセット
- 文書内で直接定義されるDTDの一部。外部参照を含まない内部規則です。
- XXE(XML External Entity)脆弱性
- XMLの外部エンティティを悪用して情報漏洩・ファイル読み出し・内部サービスアクセスを引き起こす脆弱性。
- 外部エンティティ参照
- 外部リソースを参照するエンティティ参照。読み込み先がファイルやURLになることがあります。
- エンティティ展開
- XMLパーサがエンティティを文書内に展開して表示・処理する動作。外部エンティティでは外部データの取得が発生します。
- ビリオン・ラフス攻撃(Billion Laughs)
- エンティティの再帰展開で巨大な文字列を生成しサーバーを圧迫してサービスを停止させる有名なDoS攻撃。
- XMLボム
- ビリオン・ラフス攻撃と同様のエンティティ爆発による攻撃の別称。
- SSRF(Server-Side Request Forgery)
- サーバーが自ら外部資源へアクセスしてしまう脆弱性。XXEが原因となって発生するケースがあります。
- 情報漏洩
- 不正なエンティティ参照により機密情報が外部へ流出すること。
- DoS攻撃
- 大量のリソースを消費させてサービスを停止させる攻撃。XXEの展開により引き起こされることがあります。
- CWE-611
- XML External Entity の脆弱性を示す共通弱点分類。XXEに関連するセキュリティ問題を分類・識別する指標です。
- OWASP XXE Prevention
- OWASP が提唱するXXE対策のガイドライン。安全なパーサ設定や外部エンティティの禁止などを解説します。
- W3C XML Security Practices
- W3C が提供するXMLセキュリティの実践ガイド。XXEを含むXMLの安全な取り扱い方を解説します。
- XXE対策
- 外部エンティティの利用を避ける、DOCTYPEの読み込みを無効化する、外部エンティティを禁止する等の具体的な防御策。
- 安全なXML処理
- XMLを扱う際に安全性を最優先する設計・実装の考え方。パーサ設定の見直しや入力データ検証を含みます。
xxeのおすすめ参考サイト
- XXEとは【用語集詳細】 - SOMPO CYBER SECURITY
- XXE攻撃 基本編 | 技術者ブログ - 三井物産セキュアディレクション
- XXEとは【用語集詳細】 - SOMPO CYBER SECURITY
- XXE攻撃とは? - サイバーマトリックス
- XXEを初心者でも分かりやすく解説 | Webサイト・APIの弱点
- XXEとは - サイバーセキュリティ.com



















