xxeとは?初心者でも分かる基本と対策の完全ガイド共起語・同意語・対義語も併せて解説!

  • このエントリーをはてなブックマークに追加
xxeとは?初心者でも分かる基本と対策の完全ガイド共起語・同意語・対義語も併せて解説!
この記事を書いた人

高岡智則

年齢: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取扱い箇所で設定を見直すことが大切です。

対策と防御

対策の基本は以下の通りです。

<th>対策
説明
外部エンティティの無効化パーサーの設定で外部エンティティの読み込みを禁止する
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のおすすめ参考サイト


インターネット・コンピュータの人気記事

awstatsとは?初心者でもわかる使い方と基本解説共起語・同意語・対義語も併せて解説!
15245viws
bing・とは?初心者のための基本ガイド:検索エンジンの仕組みと使い方共起語・同意語・対義語も併せて解説!
2469viws
着信転送とは?初心者向けガイドで分かる使い方と設定のコツ共起語・同意語・対義語も併せて解説!
1103viws
差し込み印刷・とは?初心者でもすぐわかる使い方と仕組みガイド共起語・同意語・対義語も併せて解説!
1085viws
com端子・とは?初心者にも分かる基礎ガイド|シリアルポートの使い方と歴史を解説共起語・同意語・対義語も併せて解説!
972viws
充電アダプターとは何かを徹底解説|初心者でも分かる基本と選び方のコツ共起語・同意語・対義語も併せて解説!
929viws
7zファイル・とは?初心者でもわかる使い方と特徴を解説共起語・同意語・対義語も併せて解説!
889viws
全角文字とは?初心者向け解説|全角と半角の違いをやさしく学ぶ共起語・同意語・対義語も併せて解説!
871viws
pinロックとは?初心者が知っておくべき基本と使い方ガイド共起語・同意語・対義語も併せて解説!
819viws
リマインドメールとは?初心者にもわかる基本ガイドと使い方のコツ共起語・同意語・対義語も併せて解説!
818viws
none とは?初心者にもやさしく解説する意味と使い方ガイド共起語・同意語・対義語も併せて解説!
746viws
16進数カラーコード・とは?初心者でもつまずかない基礎と使い方ガイド共起語・同意語・対義語も併せて解説!
733viws
asp・とは?初心者向けに徹底解説する基本と使い方ガイド共起語・同意語・対義語も併せて解説!
636viws
xlsmとは?初心者でも分かるExcelのマクロ付きファイルの基本共起語・同意語・対義語も併せて解説!
631viws
ローカルポート・とは?初心者にも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
620viws
countifとは?初心者でもすぐ使える基本と応用ガイド共起語・同意語・対義語も併せて解説!
568viws
ワンタイムコード・とは?初心者でも分かる基本と使い方ガイド共起語・同意語・対義語も併せて解説!
556viws
csvダウンロードとは?初心者が今すぐ使える基本ガイド共起語・同意語・対義語も併せて解説!
529viws
sha256とは?初心者が知るべき暗号ハッシュの基礎と使い道共起語・同意語・対義語も併せて解説!
527viws
googleドキュメントとは?初心者が今日から使いこなす基本ガイド共起語・同意語・対義語も併せて解説!
492viws

新着記事

インターネット・コンピュータの関連記事