
Защитный разбор CVE-2026-77680 — DoS-уязвимости алгоритмической сложности в обработке HTTP Range в libsoup: разбор CVSS, сопоставление с цепочкой атаки, рекомендации по обнаружению и устранению.
Оценка: Средняя степень серьёзности · CVSS v3.1: 5.3 · Основное воздействие: Доступность (исчерпание CPU / отказ в обслуживании)
Этот репозиторий документирует техническое поведение, риск, меры устранения и сопоставление с Cyber Kill Chain для CVE-2026-77680 — дефекта алгоритмической сложности в обработке заголовка HTTP Range в libsoup.
CVE-2026-77680 — это уязвимость отказа в обслуживании в логике объединения диапазонов HTTP Range в libsoup. В затронутых версиях обработка множества повторяющихся, удовлетворимых байтовых диапазонов может вызывать квадратичный объём работы. Проблема сохраняется после более раннего исправления CVE-2025-32907, поскольку код объединения по-прежнему удалял элементы массива по одному; каждое удаление может приводить к перемещению оставшихся элементов в памяти.
Удалённый неаутентифицированный злоумышленник может отправить специально сформированный HTTP-запрос серверному приложению, использующему уязвимый путь SoupServer. При уязвимых условиях обработка запроса может потреблять непропорционально много процессорного времени и задерживать другие запросы. Заявленное воздействие касается только доступности; эта проблема не описывается как повреждение памяти или раскрытие информации.
Исправление в upstream заменяет повторяющееся удаление элементов на компактификацию на месте за линейное время и отклоняет заголовки Range, запрашивающие более 200 диапазонов. Операторам следует установить соответствующее обновление безопасности от поставщика, а не полагаться исключительно на периметрический обходной путь.
| Поле | Сведения |
|---|---|
| CVE | CVE-2026-77680 |
| Компонент | GNOME libsoup (HTTP-библиотека) |
| Слабость | CWE-407 — Неэффективная алгоритмическая сложность |
| Степень серьёзности | Средняя |
| CVSS v3.1 | 5.3 |
| Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L |
| Предварительные условия атаки | Сетевой доступ к уязвимому сервису; аутентификация или взаимодействие с пользователем не требуются |
| Основное воздействие | Исчерпание CPU и снижение доступности сервиса |
| Связанная проблема | CVE-2025-32907 |
| Исправление в upstream | GNOME libsoup merge request !550 |
Запросы байтовых диапазонов HTTP позволяют клиенту запрашивать выбранные части ресурса. В уязвимом пути кода libsoup объединяет перекрывающиеся или дублирующиеся диапазоны. Удаление элемента из середины непрерывного GArray может потребовать сдвига оставшихся элементов. Повторение этой операции при обработке множества диапазонов может давать O(n²) работы вместо линейной.
Заявленный серверный путь включает handle_partial_get() в libsoup/server/http1/soup-server-message-io-http1.c, с разбором/объединением диапазонов в soup_message_headers_get_ranges_internal() в libsoup/soup-message-headers.c. Проблема актуальна, когда приложение использует уязвимый серверный путь и возвращает подходящий ответ с непустым телом.
Количество диапазонов может ограничиваться лимитами заголовков запроса, а не достаточно низким ограничением на число диапазонов. Следовательно, один запрос может вызвать чрезмерную обработку, а повторяющиеся запросы могут усилить воздействие на доступность. Точное воздействие зависит от развёрнутой версии, лимитов запросов, поведения приложения и мощности сервера.
Опубликованная оценка CVSS v3.1 — 5.3 (Средняя).
Средняя базовая оценка не означает, что проблему можно игнорировать: интернет-доступность, общая инфраструктура и повторяющиеся запросы могут сделать доступность сервиса операционно важной.
Не делайте вывод об уязвимости только по наличию libsoup. Подтвердите конкретную сборку пакета и то, применено ли исправление.
Cyber Kill Chain компании Lockheed Martin — это модель, ориентированная на вторжение. Это сопоставление адаптирует её этапы к сценарию отказа в обслуживании; не каждый этап представляет собой отдельный или необходимый шаг для данной уязвимости.
| Этап | Возможная активность в этом сценарии | Возможности защиты |
|---|---|---|
| 1. Разведка | Определить доступное приложение и сделать вывод о его HTTP-стеке или поведении. | Сократить ненужную подверженность; вести инвентаризацию активов и программного обеспечения; избегать раскрытия ненужной информации о версии. |
| 2. Вооружение | Подготовить HTTP-запрос с чрезмерным числом повторяющихся или перекрывающихся значений Range. | Исправить библиотеку; проверять и ограничивать количество диапазонов; применять безопасные ограничения разбора запросов. |
| 3. Доставка | Отправить сформированный запрос в открытый сервис. | Использовать сетевые средства контроля, защиту обратного прокси, ограничения соединений и ограничения частоты запросов. |
| 4. Эксплуатация | Запустить дорогостоящую работу по объединению диапазонов в уязвимом серверном пути. | Развернуть исправление поставщика/upstream; отклонять чрезмерные диапазоны до дорогостоящей обработки. |
| 5. Установка | Обычно неприменимо: это дефект исчерпания ресурсов, и сам по себе он не устанавливает вредоносное ПО. | Отслеживать последующую активность; не предполагать, что нарушение работы сервиса означает компрометацию хоста. |
| 6. Командование и управление | Не требуется для базового поведения DoS. Ботнет или удалённый контроллер может использоваться для координации повторяющегося трафика, но это не является неотъемлемой частью CVE. | Сопоставлять трафик из разных источников; применять защиты от DDoS на уровне upstream, где это уместно. |
| 7. Действия по целям | Ухудшить время отклика или лишить легитимных пользователей доступа к сервису. | Отслеживать доступность и CPU; сохранять журналы; применять процедуры реагирования на инциденты и восстановления. |
Основной результат — деградация сервиса или отказ в обслуживании, а не выполнение кода. Это различие важно для триажа: отдавайте приоритет средствам контроля доступности и исправлению, при этом всё равно проверяйте журналы и телеметрию на наличие отдельных индикаторов компрометации.