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

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

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

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

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

Категории

Все категории
Loading categories
auth-header-trust-rules — Правила Semgrep для выявления паттернов обхода аутентификации, основанных на доверии к заголовкам (класс CVE-2025-29927). Компаньон к bk-security.github.io. | Kitploit
Инструменты/GitHubGitHub/bk-security/auth-header-trust-rules
Аутентификация и авторизацияСтатический анализ кода (SAST)Анализ уязвимостейАнализ КодаВеб-безопасностьОбучение и Образование
GitHubbk-security/auth-header-trust-rules

auth-header-trust-rules

Правила Semgrep для выявления паттернов обхода аутентификации, основанных на доверии к заголовкам (класс CVE-2025-29927). Компаньон к bk-security.github.io.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
3 месяцев назадЕщё не проверено

auth-header-trust-rules

Небольшой набор правил Semgrep, который помечает код, принимающий решения об аутентификации, авторизации или доверии на основе HTTP-заголовков запроса, контролируемых злоумышленником.

Каноническим примером данного класса уязвимостей является CVE-2025-29927: Next.js доверял заголовку x-middleware-subrequest для принятия решения о выполнении middleware, и любой входящий запрос с поддельным значением мог полностью пропустить middleware. Такая же модель повторяется в различных фреймворках и экосистемах.

Этот набор включает правила для двух языковых семей и трех подклассов ошибки. Он предназначен как вспомогательное средство для проверки кода, а не как полностью настроенный шлюз CI. Правила отдают предпочтение полноте обнаружения перед точностью и лучше всего запускаются в интерактивном режиме, когда решение по каждому срабатыванию принимает человек.

Более подробное описание класса уязвимостей и обоснование дизайна этого набора см. на bk-security.github.io.

Инвентарь правил

ПравилоЯзыкСерьезностьЧто обнаруживает
nodejs-header-flag-auth-bypassJS / TSПредупреждениеЧтение заголовков, имя которых указывает на использование внутреннего протокола или обхода аутентификации (x-internal, x-bypass-auth, x-middleware-subrequest, x-admin-override, x-impersonate и т.д.)
nodejs-header-as-identityJS / TSПредупреждениеЧтение заголовков, традиционно используемых для передачи идентификатора пользователя (x-forwarded-user, x-authenticated-user, x-remote-user и т.д.)
nodejs-forwarded-for-trustJS / TSИнформацияЧтение заголовков x-forwarded-for, x-real-ip и подобных заголовков исходного IP, которым часто доверяют при принятии решений безопасности
python-header-flag-auth-bypassPythonПредупреждениеАналогично варианту для Node.js, включая доступ в стиле Django (request.META["HTTP_X_*"])
python-header-as-identityPythonПредупреждениеАналогично варианту для Node.js, адаптировано для Python
python-forwarded-for-trustPythonИнформацияАналогично варианту для Node.js, адаптировано для Python

Быстрый старт

Установите Semgrep:

root@kitploit:~
pip install semgrep

Запустите набор правил для целевой директории:

root@kitploit:~
semgrep --config /path/to/auth-header-trust-rules/rules /path/to/target

Или выполните одно правило:

root@kitploit:~
semgrep --config /path/to/auth-header-trust-rules/rules/nodejs/header-flag-auth-bypass.yaml /path/to/target

Проверьте правила на входящих тестовых данных:

root@kitploit:~
semgrep --test --config rules/ tests/

Ожидаемый вывод:

root@kitploit:~
6/6: ✓ All tests passed

Что правила могут и не могут обнаружить

Правила сопоставляются с заданным списком имен заголовков, которые считаются опасными при доверии. Они будут обнаруживать типичные случаи. Они не будут обнаруживать:

  • Фреймворки, в которых чтение заголовка скрыто внутри вспомогательной функции, имя которой не содержит строки заголовка. Пользовательская функция getInternalFlag(req), читающая x-some-novel-name, не будет обнаружена правилами.
  • Имена заголовков, отсутствующие в заданном списке. Класс CVE-2025-29927 в принципе может использовать любые имена заголовков; мы склоняемся к полноте, включая шаблоны типа x-internal-*, x-trust-* и x-bypass-*, но новые имена могут остаться незамеченными.
  • Решения об аутентификации, основанные на куках, параметрах запроса или полях тела запроса. Это тот же класс уязвимостей, но требует отдельных правил.
  • Решения об аутентификации, основанные на отсутствии заголовка. Некоторые приложения пропускают проверки аутентификации, когда заголовок не присутствует (неправильно настроенный белый список). Текущие правила основаны на чтении и использовании, а не на отсутствии.

При расширении набора для конкретной кодовой базы наиболее ценными дополнениями обычно являются шаблоны вспомогательных функций, специфичных для фреймворка. Если в кодовой базе есть функция isInternalRequest(req), правило, которое её обнаруживает, представляет собой одну строку YAML.

Добавление правила

  1. Создайте правило в каталоге rules/<lang>/<name>.yaml.
  2. Создайте тестовый фикстуру в tests/<lang>/<name>.<ext> с положительными примерами, помеченными # ruleid: <rule-id>, и отрицательными примерами, помеченными # ok: <rule-id>.
  3. Запустите semgrep --test --config rules/ tests/. Новое правило и фикстура будут подобраны автоматически; тесты должны проходить перед отправкой изменения.

Лицензия

MIT.

Автор

Bruce Kang. Исходный код для сопутствующей статьи находится на bk-security.github.io.

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