DEEP DIVE REPORT

PoC 공개된 18년 묵은 NGINX 치명적 취약점: 인증 없는 서버 장악 리스크 점검

SecurityDesk
2026.05.18 조회 7

서론

전 세계 웹 서버의 30% 이상을 차지하는 NGINX에서 18년 묵은 치명적 취약점이 발견되었습니다. 이 취약점은 인증 없이 서버를 장악할 수 있는 원격 코드 실행(RCE) 취약점으로, 2026년 5월 13일 F5에서 공식 보안 어드바이저리를 발행했습니다.

CVE-2026-42945로 할당된 이 취약점은 2008년 버전 0.6.27부터 존재했으며, 1.30.0까지 모든 버전에 영향을 미칩니다. 이미 PoC(Proof of Concept)가 공개되어 실제 공격이 가능한 상태입니다.

본론

취약점 개요

CVE-2026-42945는 NGINX의 ngx_http_rewrite_module에서 발생하는 힙 버퍼 오버플로우 취약점입니다. CVSS 점수 9.2(Critical)로 분류되어 매우 위험합니다.

취약점 세부사항:
- 유형: 힙 버퍼 오버플로우
- 영향: 원격 코드 실행(RCE)
- 도입 버전: NGINX 0.6.27 (2008년)
- 취약 버전: 0.6.27 ~ 1.30.0
- CVSS 점수: 9.2 (Critical)
- 공격 조건: 인증 불필요, 네트워크 접근 가능

기술적 원인

이 취약점은 NGINX의 스크립트 엔진이 rewrite와 set 지시문을 처리할 때 발생합니다.

취약점 발생 조건:
1. rewrite 지시문이 물음표(?)를 포함할 때
2. set 지시문이 정규식 캡처 그룹($1, $2 등)을 참조할 때
3. 두 지시문이 함께 사용될 때

버그 발생 메커니즘:
NGINX의 스크립트 엔진은 두 패스 시스템을 사용합니다.
- 첫 번째 패스: 메모리 길이 계산
- 두 번째 패스: 데이터 복사

문제는 두 패스 사이의 상태 불일치에 있습니다. rewrite 지시문이 물음표를 포함하면 메인 엔진의 is_args = 1 플래그가 설정됩니다. 하지만 첫 번째 패스(길이 계산)에서는 초기화된 서브 엔진을 사용하므로 is_args = 0으로 처리됩니다.

결과적으로:
1. 길이 계산 패스: 이스케이프가 필요 없다고 판단 (is_args = 0)
2. 데이터 복사 패스: 이스케이프 수행 (is_args = 1)

이스케이프 함수는 이스케이프 가능한 각 바이트를 1바이트에서 3바이트로 확장합니다. 할당된 버퍼 크기보다 훨씬 많은 데이터가 써이게 되어 힙 버퍼 오버플로우가 발생합니다.

영향 범위

이 취약점은 다음 NGINX 제품에 영향을 미칩니다:

NGINX Open Source:
- 취약 버전: 0.6.27 ~ 1.30.0
- 패치 버전: 1.30.1+, 1.31.0+

NGINX Plus:
- 취약 버전: R32 ~ R36
- 패치 버전: R36 P1+, R37+

기타 F5 제품:
- NGINX Instance Manager: 2.16.0 ~ 2.21.1 → 2.21.2+
- F5 WAF for NGINX: 5.9.0 ~ 5.12.1 → 5.12.2+
- NGINX App Protect WAF: 4.9.0 ~ 4.16.0, 5.1.0 ~ 5.8.0 → 4.16.1+/5.8.1+
- NGINX Gateway Fabric: 1.3.0 ~ 1.6.2, 2.0.0 ~ 2.5.1 → 1.6.3+/2.5.2+
- NGINX Ingress Controller: 3.5.0 ~ 3.7.2, 4.0.0 ~ 4.0.1, 5.0.0 ~ 5.4.1 → 3.7.3+/4.0.2+/5.4.2+

공격 시나리오

공격자는 다음과 같은 방법으로 이 취약점을 악용할 수 있습니다:

  1. Heap Feng Shui 기법: 여러 연결을 통해 힙 레이아웃 조작
  2. POST Body Spraying: 가짜 cleanup 구조체를 힙에 분산
  3. 버퍼 오버플로우: 이스케이프 문자열(+, & 등)을 사용해 버퍼 오버플로우 유발
  4. 코드 실행: cleanup 함수 포인터 덮어쓰기로 system() 함수 호출

공격 조건:
- NGINX 설정에 rewrite + set 지시문 조합이 있어야 함
- 공격자가 네트워크 접근이 가능해야 함
- ASLR(Address Space Layout Randomization)가 우회되어야 함 (연구팀은 ASLR 비활성화 환경에서 성공)

취약성 확인 방법

설정 파일 검사:

# NGINX 설정에서 rewrite와 set 지시문 조합 확인
grep -A 5 "rewrite" /etc/nginx/nginx.conf
grep -A 5 "set " /etc/nginx/nginx.conf

# 문제가 될 수 있는 설정 예시
location ~ ^/api/(.*)$ {
    rewrite ^/api/(.*)$ /internal?migrated=true;
    set $original_endpoint $1;  # 취약: rewrite 후 set 사용
}

버전 확인:

nginx -v
# 버전이 1.30.0 이하인 경우 취약

대응 전략

즉시 대응 (24시간 이내)

  1. NGINX 버전 확인

    nginx -v
    

  2. 패치 적용

  3. NGINX Open Source: 1.30.1 또는 1.31.0으로 업그레이드
  4. NGINX Plus: R36 P1 또는 R37로 업그레이드
  5. 기타 F5 제품: 해당 패치 버전으로 업그레이드

  6. 설정 파일 임시 수정 (패치 불가 시)

    # 문제가 되는 설정에서 set 지시문 제거 또는 순서 변경
    location ~ ^/api/(.*)$ {
        set $original_endpoint $1;  # rewrite 전에 set
        rewrite ^/api/(.*)$ /internal?migrated=true;
    }
    

단기 대응 (72시간 이내)

  1. WAF/WAF 레이어 추가
  2. 패치 완료까지 NGINX 배포를 추가 방어락 뒤에 배치
  3. 의심스러운 URI 패턴 차단

  4. 네트워크 접근 제한

  5. 불필요한 외부 접속 차단
  6. VPN/내부망에서만 접근 허용

  7. 로그 모니터링 강화

  8. 비정상적 요청 패턴 감지
  9. Worker 프로세스 충돌 모니터링

장기 대응 (1주 이내)

  1. 설정 파일 전면 검토
  2. 모든 rewrite + set 지시문 조합 확인
  3. 필요 없는 지시문 제거

  4. 보안 정책 업데이트

  5. 정기적 취약점 스캔 프로세스 구축
  6. 보안 패치 적용 정책 수립

  7. 인시던트 대응 계획 수립

  8. 침해 탐지 시 대응 절차 마련
  9. 백업/복구 절차 검증

검토 체크리스트

단계 항목 완료 여부 비고
즉시 대응 NGINX 버전 확인 버전 확인 완료
패치 적용 1.30.1 또는 1.31.0으로 업그레이드
설정 파일 임시 수정 rewrite + set 조합 제거
단기 대응 WAF 레이어 배치 패치까지 보안 강화
네트워크 접근 제한 불필요한 외부 접속 차단
로그 모니터링 강화 비정상 요청 패턴 감지
장기 대응 설정 파일 전면 검토 모든 지시문 조합 확인
보안 정책 업데이트 정기적 스캔 프로세스 구축
인시던트 대응 계획 수립 침해 탐지 대응 절차 마련

결론

CVE-2026-42945는 18년 동안 존재한 NGINX의 치명적 취약점으로, 이미 PoC가 공개되어 실제 공격 위험이 높습니다. 특히 인증 없이 원격 코드 실행이 가능하므로 즉각적인 조치가 필요합니다.

핵심 권장사항:
1. 즉시 패치 적용: NGINX 1.30.1 또는 1.31.0으로 업그레이드
2. 설정 파일 검토: rewrite + set 지시문 조합 제거
3. 보안 레이어 강화: WAF/WAF 레이어 추가, 네트워크 접근 제한
4. 지속적 모니터링: 비정상 요청 패턴 감지, Worker 프로세스 충돌 모니터링

이 취약점은 API 게이트웨이 설정에서 자주 발생하는 패턴(rewrite 후 set 사용)을 악용하므로, NGINX를 사용하는 모든 조직은 즉시 버전을 확인하고 패치를 적용해야 합니다.

참고자료

  1. F5 Security Advisory
    https://my.f5.com/manage/s/article/K000160932

  2. depthfirst Research Blog
    https://depthfirst.com/research/nginx-rift-achieving-nginx-rce-via-an-18-year-old-vulnerability

  3. CyberSecurity News
    https://cybersecuritynews.com/18-year-old-nginx-rce-vulnerability/

  4. GitHub PoC Repository
    https://github.com/cipherspy/CVE-2026-42945-POC

  5. NVD - CVE-2026-42945
    https://nvd.nist.gov/vuln/detail/CVE-2026-42945


본 컨텐츠는 AI 기술로 생성된 분석 리포트를 포함하고 있습니다. 내용 중 사실과 다르거나 보완이 필요한 정보를 발견하시면 댓글을 통해 소중한 의견 부탁드립니다. 여러분의 피드백은 더 정확한 보안 정보 공유에 큰 도움이 됩니다.

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

로그인

아직 댓글이 없습니다.

첫 번째 댓글을 작성해보세요!

IT 도구 서랍

→ Unix: 2025-01-15T09:30:00
→ 날짜: 1736934600

→ ASCII: ABC
→ 문자: 65 66 67

ASCII 코드표 — 클릭하면 입력란에 추가

DecHex약어설명
DecHex문자
DecHex문자

→ 유니코드: 홍길동
→ 문자: \ud64d\uae38\ub3d9