¿Cómo evitar las vulnerabilidades de XML en Python?

0

Estoy escribiendo un conjunto de aplicaciones de Python 3 (incluyendo primero una utilidad de línea de comandos, luego un proxy de HTTP(S ) que se ocupan de XML.

Hoy he descubierto que hay varias vulnerabilidades relacionadas con XML .

Mi pregunta principal: ¿vale la pena cambiar por completo a defusedxml ? No creo que sea necesario para ataques que no sean DoS (como el acceso a archivos locales a través de las entidades del SISTEMA). Entonces defusedxml es necesario solo contra ataques DoS, ¿verdad?

Si fuera solo para la utilidad de línea de comandos, para ataques como billones de risas, estaría habilitado para ejecutar mi programa en ulimit .

Pero a pesar de que ahora estoy enfocado en la utilidad de línea de comandos, quiero que mi trabajo actual se use en el proxy multiusuario HTTP(S) , que también voy a escribir.

¿Es cierto que para hacer el proxy, necesito usar defusedxml para protegerme contra miles de risas y ataques similares? ¿Entonces (después de usar defusedxml ) será suficiente para limitar el tamaño de los archivos XML descargados? ¿O necesito algunas (¿cuáles?) Contramedidas más avanzadas? ¿O algún otro tipo de contramedidas?

    
pregunta porton 17.06.2018 - 18:09
fuente

1 respuesta

3
  

¿Vale la pena cambiar por completo a defusedxml?

Si vale la pena, no solo depende de la amenaza que se mitiga, sino también de cuánto trabajo adicional le corresponde a usted usar defusedxml en lugar de cualquier otra biblioteca. Si bien puedo darte consejos de seguridad, solo tú puedes responder esa pregunta.

Considero el procesamiento XXE (Entidad XML externa (XXE)) ) un problema más grave que mil millones de lacas. XXE puede exponer archivos en el sistema de archivos local definiendo entidades que leen archivos:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <!DOCTYPE foo [  
   <!ELEMENT foo ANY >
   <!ENTITY xxe SYSTEM "file:///etc/passwd" >]><foo>&xxe;</foo>

Para muchas bibliotecas XML, es posible deshabilitar el manejo de DOCTYPE o la expansión de la entidad, y eso haría que el manejo de XML no confiable sea seguro. La ventaja de defusedxml es que viene con la configuración segura de forma predeterminada, y no tienes que preocuparte por eso.

No base su seguridad en la validación XML o el saneamiento antes de analizarla. Crear un filtro de expresiones regulares que reconozca las entidades XML que el atacante no puede ignorar es casi imposible.

  

¿Necesito usar defusedxml para protegerme contra miles de risas y ataques similares?

La mayoría de las bibliotecas se pueden configurar para proteger contra ataques XML. No necesita para usar defusedxml.

  

Entonces, ¿(después de usar defusedxml) será suficiente para limitar el tamaño de los archivos XML descargados?

El uso de defusedxml o la desactivación de las características de expansión de DOCTYPE y entidad hará que el XML se comporte más como usted esperaría. Limitar el tamaño es una buena idea, pero no es estrictamente necesario. El poder de las millones de risas es que ocupa muchos recursos del servidor con un poco de los recursos del cliente. Un XML normal tomará aproximadamente tantos recursos del servidor como recursos del cliente.

  

¿O necesito algunas (¿cuáles?) contramedidas más avanzadas? ¿O algún otro tipo de contramedidas?

No para vulnerabilidades relacionadas con XML, no.

    
respondido por el Sjoerd 17.06.2018 - 19:38
fuente

Lea otras preguntas en las etiquetas