CVE-2026-73256 в Debian: HTTP-смуглинг в Mongoose

CVE: CVE-2026-73256
Продукт: Debian
Дата публикации: 20.08.2026
Критичность: CRITICAL
CVSS: 9.1 (3.1)
EPSS: 0,40%; процентиль 33,16%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


Уязвимость CVE-2026-73256 (CVSS 9.1) затрагивает библиотеку Mongoose в Debian. Ошибка в проверке версии HTTP-протокола позволяет удаленным атакующим выполнять HTTP-смуглинг через прокси HTTP/1.0, что приводит к несанкционированному доступу или изменению состояния системы. Исправление доступно в версиях 7.22+ds-1 для веток forky и sid.

Основные характеристики​


Уязвимость классифицируется как критическая (CVSS 3.1: 9.1) и относится к категории CWE-444 (HTTP Request Smuggling). Она возникает из-за логической ошибки в функции http_cb() файла src/http.c библиотеки Mongoose. Ошибка проявляется только в конфигурациях, где Mongoose работает за обратным прокси HTTP/1.0. Атакующий может отправить запрос с заголовком Transfer-Encoding: chunked и конфликтующим фреймингом. Из-за некорректной проверки длины строки протокола переменная is_http_1_0 никогда не устанавливается в true, даже если протокол HTTP/1.0. В результате Mongoose обрабатывает кодировку chunked, которую прокси HTTP/1.0 игнорирует, что приводит к рассинхронизации интерпретации запросов между прокси и бэкендом.

Какие продукты и версии затронуты​


В Debian уязвимость затрагивает исходный пакет mongoose. Затронуты следующие релизы:

  • Debian forky: уязвимы версии до 7.22+ds-1. Исправленная версия 7.22+ds-1 доступна в репозитории. В текущем репозитории forky доступна версия 7.23+ds-1.
  • Debian sid (unstable): уязвимы версии до 7.22+ds-1. Исправленная версия 7.22+ds-1 доступна. В репозитории sid доступна версия 7.23+ds-1.

Данные подтверждены Debian Security Tracker. Другие версии Debian (stable, testing) в предоставленных данных не указаны, однако рекомендуется проверить наличие пакета mongoose в используемой системе.

Причина уязвимости​


Причиной уязвимости является ошибка в логике определения версии HTTP-протокола в функции http_cb() (src/http.c). Функция проверяет длину строки протокола (hm.proto.len) на условие «больше 8», что является невозможным условием, поскольку функция mg_http_parse() требует ровно 8-байтовую строку протокола (например, "HTTP/1.0\r\n"). Из-за этой ошибки флаг is_http_1_0 никогда не устанавливается в true. В результате библиотека Mongoose не распознает запросы HTTP/1.0 как таковые и продолжает обрабатывать их с учетом возможностей HTTP/1.1, включая поддержку Transfer-Encoding: chunked. Это создает расхождение в интерпретации тела запроса между прокси HTTP/1.0 (который игнорирует chunked) и Mongoose (который его обрабатывает).

Как работает атака​


Атака использует механизм HTTP Request Smuggling. Атакующий отправляет HTTP-запрос через прокси HTTP/1.0. Запрос содержит заголовок Transfer-Encoding: chunked и конфликтующие данные фрейминга (например, Content-Length, указывающий на конец запроса для прокси, но не для Mongoose).

  1. Прокси HTTP/1.0, не поддерживающий chunked, игнорирует этот заголовок и определяет конец запроса по Content-Length или другим правилам HTTP/1.0.
  2. Mongoose, из-за ошибки в is_http_1_0, интерпретирует запрос как HTTP/1.1 и обрабатывает Transfer-Encoding: chunked.
  3. Разница в интерпретации приводит к тому, что часть данных, предназначенная для следующего запроса, интерпретируется Mongoose как часть текущего запроса, или наоборот.
  4. Это позволяет атакующему «спрятать» вредоносный запрос внутри безобидного, обходя аутентификацию или изменяя состояние системы.

Условия успешной эксплуатации​


Для успешной эксплуатации требуются следующие условия:

  • Целевая система использует библиотеку Mongoose версии ниже 7.22.
  • Mongoose развернут за обратным прокси, который использует протокол HTTP/1.0 для связи с Mongoose.
  • Атакующий имеет сетевой доступ к прокси или может отправить запрос, который будет перенаправлен на Mongoose.
  • Отсутствие аутентификации на уровне Mongoose или возможность обхода аутентификации через смуглинг.

Возможный сценарий атаки​


Атакующий идентифицирует систему, использующую Mongoose за прокси HTTP/1.0. Он отправляет специально сформированный HTTP-запрос с заголовком Transfer-Encoding: chunked. Прокси HTTP/1.0 игнорирует этот заголовок и передает часть данных на Mongoose, считая запрос завершенным. Mongoose, интерпретируя запрос как HTTP/1.1, продолжает чтение данных согласно правилам chunked. В результате следующий легитимный запрос пользователя или часть данных текущего запроса интерпретируется Mongoose как новый HTTP-запрос. Это может привести к выполнению несанкционированных действий, таких как изменение конфигурации, доступ к защиченным ресурсам или выполнение команд, если Mongoose предоставляет такие возможности.

Есть ли публичный эксплойт​


В предоставленных источниках нет информации о публичных эксплоитах или PoC-коде. Уязвимость описана в техническом советнике безопасности GitHub (GHSA-mgp5-rjrv-h5j3), но рабочий код атаки не опубликован. Отсутствие публичного эксплойта не означает отсутствие риска эксплуатации в реальных атаках.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для этой уязвимости не определены. Общие признаки атаки могут включать:

  • Необычные HTTP-запросы с заголовком Transfer-Encoding: chunked, отправляемые на серверы, ожидающие HTTP/1.0.
  • Рассинхронизация в журналах прокси и бэкенда.
  • Необычные изменения состояния системы или несанкционированные действия, выполненные от имени сервиса Mongoose.

Эти признаки неспецифичны и могут быть вызваны другими причинами.

Как обнаружить атаку​


Для обнаружения потенциальной эксплуатации рекомендуется:

  • Анализировать журналы HTTP-прокси и Mongoose на наличие запросов с Transfer-Encoding: chunked.
  • Проверять журналы на рассинхронизацию между прокси и бэкендом.
  • Мониторить необычные изменения в конфигурации или данных, управляемых Mongoose.
  • Использовать системы обнаружения вторжений (IDS) с правилами для HTTP Request Smuggling.

Как проверить свою версию​


Для проверки версии установленного пакета mongoose в Debian используйте следующие команды:

Bash:
apt-cache policy mongoose
dpkg-query -W -f='${Package} ${Version}\n' mongoose

Замените <имя-пакета> на mongoose, если используете общие команды. Сравните полученную версию с уязвимыми версиями (ниже 7.22+ds-1).

Исправление​


Для устранения уязвимости обновите пакет mongoose до версии 7.22+ds-1 или выше. В Debian forky и sid исправленная версия уже доступна. Выполните обновление:

Bash:
sudo apt update
sudo apt install mongoose

Убедитесь, что система использует последнюю доступную версию из репозитория.

Временные меры защиты​


До обновления рекомендуется:

  • Отключить поддержку Transfer-Encoding: chunked в Mongoose, если это возможно через конфигурацию.
  • Изменить конфигурацию прокси для использования HTTP/1.1 при связи с Mongoose, если это технически выполнимо.
  • Ограничить доступ к Mongoose только из доверенных сетей.
  • Внедрить WAF (Web Application Firewall) с правилами для блокировки запросов с Transfer-Encoding: chunked.

Как проверить устранение уязвимости​


После обновления проверьте версию пакета:

Bash:
dpkg-query -W -f='${Package} ${Version}\n' mongoose

Убедитесь, что версия равна 7.22+ds-1 или выше. Проверьте журналы на отсутствие ошибок после обновления. Убедитесь, что прокси и Mongoose корректно взаимодействуют.

Вывод​


CVE-2026-73256 представляет серьезный риск для систем, использующих Mongoose за прокси HTTP/1.0. Уязвимость позволяет выполнять HTTP-смуглинг, что может привести к несанкционированному доступу. Обновление до версии 7.22+ds-1 или выше является основным методом защиты. Временные меры включают изменение конфигурации прокси и ограничение доступа.

Официальные источники​


  1. NVD — CVE-2026-73256
  2. Debian Security Tracker — CVE-2026-73256
  3. FIRST EPSS — CVE-2026-73256

История обновлений статьи​


  • 21.08.2026 — Опубликована первая версия материала.
  • 23.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ