
CVE-2026-42945에 대한 개념 증명 익스플로잇, NGINX의 rewrite 모듈에 있는 치명적인 힙 버퍼 오버플로우로 인증 없이 원격 코드 실행이 가능합니다. 설정 스크립트와 Python 셸 획득 익스플로잇이 포함되어 있습니다.
CVE-2026-42945에 대한 RCE 개념 증명입니다. 이는 2008년에 도입된 NGINX의 ngx_http_rewrite_module에서 발생하는 심각한 힙 버퍼 오버플로입니다. 이 버그는 rewrite 및 set 지시문을 사용하는 서버에 대해 인증되지 않은 원격 코드 실행을 가능하게 합니다.
이 취약점은 세 가지 다른 메모리 손상 문제(CVE-2026-42946, CVE-2026-40701, CVE-2026-42934)와 함께 depthfirst의 보안 분석 시스템이 NGINX 소스를 온보딩하는 단 한 번의 클릭만으로 자율적으로 발견했습니다.
NGINX의 스크립트 엔진은 두 단계 프로세스를 사용합니다. 먼저 필요한 버퍼 크기를 계산한 다음 데이터를 복사합니다. rewrite 대체 문자열에 ?가 포함되면 메인 엔진에 is_args 플래그가 설정되지만, 길이 계산 단계는 새로 초기화된 서브 엔진에서 실행됩니다. 따라서:
is_args = 0을 보게 되어 원시 캡처 길이를 반환합니다.is_args = 1을 보게 되어 를 와 함께 호출하여 이스케이프 가능한 각 바이트를 3바이트로 확장합니다.ngx_escape_uriNGX_ESCAPE_ARGS복사 과정에서 공격자가 제어하는 URI 데이터로 인해 크기가 부족한 힙 버퍼가 오버플로됩니다. 익스플로잇은 교차 요청 힙 펭 슈이(cross-request heap feng shui)를 사용하여 인접한 ngx_pool_t의 cleanup 포인터를 손상시키고(URI 바이트는 null 바이트를 포함할 수 없으므로 POST 본문을 통해 스프레이됨), 이를 가짜 ngx_pool_cleanup_s로 리디렉션하여 풀 소멸 시 system()을 호출하게 합니다.
이 버그에 대한 자세한 내용은 https://t.me/p3Nt3st3rsTAr 에서 확인하세요.
| 제품 | 영향을 받는 버전 | 수정된 버전 |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
전체 공급업체 권고: https://my.f5.com/manage/s/article/K000160932
Ubuntu 24.04.3 LTS에서 테스트 완료.
./setup.sh — 컨테이너를 빌드합니다.docker compose -f env/docker-compose.yml up — 취약한 NGINX 서버를 시작합니다.python3 poc.py --shell — 셸을 획득합니다.