私はXXEインジェクションについて読んでいますが、これまでに見たすべての例では、(以下のように)xml外部エンティティーを自発的にロードするWebサーバーが関与しています。
<?php
libxml_disable_entity_loader (false);
$xmlfile = file_get_contents('php://input');
$dom = new DOMDocument();
$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);
$creds = simplexml_import_dom($dom);
$user = $creds->user;
$pass = $creds->pass;
echo "You have logged in as user $user";?>
XXEインジェクション攻撃のリスクとそれらの攻撃がa)機密情報を開示し、かつ/またはb)リモートでコードを実行(RCE)する可能性を考えると、Webサーバーの開発者/管理者が決定する理由そもそも外部xmlエンティティの読み込みを有効にしますか?
これまでのところ、外部xmlエンティティをロードできるようにする動機については説明していません。それは単に怠惰なコーディングですか?無知?便利?
webサーバーの開発者/管理者が、そもそも外部xmlエンティティの読み込みを有効にすることにしたのはなぜですか
通常、これは明示的に有効にすることではなく、問題を認識せず、安全でないデフォルト設定でライブラリを使用することです。多くのライブラリでは、デフォルトで外部エンティティの読み込みが有効になっているか、有効になっています。 OWASP XML External Entity Prevention Cheat Sheet から引用するには:
... libxml2バージョン2.9以降、XXEはデフォルトで無効になっています
つまり、それが有効になる前に
... libxerces-c ... XercesDOMParserを使用すると、XXEを防止できます... SAXParserを使用すると、XXEを防止できます... SAX2XMLReaderを使用すると、XXEを防止できます...
デフォルトで有効になっていることを示唆しています
...ほとんどのJava XMLパーサーのデフォルト設定では、XXEが有効になっています。
このドキュメントには、XXEがデフォルトで有効になっているライブラリが他にもあります。