¿PHP loadXML es vulnerable al ataque XXE (y a otros ataques)? ¿Hay una lista de funciones vulnerables?

12

Tengo un código PHP que utiliza la función loadXML (así como otras funciones XML).

  1. ¿La función loadXML es vulnerable al ataque XXE? A saber, si el XML contiene entidades externas, ¿se interpretarán?

  2. ¿Esta función es vulnerable a otros ataques basados en XML? Por ejemplo, el ataque DoS de Billion Laughs?

  3. ¿Puede referirme a una lista de funciones que son vulnerables a XXE y a otros ataques relacionados con XML?

Sé que es posible bloquear fácilmente los ataques XXE en PHP cambiando la configuración. Sin embargo, me complacerá recibir respuestas a las preguntas que formulé.

    
pregunta Gari BN 15.08.2016 - 11:05
fuente

1 respuesta

14
  

¿La función loadXML es vulnerable al ataque XXE? A saber, si el XML contiene entidades externas, ¿serán interpretadas?

Por defecto, no.

Las entidades externas no se analizan sin que se establezca LIBXML_NOENT . Si libxml_disable_entity_loader se establece en verdadero, ni siquiera LIBXML_NOENT permitirá XXE.

  

¿Esta función es vulnerable a otros ataques basados en XML? Por ejemplo, ¿el ataque DoS de Billion Laughs?

No, se capturarán millones de risas con la configuración predeterminada:

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

Lo que no se detectará es explosión cuadrática . Tenga en cuenta que las entidades deben sustituirse realmente, lo que se realiza a través de bastante mal llamado LIBXML_NOENT o simplemente accediendo al nodo (por ejemplo, a través de textContent ).

    
respondido por el tim 15.08.2016 - 11:39
fuente

Lea otras preguntas en las etiquetas