web-dev-qa-db-fra.com

Est PHP LoadxML vulnérable à l'attaque XXE (et à d'autres attaques)? Existe-t-il une liste de fonctions vulnérables?

J'ai PHP code qui utilise la fonction LoadXML (ainsi que d'autres fonctions XML).

  1. La fonction LoadXML est-elle vulnérable à l'attaque XXE? À savoir, si le XML contient des entités externes, sera-t-elle interprétée?

  2. Cette fonction est-elle vulnérable aux autres attaques basées sur XML? E.G., le milliard rit DOS attaque?

  3. Pouvez-vous me référer à une liste de fonctions vulnérables à XXE et à d'autres attaques liées à XML?

Je sais qu'il est possible de bloquer facilement les attaques XXE dans PHP en modifiant les paramètres. Pourtant, je serai heureux d'obtenir des réponses aux questions que j'ai soulevées.

12
Gari BN

La fonction LoadXML est-elle vulnérable à l'attaque XXE? À savoir, si le XML contient des entités externes, sera-t-elle interprétée?

Par défaut, non.

Les entités externes ne sont pas analysées sans LIBXML_NOENT être défini. Si libxml_disable_entity_loader est défini sur vrai, pas même LIBXML_NOENT permettra à XXe.

Cette fonction est-elle vulnérable aux autres attaques basées sur XML? E.G., le milliard rit DOS attaque?

Non, milliards de rires seront pris avec les paramètres par défaut:

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

Ce qui ne sera pas attrapé, c'est Blowup quadratique . Notez que les entités doivent réellement être substituées, ce qui est soit fait via assez mal nomméLIBXML_NOENT ou en accédant simplement au nœud (par exemple via textContent).

14
tim