Skip to content
KitploitKITPLOIT
ИнструментыБлог
Log in
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/wdahlenburg/cve-2022-38725
Анализ уязвимостейЭксплуатацияСетевая безопасностьТестирование на ПроникновениеАнализ Журналов
GitHubwdahlenburg/cve-2022-38725

CVE-2022-38725

Доказательство концепции для CVE-2022-38725 против syslog-ng

Репозиторий
112 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2022-38725

CVE-2022-38725 — это уязвимость типа «Отказ в обслуживании» без аутентификации в syslog-ng версий до 3.38.1.

https://github.com/syslog-ng/syslog-ng/security/advisories/GHSA-7932-4fc6-pvmc

https://nvd.nist.gov/vuln/detail/CVE-2022-38725

Шаги для воспроизведения

  1. Загрузите уязвимый docker-образ:
docker pull linuxserver/syslog-ng:3.36.1
  1. Запустите уязвимый контейнер syslog-ng. Обратите внимание, что могут применяться и другие конфигурации syslog, но настройки по умолчанию уязвимы:
docker run -p 514:5514/udp -p 601:6601/tcp --rm -it linuxserver/syslog-ng:3.36.1
  1. Отправьте полезную нагрузку на сервер:
echo '27 <182>2022-08-17T05:02:28.217 mymachine su: 'su root' failed for lonvick on /dev/pts/8' | nc 127.0.0.1 601 -w 1
  1. На уязвимом хосте обратите внимание, что загрузка ЦП для процесса syslog-ng возросла до 100%

syslog-ng-CVE-2022-38725

Анализ

Релиз 3.38.1 ссылается на https://github.com/syslog-ng/syslog-ng/pull/4110, который включает модульные тесты и несколько проверок для предотвращения аналогичных вариантов этой ошибки.

Исходная проблема содержит полезную отладку, которая выявила первопричину.

Уведомление GitHub утверждает, что уязвимость возникает из-за некорректного разбора RFC3164 — традиционного формата системных журналов BSD. В уведомлении объясняется, что может произойти целочисленное переполнение (integer underflow) и что влияние, помимо доступности, считается невозможным.

Запрос на исправление уязвимости добавляет модульные тесты как для парсера временных меток RFC3164, так и для RFC5424 (более новый формат syslog).

Обратите внимание, что спецификация RFC3164 определяет временную метку в формате Oct 11 22:14:15, тогда как RFC5424 использует формат ISO: 1985-04-12T19:20:50.52-04:00. Модульные тесты показывают, что код syslog-ng пытается разобрать любой формат. Уведомление GitHub утверждает, что уязвимость возникает при разборе сообщений RFC3164, что не совсем точно. Сообщения RFC5424 отвечают за временную метку переменной длины. Поскольку протокол syslog явно не указывает тип сообщения, проект syslog-ng пытался разобрать обе временные метки. Это позволяет также запустить уязвимость с помощью сообщения RFC3164 с неправильно сформированной временной меткой:

echo '21 <182>Oct 11 22:14:15.123 mymachine su: 'su root' failed for lonvick on /dev/pts/8' | nc 127.0.0.1 601 -w 1

Источник syslog использует подсчёт октетов, описанный в RFC6587, который предваряет сообщение syslog количеством байт, отправляемых в TCP-сообщениях.

Уязвимость может быть вызвана отправкой размера сообщения, который не полностью учитывает временную метку ISO. Код syslog-ng перебирает временную метку и вычитает количество цифр из указанной длины. Это несоответствие приводит к условию переполнения (underflow), при котором длина чтения становится отрицательной, хотя в сообщении ещё есть данные для чтения.

Процесс переходит в цикл while, где застревает, пытаясь прочитать символы из сообщения. Это приводит к 100% загрузке ЦП для данного процесса. Злоумышленник может отправлять несколько полезных нагрузок для потребления дополнительных системных ресурсов.

Syslog не использует подсчёт октетов через UDP, поэтому указанная выше полезная нагрузка не имеет необычного эффекта. Перезапуск контейнера/процесса syslog-ng сбрасывает загрузку ЦП.

Дополнительно

Один из мейнтейнеров syslog-ng указал, что возможно вызвать это через TCP RST в середине сообщения. Было отмечено, что сообщение должно отправить частичную временную метку до TCP RST. Это может позволить обойти подсчёт октетов.

Скачать инструмент