Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
http-desync-guardian — HTTP 요청을 분석하여 HTTP Desync 공격의 위험을 최소화합니다 (HTTP 요청 스머글링/분할의 전조). | Kitploit
도구/GitHubGitHub/aws/http-desync-guardian
Static AnalysisVulnerability AnalysisAPI Security TestingWeb Security
GitHubaws/http-desync-guardian

http-desync-guardian

HTTP 요청을 분석하여 HTTP Desync 공격의 위험을 최소화합니다 (HTTP 요청 스머글링/분할의 전조).

저장소 보기
274222개월 전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 Desync 공격을 방지하기 위해 HTTP 요청을 분석하고, 보안과 가용성 간의 균형을 유지하도록 설계되었습니다. 요청을 다양한 카테고리로 분류하고, 각 계층을 어떻게 처리해야 하는지에 대한 권장 사항을 제공합니다.

원시 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에서 사용

이 라이브러리는 주로 C/C++로 작성된 HTTP 엔진에서 사용하도록 설계되었습니다.

  1. cbindgen 설치: cargo install --force cbindgen
  2. 헤더 파일 생성:
    • C의 경우: cbindgen --output http_desync_guardian.h --lang c 실행
    • C++의 경우: cbindgen --output http_desync_guardian.h --lang c++ 실행
  3. cargo build --release 실행. 바이너리는 ./target/release/libhttp_desync_guardian.* 파일에 있습니다.

자세히 알아보기: generic 및 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:
            // mode == STRICTEST인 경우 거부
            // 그렇지 않으면 허용
            break;
        case REQUEST_SAFETY_TIER_AMBIGUOUS:
            // 요청이 모호합니다.
            // mode == STRICTEST인 경우 거부
            // 그렇지 않으면 전송하지만 FE/BE 연결을 재사용하지 마십시오.
            break;
        case REQUEST_SAFETY_TIER_SEVERE:
            // 400을 보내고 FE 연결을 닫습니다.
            break;
        default:
            // 도달할 수 없는 코드
            abort();
    }
}

Rust에서 사용

Rust에서의 사용 예시는 benchmarks를 참조하십시오.

보안 이슈 알림

http_desync_guardian에서 잠재적인 보안 문제를 발견하신 경우, AWS 보안팀에 취약점 신고 페이지를 통해 알려주시기 바랍니다. 공개 GitHub 이슈를 생성하지 마십시오.

보안

자세한 내용은 CONTRIBUTING을 참조하십시오.

라이선스

이 프로젝트는 Apache-2.0 라이선스에 따라 라이선스가 부여됩니다.

도구 다운로드