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

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

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

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

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

Категории

Все категории
Loading categories
http-desync-guardian — Анализируйте HTTP-запросы для минимизации рисков атак HTTP Desync (предшественник HTTP request smuggling/splitting). | Kitploit
Инструменты/GitHubGitHub/aws/http-desync-guardian
Статический анализАнализ уязвимостейТестирование безопасности APIВеб-безопасность
GitHubaws/http-desync-guardian

http-desync-guardian

Анализируйте HTTP-запросы для минимизации рисков атак HTTP Desync (предшественник HTTP request smuggling/splitting).

Репозиторий
2742232 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

Apache 2 License Crate Clippy/Fmt Tests Coverage Status

Обзор

HTTP/1.1 прошёл долгую эволюцию с 1991 по 2014 год:

  • HTTP/0.9 — 1991
  • HTTP/1.0 — 1996
  • HTTP/1.1
    • RFC 2068 — 1997
    • RFC 2616 — 1999
    • RFC 7230 — 2014

Это означает, что существует множество серверов и клиентов, которые могут по-разному понимать границы запросов, создавая возможности для атак десинхронизации (также известных как HTTP Desync).

Может показаться, что следовать последним рекомендациям RFC просто. Однако для крупномасштабных систем, существующих уже некоторое время, это может быть сопряжено с неприемлемыми последствиями для доступности.

Библиотека http_desync_guardian предназначена для анализа HTTP-запросов с целью предотвращения атак HTTP Desync, обеспечивая баланс между безопасностью и доступностью. Она классифицирует запросы по различным категориям и даёт рекомендации по обработке каждого уровня.

Её можно использовать как для сырых заголовков HTTP-запросов, так и для уже разобранных HTTP-движком. Потребители могут настраивать сбор журналов и метрик. Журналирование ограничено по частоте, а все пользовательские данные обфусцированы.

Если вы считаете, что обнаружили проблему, влияющую на безопасность, пожалуйста, следуйте нашему процессу уведомлений о безопасности.

Приоритеты

  • Единообразие между службами — ключевой фактор. Это означает, что классификация запросов, журналирование и сбор метрик должны выполняться автоматически и с минимально настраиваемыми параметрами (например, только место назначения файла журнала).
  • Акцент на проверяемости. Набор тестов не должен требовать знаний о библиотеке или языках программирования — только о протоколе HTTP. Так его легко проверять, дополнять и повторно использовать.
  • Безопасность эффективна, когда она проста для пользователей. Наша цель — максимально упростить интеграцию библиотеки.
  • Сверхлёгкость. Накладные расходы должны быть минимальными и не оказывать ощутимого влияния на обработку запросов (см. тесты производительности).

Поддерживаемые версии HTTP

Основное внимание в этой библиотеке уделяется HTTP/1.1. См. тесты для всех охваченных случаев. Предшественники HTTP/1.1 не поддерживают повторное использование соединений, что ограничивает возможности для HTTP Desync, однако некоторые прокси могут повышать такие запросы до HTTP/1.1 и повторно использовать бэкенд-соединения, что позволяет создавать вредоносные запросы HTTP/1.0. Поэтому они анализируются по тем же критериям, что и HTTP/1.1. Для других версий протокола существуют следующие исключения:

  • Запросы HTTP/0.9 никогда не считаются Compliant, а классифицируются как Acceptable. Если присутствует Content-Length/Transfer-Encoding, то это Ambiguous.
  • HTTP/1.0 — наличие Transfer-Encoding делает запрос Ambiguous.
  • HTTP/2+ выходит за рамки. Но если ваш прокси понижает HTTP/2 до HTTP/1.1, убедитесь, что исходящий запрос анализируется.

См. документацию для получения дополнительной информации.

Использование из C

Эта библиотека предназначена в первую очередь для использования из HTTP-движков, написанных на C/C++.

  1. Установите cbindgen: cargo install --force cbindgen
  2. Сгенерируйте заголовочный файл:
    • Запустите cbindgen --output http_desync_guardian.h --lang c для C.
    • Запустите cbindgen --output http_desync_guardian.h --lang c++ для C++.
  3. Запустите cargo build --release. Бинарные файлы находятся в ./target/release/libhttp_desync_guardian.*.

Подробнее: примеры общего и Nginx.

root@kitploit:~
#include "http_desync_guardian.h"

/* 
 * http_engine_request_t - уже разобран HTTP-движком 
 */
static int check_request(http_engine_request_t *req) {
    http_desync_guardian_request_t guardian_request = construct_http_desync_guardian_from(req); 
    http_desync_guardian_verdict_t verdict = {0};

    http_desync_guardian_analyze_request(&guardian_request, &verdict);

    switch (verdict.tier) {
        case REQUEST_SAFETY_TIER_COMPLIANT:
            // Запрос хороший. Зелёный свет
            break;
        case REQUEST_SAFETY_TIER_ACCEPTABLE:
            // Отклонить, если режим == STRICTEST
            // В противном случае OK
            break;
        case REQUEST_SAFETY_TIER_AMBIGUOUS:
            // Запрос неоднозначен.
            // Отклонить, если режим == STRICTEST 
            // В противном случае отправить, но не повторно использовать ни FE, ни BE соединения.
            break;
        case REQUEST_SAFETY_TIER_SEVERE:
            // Отправить 400 и закрыть FE соединение.
            break;
        default:
            // недостижимый код
            abort();
    }
}

Использование из Rust

См. тесты производительности в качестве примера использования из Rust.

Уведомления о проблемах безопасности

Если вы обнаружите потенциальную проблему безопасности в http_desync_guardian, мы просим вас уведомить AWS Security через страницу сообщения об уязвимостях. Пожалуйста, не создавайте публичный issue на GitHub.

Безопасность

См. CONTRIBUTING для получения дополнительной информации.

Лицензия

Этот проект лицензирован в соответствии с Apache-2.0 License.

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