Четвёртое попадание SolarWinds Serv-U в каталог CISA KEV за пять лет. CVE-2026-28318 добавлена 5 июня 2026 года с дедлайном 19 июня - четырнадцать дней на реакцию. Механика до обидного простая: один неаутентифицированный POST с заголовком
Content-Encoding: deflate и любым мусором в теле роняет сервис целиком. CVSS 7.5 (HIGH), EPSS 0.1066 в Top 5% - вероятность эксплуатации в ближайшие 30 дней около 10.7%. CISA подтвердила активную эксплуатацию in the wild. Когда на внешнем пентесте встречаю Serv-U на периметре, первым делом проверяю версию - этот продукт ломают системно, и каждый раз по-новому - полный цикл от анализа CVE до рабочего шелла я разобрал в руководстве по разработке эксплойтов.Бизнес-логика: зачем атакующему отказ в обслуживании FTP-сервера
Serv-U - не рядовой FTP-сервер. Это managed file transfer (MFT) для организаций, которым нужна контролируемая передача файлов с аудитом: финансы, здравоохранение, госструктуры. Веб-интерфейс Serv-U включён по умолчанию и регулярно торчит на внешнем периметре - именно он становится точкой входа для CVE-2026-28318.Неаутентифицированный DoS на файловом сервере в enterprise-среде - это не абстрактная "проблема доступности". Вот что происходит на практике:
Автоматизированные файловые обмены между контрагентами встают. В финансовом секторе задержка расчётов - прямой убыток. По данным HelpNetSecurity, DoS-уязвимость в Serv-U может использоваться для отвлечения SOC от параллельной скрытой активности. Пока blue team разгребает упавший сервис, атакующий работает по другому вектору. Плюс многократный краш и перезапуск дают разведданные: как быстро срабатывает мониторинг, есть ли автоматический рестарт, меняется ли конфигурация после инцидента.
С точки зрения kill chain, CVE-2026-28318 ложится в фазу Impact - Application or System Exploitation (T1499.004). Но в реальных кампаниях DoS работает как обеспечивающий элемент: разведка поверхности атаки через сканирование уязвимостей (T1595.002, Reconnaissance) -> эксплуатация публичного приложения (T1190, Initial Access) через другую уязвимость -> DoS как прикрытие или давление. CISA отмечает, что вектор полностью автоматизируем (SSVC: automatable - yes), так что массовое сканирование и эксплуатация тривиальны.
Анатомия SolarWinds Serv-U DoS уязвимости: от заголовка до heap corruption
Согласно исследованию Bishop Fox, корневая причина CVE-2026-28318 - проверка безопасности, привязанная к неправильному условию. Веб-сервер Serv-U должен отклонять запросы с
Content-Encoding: deflate, но код, который это делает, выполняется только когда HTTP-компрессия отключена. По умолчанию компрессия включена - проверка пропускается, и тело запроса с заголовком deflate попадает напрямую в декомпрессор.Дальше цепочка такая:
- Декомпрессор получает тело запроса и начинает обработку
- Ошибка управления буфером вызывает
free()на interior pointer - указатель, который не должен освобождаться - Hardened system allocator обнаруживает heap corruption
- Аллокатор вызывает аварийное завершение всего процесса Serv-U
Интересный момент: NVD и SolarWinds классифицируют уязвимость как CWE-400 (Uncontrolled Resource Consumption). По анализу Bishop Fox, фактический механизм - повреждение кучи с аварийным завершением. CWE-400 описывает исчерпание ресурсов, а здесь процесс просто прекращает существование. Для пентестера разница существенна: resource exhaustion детектируется по росту CPU/RAM до падения, а крэш от invalid free - нет. Процесс исчезает мгновенно.
Патч в 15.5.4 HF1 не исправляет сам декомпрессор. Вместо этого добавлен универсальный фильтр: любой запрос с телом и непустым заголовком
Content-Encoding отклоняется с кодом 415 Unsupported Media Type до обработки тела. SolarWinds прямо указывает, что Content-Encoding "не требуется сервису". Этот фильтр - ключ к безопасному обнаружению уязвимых хостов.CVSS-вектор и место в MITRE ATT&CK
Вектор CVSS:3.1 -AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H. Разберём компоненты:| Компонент | Значение | Интерпретация |
|---|---|---|
| AV:N | Network | Атака по сети, физический доступ не нужен |
| AC:L | Low | Никаких особых условий, работает на дефолтной конфигурации |
| PR:N | None | Аутентификация не требуется |
| UI:N | None | Действия пользователя не нужны |
| S:U | Unchanged | Воздействие ограничено самим Serv-U |
| C:N / I:N | None | Конфиденциальность и целостность не страдают |
| A:H | High | Полная потеря доступности |
Маппинг на MITRE ATT&CK:
- Exploit Public-Facing Application (T1190, Initial Access) - эксплуатация публичного веб-интерфейса Serv-U
- Application or System Exploitation (T1499.004, Impact) - отказ приложения как конечный результат
- Vulnerability Scanning (T1595.002, Reconnaissance) - обнаружение уязвимых экземпляров
Fingerprinting уязвимого Serv-U: безопасное обнаружение без краша
[Применимо: внешний пентест, все версии Serv-U до 15.5.4 включительно]
На реальном пентесте ронять production-сервис для проверки гипотезы - не вариант. Bishop Fox разработала метод безопасного детектирования, основанный на поведенческой разнице патченного и непатченного Serv-U.
Логика простая: патч в HF1 добавляет фильтр, который отклоняет любой заголовок
Content-Encoding, не только deflate. Отправляем POST с безопасным значением Content-Encoding: identity (identity = "без преобразования", запрос не затрагивает декомпрессор и не вызывает крэш), и смотрим на ответ:- Патченный сервер (15.5.4 HF1+): вернёт
415 Unsupported Media Type - Уязвимый сервер (до 15.5.4): обработает запрос нормально, сервис останется в работе
Bash:
curl -sk -X POST https://target:443/ -H "Content-Encoding: identity" -d "probe" -o /dev/null -w "HTTP %{http_code}\n"
# 415 = патчен (HF1+), иной код = потенциально уязвим
deflate, декомпрессор не вызывается, крэша не будет. Bishop Fox выпустила готовый инструмент для массовой проверки - BishopFox/CVE-2026-28318-check на GitHub.Ограничения fingerprinting: если между вами и Serv-U стоит WAF или реверс-прокси, самостоятельно обрабатывающий
Content-Encoding, результат может быть ложноотрицательным. Проверяйте по серверным заголовкам и баннеру, что ответ приходит от Serv-U, а не от промежуточного узла.Для поиска экземпляров Serv-U в scope - стандартные методы:
nmap -sV на портах 443 (веб-интерфейс), 21/22 (FTP/SFTP), Shodan/Censys для внешней разведки.Воспроизведение deflate bomb атаки в изолированной лабе
Требования к окружению:- ОС: Windows Server 2016/2019/2022 или GNU/Linux (Serv-U поддерживает обе платформы)
- RAM: минимум 2 ГБ для VM с Serv-U
- SolarWinds Serv-U версии 15.5.4 или ниже (триальная версия на сайте SolarWinds)
- Веб-интерфейс Serv-U включён (по умолчанию - да, проверить в настройках)
- Изолированная сеть, без доступа к production-системам
Код:
POST / HTTP/1.1
Host: target
Content-Encoding: deflate
Content-Length: 4
test
Если на сервере настроен автоматический рестарт сервиса, повторный запрос после подъёма снова вызывает крэш. Единичный DoS превращается в устойчивый отказ в обслуживании. Публичный PoC доступен в репозитории EaEa0001/servu-cve-2026-28318-poc на GitHub - описание root cause и DoS-only эксплойт.
Когда техника НЕ работает:
- Serv-U 15.5.4 HF1 (build 15.5.4.125) и выше - фильтр отклоняет запрос до декомпрессора
- WAF или реверс-прокси перехватывает и стрипает
Content-Encoding: deflateдо Serv-U - HTTP-компрессия явно отключена в настройках Serv-U - в этом случае штатная проверка на deflate срабатывает корректно, но это нетипичная конфигурация; по умолчанию компрессия включена
Границы эксплуатации: почему Content-Encoding deflate эксплойт не ведёт к RCE
Heap corruption - классическая первая ступенька к remote code execution. Атакующий контролирует, какой кусок памяти освобождается, данные рядом с ним - стандартный набор для exploitation. Bishop Fox копнула в три направления и доказала, что каждое упирается в тупик:
- Контролируемый free() по произвольному адресу. Удалось обойти защитную проверку аллокатора, но структура запроса вынуждает одно из ключевых значений быть больше всего адресного пространства процесса. Результат: либо ничего не происходит, либо крэш без контроля. Прицельная эксплуатация невозможна.
- Подмена метаданных соседнего блока кучи. Классический follow-up после контролируемого free - но то же ограничение: невозможно большое значение сдвигает вычисление далеко за пределы валидной памяти.
- Integer overflow в декомпрессоре. Счётчик размера слишком мал и переполняется на больших данных. Дефект реальный, но запрашиваемый и копируемый размеры управляются одним и тем же сломанным счётчиком - они ошибаются синхронно. Итог: запрос невозможного объёма памяти и крэш, а не контролируемая запись.
Для пентестера это означает: CVE-2026-28318 - инструмент impact, а не initial access. Нужен shell на сервере - ищите другие векторы. Непатченный Serv-U с высокой вероятностью уязвим и к более ранним CVE, о которых ниже.
Митигация: SolarWinds Serv-U патч и блокировка на WAF
Чеклист для передачи администратору:- Обновить Serv-U до 15.5.4 HF1 (build 15.5.4.125) или выше. Все версии до 15.5.4 включительно уязвимы. Если стоит 15.5.4 - HF1 ставится поверх.
- Если патч невозможен прямо сейчас - заблокировать на WAF или реверс-прокси POST-запросы с заголовком
Content-Encodingк Serv-U. SolarWinds подтверждает, что эта функциональность не требуется сервису. Условие правила: метод POST + наличие заголовкаContent-Encoding-> deny или 403. - Ограничить сетевой доступ к веб-интерфейсу Serv-U только доверенными IP. Веб-интерфейс не нужен внешним пользователям - закрыть с периметра.
- Проверить все экземпляры Serv-U в инфраструктуре, включая внутренние. Для массовой проверки -
BishopFox/CVE-2026-28318-check(безопасный, не вызывает крэш). - Настроить мониторинг крэшей процесса Serv-U. Аварийное завершение без штатного shutdown - индикатор попытки эксплуатации или состоявшейся атаки.
Serv-U и CISA KEV 2026: паттерн критических уязвимостей FTP-сервера
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме
На пентесте, обнаружив Serv-U, проверяйте не только CVE-2026-28318. Если сервер не обновлён до HF1 - высока вероятность, что и более ранние патчи пропущены. CVE-2024-28995 (path traversal) в сочетании с DoS даёт и утечку данных, и отказ в обслуживании на одном хосте. В отчёте это уже совсем другая картина.
DoS с CVSS 7.5 на первый взгляд - проблема второго приоритета. Нет утечки данных, нет выполнения кода, нет lateral movement. На практике всё иначе. На четырёх из пяти внешних пентестов, где я встречал Serv-U, сервис стоял на дефолте: веб-интерфейс наружу, компрессия включена, WAF отсутствует. Один запрос - и MFT лежит. В организациях, где файловый обмен привязан к SLA с контрагентами, это прямой финансовый ущерб, а не запись в журнале инцидентов.
Bishop Fox потратила время, чтобы доказать: RCE из этого бага не выйдет. Три направления, три тупика - и это ценный результат для всей индустрии. Без такого анализа каждый второй отчёт о CVE-2026-28318 содержал бы спекуляции о "потенциальном RCE при определённых условиях". Теперь есть верифицированный ответ: heap corruption реальна, но заблокирована спецификой самой ошибки.
Меня беспокоит не конкретная CVE, а тенденция. Четвёртый раз за пять лет один и тот же продукт попадает в каталог CISA KEV. Среди попавших - RCE с EPSS 0.91, которую использовали для шпионажа и развёртывания ransomware (CVE-2021-35211, SSVC: Act), и path traversal с EPSS 0.99, эксплуатировавшаяся массово (CVE-2024-28995). SolarWinds чинит каждый баг по отдельности, но паттерн указывает на системную проблему в кодовой базе Serv-U. Если в ближайшие два года появится пятая KEV - вопрос о замене продукта станет рациональнее вопроса о патче.
Последнее редактирование: