Vulnerabilidad crítica en Mitmproxy, un servicio de proxy HTTPS de código abierto

El servicio de proxy HTTPS interactivo de código abierto Mitmproxy anunció la corrección de una peligrosa vulnerabilidad que habría permitido a los actores de amenazas desplegar ataques de contrabando de solicitudes HTTP contra servidores backend.

Estas vulnerabilidades explotan las incoherencias entre la forma en que los servidores intermediarios y backend procesan las solicitudes con el fin de evadir los controles de seguridad, obtener acceso no autorizado a datos confidenciales y comprometer a otros usuarios de aplicaciones.

El investigador Zhang Zeyu, a cargo del reporte, mencionó que los actores de amenazas podían contrabandear solicitudes/respuestas a través de Mitmproxy como parte del cuerpo del mensaje HTTP de otra solicitud/respuesta. Este es un vector de ataque obvio, aunque posiblemente por esa razón es raro actualmente, por lo que el ataque puede resultar altamente exitoso.

En el caso de Mitmproxy, un problema con el análisis de los espacios en blanco en los nombres de los encabezados resultó en una interpretación errónea de los encabezados HTTP entre Mitmproxy y un servidor descendente: “Eliminar este tipo de vulnerabilidad es muy complicado, ya que se necesitan diferentes implementaciones HTTP para acordar una interpretación común de los mensajes HTTP” menciona el equipo de mantenimiento de Mitmproxy.

Es posible corregir la falla haciendo que el proxy rechace mensajes potencialmente malformados, pero eso tendría el inconveniente de imponer problemas de compatibilidad con los clientes en escenarios reales. Los mantenedores agregan que este no es un desbordamiento de búfer y no existe una corrección definitiva, por lo que hacen falta más análisis al respecto.

El error solo funciona contra los servicios HTTP/1 detrás de Mitmproxy, que actualmente representa una cantidad muy pequeña de servidores web. HTTP/2, que es el protocolo más utilizado actualmente, no se basa en el uso de encabezados Content-Length y Transfer-Encoding para determinar dónde termina el cuerpo de una solicitud.

En su lugar, se incluye un campo de longitud integrado en cada marco de datos, y cuando los proxies se comunican con los backends mediante HTTP/2, hay poca ambigüedad en la longitud de cada mensaje. Por lo tanto, este error de contrabando de solicitudes en particular sería ineficaz contra los servicios HTTP/2.

Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).