web-dev-qa-db-ja.com

PHP loadXMLはXXE攻撃(およびその他の攻撃)に対して脆弱ですか?脆弱な関数のリストはありますか?

PHP loadXML関数(および他のXML関数)を使用するコード)があります。

  1. LoadXML関数はXXE攻撃に対して脆弱ですか?つまり、XMLに外部エンティティが含まれている場合、それらは解釈されますか?

  2. この機能は、他のXMLベースの攻撃に対して脆弱ですか?たとえば、Billion Laughs DoS攻撃?

  3. XXEや他のXML関連の攻撃に対して脆弱な関数のリストを参照していただけますか?

設定を変更することで、PHP=でXXE攻撃を簡単にブロックできることを知っています。しかし、私が提起した質問に対する回答を得ることができてうれしいです。

12
Gari BN

LoadXML関数はXXE攻撃に対して脆弱ですか?つまり、XMLに外部エンティティが含まれている場合、それらは解釈されますか?

デフォルトではありません。

LIBXML_NOENTが設定されていないと、外部エンティティは解析されません。 libxml_disable_entity_loaderがtrueに設定されている場合、LIBXML_NOENTでもXXEは許可されません。

この機能は、他のXMLベースの攻撃に対して脆弱ですか?たとえば、Billion Laughs DoS攻撃?

いいえ、デフォルト設定では10億の笑い声が聞こえます。

DOMDocument::loadXML(): Detected an entity reference loop in Entity

キャッチされないのは 2次ブローアップ です。エンティティは実際に置換する必要があることに注意してください。これは、 どちらかといえば不十分な名前LIBXML_NOENTを介して、または単にノードにアクセスすることによって行われます(例textContent経由)。

14
tim