XML外部実体攻撃 【XXE攻撃】 XML External Entity attack
XMLやHTMLには「実体」(entity:エンティティ)の概念があり、例えばHTML文書中で「©」という表記を行うと、その部分が「©」という記号に置き換えられて表示される。この置き換える内容を実体と呼び、HTMLでは規格で定められた文字や記号などしか呼び出せないが、XMLでは文書中で任意に定義することができるようになっている。
XMLでは、<!DOCTYPE> 定義中で <!ENTITY> 要素を記述することで実体を定義することができる。置き換える文字列をその場で定義する「内部実体」(internal entity)のほかに、指定のURLの内容を読み込んで置き換える「外部実体」(external entity)という仕組みが用意されている。
XML外部実体攻撃では外部実体の仕組みを悪用し、外部から不正な外部実体の定義文を送り込む。XMLのパース処理を行っているサーバなどのローカルファイルの内容を実体として取り込ませ、攻撃者へ送るよう仕向ける。これにより、通常は読み取ることができないはずの場所にあるデータを抜き取ることができる。
(2024.8.1更新)