
로컬 위험 평가 스크립트 for CVE-2026-42945 (nginx-rift). 버전, 취약한 rewrite+set 구성, ASLR 상태, 컴파일 하드닝을 확인하여 실제 RCE 대 DoS 위험을 판별합니다.
CVE-2026-42945(Nginx Rift)에 대한 로컬 위험 평가 도구입니다. 단순히 "영향을 받는 버전이면 위험하다"고 알려주는 것과 달리, 이 스크립트는 실제로 위험을 결정하는 세 가지 조건을 단계별로 점검하여 사용자 환경에 맞는 결론을 제시합니다.
CVE-2026-42945는 nginx ngx_http_rewrite_module에 18년 동안 존재해 온 힙 버퍼 오버플로 취약점(CWE-122)이며, CVSS 4.0 점수는 9.2입니다. 하지만 공고에는 중요한 단서가 한 가지 있습니다:
"Code execution possible on systems without ASLR protection"
RCE가 성립하려면 세 가지 조건이 동시에 충족되어야 합니다:
rewrite + set 지시문 조합이 구성되어 있을 것셋 중 하나라도 충족되지 않으면 최악의 경우 worker 프로세스가 크래시된 후 자동으로 재시작될 뿐(DoS)이며, 서버가 탈취되지는 않습니다.
자세한 분석은 《nginx에 18년 동안 숨겨진 폭탄, 9.2점 취약점이 실제로 서버를 터뜨렸는가?》를 참고하세요.
# 运行(需要 sudo 读取 nginx 完整配置)
sudo bash check_cve_2026_42945.sh
스크립트는 다음 네 가지 항목을 순서대로 검사하며, 어느 하나라도 충족되지 않으면 즉시 종료하고 결론을 제시합니다:
| 검사 항목 | 설명 |
|---|---|
| nginx 버전 | 영향 범위: 0.6.27 – 1.30.0 |
| 취약점 트리거 구성 | 동일한 location 블록 안에 ?가 포함된 rewrite와 캡처 그룹 set이 동시에 존재함 |
| ASLR 상태 | /proc/sys/kernel/randomize_va_space 값 읽기 |
| 컴파일 보강 | -fcf-protection / FORTIFY_SOURCE / Full RELRO / 스택 보호 감지 |
상황 1: 버전은 영향 범위에 속하지만 취약점 트리거 구성이 없음(가장 흔한 경우)
[*] nginx 版本:1.24.0
[!] 版本 1.24.0 在受影响范围内,继续检查触发条件...
[*] 扫描 nginx 配置(检查 rewrite+set 漏洞配置组合)...
[✓] 未发现漏洞触发配置(rewrite+set 组合)
结论:版本受影响,但无漏洞触发配置,实际风险极低
建议:规划升级到 1.30.1 / 1.31.0,无需紧急处理
상황 2: 취약점 구성 존재, ASLR 활성화, 컴파일 보강 완비
[!] 版本 1.24.0 在受影响范围内,继续检查触发条件...
[!] 发现漏洞触发配置:
→ location ~ ^/api/(.*)$ {
[✓] ASLR 已启用(级别 2,完整随机化)
→ RCE 可靠利用所需前提不满足,最坏情况为 worker 进程崩溃(DoS)
[✓] 检测到 -fcf-protection(Intel CET 控制流保护)
[✓] 检测到 FORTIFY_SOURCE=3
[✓] 检测到 Full RELRO(GOT 只读)
[✓] 检测到栈保护(stack-protector)
风险等级:低
建议:在下次维护窗口升级到 nginx 1.30.1 / 1.31.0
상황 3: 취약점 구성 존재, ASLR 비활성화
[!] 发现漏洞触发配置:
→ location ~ ^/api/(.*)$ {
[✗] ASLR 已关闭!RCE 风险显著上升
风险等级:高(DoS 确定 / RCE 可能)
立即行动:
1. 临时移除或修改触发漏洞的 rewrite+set 配置
2. 确认 ASLR 开启:echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
3. 升级 nginx:apt install nginx 或 编译安装 1.30.1+
| 등급 | 의미 | 권장 처리 속도 |
|---|---|---|
| 무영향 | nginx 미설치 또는 이미 수정된 버전 | 조치 불필요 |
| 극히 낮음 | 버전은 영향 범위에 속하지만 트리거 구성 없음 | 다음 정기 유지보수 시 업그레이드 |
| 낮음 | 트리거 구성이 있으나 ASLR + 컴파일 보강 완비 | 다음 유지보수 창에 업그레이드 |
| 중간 | 트리거 구성이 있고 방어에 공백이 있음 | 가능한 한 빨리 업그레이드, 가용성에 위험 |
| 높음 | 트리거 구성 + ASLR 비활성화 + 보강 누락 | 즉시 처리 |
| 제품 | 영향받는 버전 | 패치 버전 |
|---|---|---|
| NGINX 오픈소스 버전 | 0.6.27 – 1.30.0 | 1.30.1 / 1.31.0 |
| NGINX Plus | R32 – R36 | R36 P4 / R35 P2 / R32 P6 |
# Ubuntu / Debian
sudo apt update && sudo apt install nginx
# 验证版本
nginx -v
스크립트는 다음 시나리오에서 모두 실제 검증되었습니다:
테스트 환경: Ubuntu 22.04 LTS, nginx 1.24.0(Ubuntu 공식 패키지)
include 구조는 누락될 수 있습니다(스크립트는 nginx -T로 모든 include를 전개하여 대부분의 경우를 커버함)MIT