главное в кибербезопасности Читать в канале
Уязвимости 19 сентября 2026 3 мин

Новый HTTP-метод QUERY обходит WAF и нарушает кэширование

QUERY — это GET с телом запроса

В июне 2026 года IETF опубликовала RFC 10008, определяющую новый HTTP-метод QUERY. Это первый новый стандартный HTTP-глагол с 2010 года, когда появился PATCH. Метод QUERY располагается между GET и POST. Его можно описать как "GET с телом запроса". Он считается безопасным и идемпотентным, то есть запрос обрабатывается без изменения состояния и может быть повторен без опасений. Сам запрос находится в теле, а не в URL, и явно кэшируется. Серверы сообщают о поддерживаемых форматах тела запроса с помощью нового заголовка ответа "Accept-Query".

Контроли безопасности не учитывают новый метод QUERY

Большинство систем защиты веб-инфраструктуры, таких как WAF (Web Application Firewall), списки разрешенных подключений API-шлюзов, промежуточное ПО для защиты от CSRF (Cross-Site Request Forgery), механизмы кэширования и обработка методов балансировщиками нагрузки, были разработаны до появления QUERY. Они ориентируются на известный набор глаголов: GET, POST, PUT, DELETE, PATCH. Внедрение шестого глагола, сочетающего свойства двух первых, требует от каждого элемента контроля принятия осознанного решения о его обработке. Большинство систем принимают случайное решение.

Поведение в реальных условиях оказалось непоследовательным. Исследователи обнаружили, что директива limit_except в nginx и класс View в Django отклоняют QUERY. curl, FastAPI, Caddy и Traefik пропускают его без изменений. Исследователь создал API, работающий только с методом QUERY, и обнаружил, что nginx перенаправляет запросы, но никогда их не кэширует. Это означает, что четыре идентичных запроса QUERY достигают бэкенда, тогда как четыре запроса POST достигают его один раз. Кроме того, директива limit_except в nginx молчаливо отклоняет QUERY. При использовании curl с методом QUERY и передачей вредоносного payload в теле запроса, если WAF ищет сигнатуры SQL-инъекций или XSS только в теле POST-запросов, он не обнаружит угрозу в QUERY. Это создает реальный пробел в безопасности.

Обновиться до 2025.11.7 или поставить плагин безопасности

Поскольку QUERY является кэшируемым и безопасным по спецификации, системы кэширования, которые не учитывают полное тело запроса, могут быть отравлены вредоносным payload. Промежуточное ПО для защиты от CSRF, жестко привязанное к классическим глаголам, изменяющим состояние, пропустит любой конечный объект QUERY, который несет непреднамеренные побочные эффекты. Метод QUERY пока не получил широкого распространения. Клиентские библиотеки, такие как Node.js, Python (httpx/requests), Go net/http и Rust reqwest, позволяют отправлять произвольные строки методов, поэтому QUERY работает между собственными сервисами. Браузерный fetch() и XHR могут отправлять его, но QUERY не входит в список безопасных для CORS, что вызывает предварительный запрос OPTIONS. Клиентские библиотеки .NET и HTTP.jl (Julia) уже имеют поддержку QUERY. Серверы и прокси, такие как Caddy и Traefik, пропускают его без изменений, Apache требует настройки. Фреймворки, такие как FastAPI, пропускают его через явные маршруты, а Django отклоняет. Spring (Java) намеренно ограничивает его поддержку. Ожидается, что поддержка CDN, таких как Cloudflare и Akamai, будет опережать поддержку фреймворков, но надежное кэширование QUERY в масштабе еще не реализовано.

Обновить правила WAF и проверить конфигурацию

Для защиты необходимо обновить правила WAF и другие контроли безопасности, добавив поддержку нового метода QUERY. Например, в правилах WAF следует использовать условие http.method in ("GET", "POST", "QUERY"). Хотя в логах пока не зафиксировано использование QUERY, это лишь вопрос времени. С точки зрения обнаружения вредоносного ПО, поведенческие методы обнаружения, такие как анализ маячковых соединений, временные интервалы, объем трафика и форма потока, не зависят от HTTP-метода. JA3/JA4 и TLS-отпечатки находятся ниже уровня HTTP-метода. Для HTTPS-трафика метод инкапсулирован внутри TLS-туннеля. Сетевой сенсор без перехвата трафика не видит различий между GET, POST и QUERY, поэтому QUERY ничего не меняет, если не используется дешифрование.

Опубликовано в канале 19 сентября, 12:06

Каждый материал сайта выходит в канале в тот же момент.

Источник: SANS ISC