
CVE-2026-42533에 대한 익스플로잇 코드로, 지정된 취약점에 대한 개념 증명(PoC) 구현을 제공합니다.
CVE-2026-42533(CVSS 4.0 9.2 CRITICAL)에 대한 전체 체인 보안 연구: NGINX의 스크립트 엔진에서 정규식 기반 map이 복합 값 평가의 길이 패스와 복사 패스 사이에서 공유 캡처 상태를 덮어쓰는 힙 버퍼 오버플로로, HTTP 및 stream(TLS SNI) 양쪽 표면에서 사전 인증(pre-authentication) 상태로 도달 가능합니다.
결과: 사전 인증 원격 코드 실행(워커 사용자 권한으로 system() 실행)을 고정된 랩 환경에서 3/3 재현 — 더불어 버그의 프리미티브를 근본 원인에서 결정론적 워커 장악까지 매핑하는 독립적인 HTTP 모듈 연구 체인도 포함합니다.
| 주장 | 증거 |
|---|---|
| 근본 원인은 (블로그가 아닌) 수정 커밋에서 도출됨 | finding-sheet |
| 안전한 탐지기: 취약 vs 패치 오라클, 크래시 없음 | poc/diagnose.py (divergence served vs 500 no buffer space) |
| 결정론적 워커 DoS (힙 손상 중단, 코어 덤프) | poc/crash.py — 2/2, X-Worker-PID 변경으로 워커 사망 입증 |
| NUL 포함 임의 바이트 오버플로 (포인터 쓰기 가능) | HTTP body-map 프리미티브, raw-upstream 덤프로 검증됨 |
| 사전 인증 RCE, 런타임에 ASLR 무력화 (랩 보조 수단 없음) | exploit/stream_rce.py — 3/3, leak + spray + 세션 재구성 |
# stream variant: the full chain (build is a pinned nginx rev, ~3 min)
cd lab/stream && docker compose up -d --build && cd ../..
python3 exploit/stream_rce.py --host 127.0.0.1 --port 29443 \
--cmd 'echo pwned-by-cve-2026-42533 > /tmp/proof'
docker compose -f lab/stream/docker-compose.yml exec nginx-rce cat /tmp/proof
# HTTP variant: deterministic crash PoC + safe detector
cd lab && docker compose up -d --build && cd ..
python3 poc/crash.py 127.0.0.1 8080 # worker aborts, core dumped
python3 poc/diagnose.py 127.0.0.1 8080 # VULNERABLE / PATCHED oracle
| 문서 | 설명 |
|---|---|
| docs/finding-sheet.md | 한 페이지 데이터시트: 버전, CVSS, 구성 패턴, 탐지 시그니처 |
| docs/report-ptes.md | 실험실 증거를 포함한 전체 PTES 구조 보고서(7단계) |
| docs/research-writeup.md | 조사 서술 — 방법론, 막다른 길, 이식 가능한 교훈, 선행 연구 비교 |
HTTP 모듈 연구 체인은 독창적인 작업입니다: 비대칭 길이/값 스크립트 컴파일을 실증적으로 측정한 것, 세 개의 복사본 값 전달 법칙, NUL 보존 body-map 프리미티브, 그리고 할당자 중단 체인 포렌식입니다. 완성된 스트림 변형 RCE는 DepthFirst Disclosures(공로가 명시된 제보자)의 공개된 접근 방식을 출처 표기와 함께 따릅니다 — 두 체인의 기법별 비교는 writeup의 선행 연구 섹션을 참조하세요.
이 저장소는
CVE-2026-42945 — NGINX Rewrite Heap Overrun: Analysis & Deterministic DoS
(자매 저장소)와 방법론을 공유합니다: nginx
스크립트 엔진에서 동일한 2-pass 길이/값 버그 클래스로,
rewrite/is_args를 통해 도달하며 — 차등 탐지기와 결정적 워커 DoS를 포함하고, RCE 문제는 열린 상태로 남겨둡니다.
docs/ finding sheet · PTES report · research writeup
poc/ diagnose.py (safe oracle) · crash.py (deterministic DoS)
exploit/
stream_rce.py full RCE chain (leak → spray → session rebuild → system)
exploit.py HTTP-module chain (research artifact, near-closure)
lab/ HTTP lab (vulnerable 1.31.2 + patched 1.31.3, backends)
lab/stream/ pinned-build lab for the stream variant
b767540, a8289aa, 0cca8e0교육용 연구 산출물입니다. 본인이 소유하거나 테스트 권한을 명시적으로 부여받은 시스템에 대해서만 실행하십시오. 해당 취약점은 패치되었으므로 nginx를 ≥ 1.30.4 / ≥ 1.31.3으로 업그레이드하십시오.