
🛡️ NGINX CVE-2026-42945 취약점 테스트 스크립트
NGINX Open Source, NGINX Plus 또는 NGINX 기반 인그레스/컨트롤러를 운영하는 조직은 CVE-2026-42945의 영향을 받는지 확인하고, 익스플로잇 시도가 프로덕션 경계에 도달하기 전에 패치하거나 재구성해야 합니다.
이 저장소는 귀하가 소유하거나 테스트가 허가된 시스템에서 승인된 방어적 사용을 위한 읽기 전용, 비익스플로잇 스캐너를 제공합니다.
| 항목 | 세부 사항 |
|---|---|
| CVE | CVE-2026-42945 |
| 이름 | NGINX Rift |
| 구성 요소 | ngx_http_rewrite_module (힙 버퍼 오버플로우) |
| 영향받는 버전 | NGINX Open Source 0.6.27 ~ 1.30.0 |
| 수정된 버전 | 1.30.1, 1.31.0 (+ 공급업체 백포트) |
| CVSS | 9.2 (심각) |
익스플로잇에는 특정 재작성 구성이 필요합니다:
rewrite 지시문이 대체 문자열에 이름 없는 PCRE 캡처($1, $2, …)를 사용해야 함?**가 포함되어야 함server/location 범위 내의 다른 rewrite, if 또는 set이 해당 캡처를 사용해야 함영향:
| 확인 항목 | 방법 |
|---|---|
이 스캐너는 제작된 익스플로잇 요청을 보내거나 워커를 충돌시키려 시도하지 않습니다.
cd nginx-cve-2026-42945
chmod +x scan_nginx_rift.py
# Best: run on each NGINX host with sudo
sudo python3 scan_nginx_rift.py --local
# Or scan a full config dump
sudo nginx -T 2>&1 | tee /tmp/nginx-full.txt
python3 scan_nginx_rift.py --local --config /tmp/nginx-full.txt
# Passive remote banner check (version only)
python3 scan_nginx_rift.py --url https://your-site.example/
# JSON for automation
python3 scan_nginx_rift.py --local --json --fail-on high
위험이 높음(HIGH) 또는 **심각(CRITICAL)**인 경우 종료 코드 1이 반환됩니다(CI 게이트 조정을 위해 --fail-on 사용).
업그레이드: NGINX 1.30.1 / 1.31.0+ 또는 OS/공급업체 보안 패키지로 업그레이드하십시오.
워커 재시작: 업그레이드 후 reload가 아닌 systemctl restart nginx로 워커를 재시작하십시오.
전체 구성 감사: sudo nginx -T를 실행하고 $1/$2 및 ?가 포함된 재작성 규칙을 검색하십시오.
임시 완화: $1, $2 대신 이름 있는 캡처를 사용하십시오:
# Vulnerable pattern (simplified)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_path $1;
# Safer pattern
rewrite ^/api/(?<path>.*)$ /internal?migrated=true;
set $original_path $path;
Linux에서 ASLR이 활성화된 상태로 유지되는지 확인하십시오(randomize_va_space=2).
Kubernetes 인그레스, Helm 차트 및 생성된 구성을 검토하십시오 — /etc/nginx/nginx.conf만 검토하지 마십시오.
귀하가 평가 권한이 있는 인프라에서만 사용하십시오. 권한 없는 스캔은 정책이나 법률을 위반할 수 있습니다.
| 버전 |
로컬 nginx -v 또는 수동 Server 헤더 |
| 구성 트리거 | nginx -T 또는 구성 파일의 휴리스틱 파싱 |
| ASLR (Linux) | /proc/sys/kernel/randomize_va_space |
| 지침 | 우선 순위가 지정된 수정 단계 |
| 위험도 | 의미 |
|---|
| 심각(CRITICAL) | 취약한 버전 + 알려진 트리거와 일치하는 재작성 패턴 |
| 높음(HIGH) | 취약한 버전 및 의심스러운 재작성, 또는 트리거 가능성이 있는 알 수 없는 버전 |
| 중간(MEDIUM) | 취약한 버전, 스캔된 구성에서 트리거를 찾을 수 없음 (그래도 패치 필요) |
| 낮음(LOW) | 패치된 버전이지만 위험한 재작성 패턴이 남아 있음 |
| 정보(INFO) | 패치되었고 스캔된 구성에 트리거 패턴이 없음 |