← Все новости

Cloudflare устранила три уязвимости в фреймворке Pingora, включая две критические

Cloudflare устранила три уязвимости в фреймворке Pingora, включая две критические

Все права принадлежат AInDev.ru

• Категория: Безопасность • Автор: Алексей Воронов • Проверил: Екатерина Морозова • 10.03.2026 21:01

Компания Cloudflare сообщила об устранении трёх серьёзных уязвимостей во фреймворке Pingora, двум из которых присвоен критический уровень опасности (9.3 из 10). Фреймворк Pingora написан на языке Rust и предназначен для создания защищённых высокопроизводительных сетевых сервисов. Прокси, построенный с использованием Pingora, используется в сети доставки контента Cloudflare и обрабатывает более 40 миллионов запросов в секунду.

Две наиболее опасные уязвимости позволяют проводить атаки класса "HTTP Request Smuggling", которые могут обходить системы ограничения доступа и вклиниваться в содержимое запросов других пользователей, обрабатываемых в том же потоке между фронтэндом и бэкендом. Например, это может использоваться для подстановки вредоносного JavaScript-кода в сеанс другого пользователя.

Проблемы были выявлены участником программы Bug Bounty, которая предусматривает выплату вознаграждения за обнаружение уязвимостей. В схеме с обращением к бэкенду через обратный прокси запросы клиентов принимает дополнительный узел, который устанавливает длительно действующее TCP-соединение с бэкендом. Через это общее соединение обычно передаются запросы разных пользователей.

Атаки класса HTTP Request Smuggling возникают из-за разной трактовки HTTP-заголовков и спецификаций протокола HTTP на фронтэндах и бэкендах. Например, когда фронтэнд использует заголовок "Content-Length" для определения размера запроса, а бэкенд — "Transfer-Encoding: chunked".

Первая уязвимость CVE-2026-2835 присутствует в коде разбора запросов HTTP/1.0 и вызвана некорректной обработкой заголовка "Transfer-Encoding" с несколькими значениями, а также использованием закрытия соединения как признака конца тела запроса (close-delimited). Pingora проверял только вариант "Transfer-Encoding: chunked" и игнорировал данный заголовок, если в нём указывалось несколько значений. В этой ситуации Pingora не учитывал размер в заголовке "Content-Length", а считал телом запроса все данные, полученные до закрытия соединения.

Через указание нескольких значений в заголовке "Transfer-Encoding" атакующий мог создать условия, при которых на бэкенд перенаправлялся запрос, фактический размер которого не соответствовал размеру chunked-цепочки, вычисленному на основе заголовка "Transfer-Encoding". Pingora перенаправлял все полученные данные как один запрос, а бэкенд, например, Node.js, вычислял запрос на основе "Transfer-Encoding: chunked" и оставшийся хвост обрабатывал как начало другого запроса.

Вторая уязвимость CVE-2026-2833 вызвана некорректной обработкой HTTP-заголовка "Upgrade" в запросах HTTP/1.1. При наличии в запросе заголовка "Upgrade" прокси сразу пробрасывал к бэкенду и остальные данные запроса, следующие за заголовком "Upgrade", не дожидаясь от бэкенда ответа с кодом 101 (Switching Protocols). Из-за этого синхронизация потока между прокси и бэкендом нарушалась, и бэкенд воспринимал отправленные после заголовка "Upgrade" данные как отдельный запрос.

Третья уязвимость CVE-2026-2836 (степень опасности 8.4 из 10) приводит к отравлению кэша (cache poisoning) из-за генерации ключа размещения данных в кэше (CacheKey) только на основе пути из URI, игнорируя содержимое заголовка "Host". Это приводит к формированию одинаковых ключей кэширования для одинаковых HTTP-путей к разным хостам. Уязвимость может использоваться для подмены содержимого кэша при использовании режима кэширования для нескольких хостов.

Проблемы проявляются при использовании Pingora в качестве обратного прокси (ingress proxy), транслирующего запросы пользователей к бэкендам с использованием протоколов HTTP/1.0 или HTTP/1.1. Конфигурация Pingora, применяемая в сети доставки контента Cloudflare, не позволяет эксплуатировать уязвимости, так как она блокирует запросы с некорректными значениями Content-Length, перенаправляет только одно значение заголовка "Transfer-Encoding: chunked" и подставляет в запросы с заголовком "Upgrade:" дополнительный заголовок "Connection: close".

Все уязвимости были устранены в выпуске Pingora 0.8.0.

Теги: #кибербезопасность, #Cloudflare, #уязвимости, #Rust, #bug bounty, #Pingora, #HTTP Request Smuggling