Este incidente describe múltiples vulnerabilidades de seguridad en el framework Pingora, específicamente relacionadas con HTTP/1.x request smuggling y cache poisoning. La causa raíz principal fue una interpretación no estándar o excesivamente laxa de las especificaciones del RFC HTTP/1.1 por parte de Pingora, diseñada para acomodar tráfico de 'Internet salvaje' y stacks HTTP legados. Esta flexibilidad, aunque útil para la CDN de Cloudflare, introdujo ambigüedades en el parsing de solicitudes que podían ser explotadas en despliegues de Pingora como proxy de entrada.

Las vulnerabilidades se manifestaron de tres formas principales: 1) Manejo incorrecto del encabezado 'Upgrade' sin la confirmación '101 Switching Protocols' del backend, permitiendo el pipelining de solicitudes y el bypass de controles de seguridad. 2) Fallos en el parsing de 'Transfer-Encoding' y 'Content-Length' en solicitudes HTTP/1.0, llevando a desincronización entre Pingora y el backend sobre los límites del cuerpo de la solicitud. Esto incluía la interpretación de cuerpos de solicitud como 'close-delimited', lo cual no está permitido para solicitudes. 3) Una implementación por defecto ingenua para la construcción de claves de caché que solo consideraba la ruta URI, permitiendo la colisión y el envenenamiento de caché entre diferentes hosts.

Las salvaguardas fallaron porque la lógica de parsing de Pingora, aunque robusta para el uso interno de Cloudflare (donde otros proxies upstream ya normalizan el tráfico o se aplican configuraciones específicas), no era lo suficientemente estricta por defecto para un uso general como proxy de entrada expuesto a Internet. La tolerancia a tráfico no conforme al RFC, sin las validaciones adecuadas, creó un vector de ataque. La CDN de Cloudflare no se vio afectada directamente debido a su arquitectura interna y a que Pingora no se usa como proxy de entrada en ese contexto, además de que los proxies de la CDN ya aplicaban normalizaciones y rechazos de tráfico ambiguo antes de llegar a los servicios Pingora internos.