피드로 돌아가기
Hacker NewsHacker News
Security

NGINX Heap Buffer Overflow를 이용한 원격 코드 실행(RCE) 취약점 분석

New Nginx Exploit

2026년 5월 14일1advanced

Context

NGINX의 ngx_http_rewrite_module 내 두 단계 처리 프로세스 설계 결함으로 인한 취약점 발생. 버퍼 크기 계산 단계와 실제 데이터 복사 단계의 상태 불일치로 인해 Heap Buffer Overflow가 유발되는 구조임.

Technical Solution

  • Length Pass와 Copy Pass 간의 is_args 플래그 상태 불일치를 통한 버퍼 오버플로우 유도
  • Length Pass에서는 is_args=0 상태로 raw capture length를 반환하도록 설계된 로직 활용
  • Copy Pass에서 is_args=1로 전환됨에 따라 ngx_escape_uri 함수가 바이트당 3배의 공간을 요구하며 버퍼 초과 발생
  • Cross-request Heap Feng Shui 기법을 적용하여 인접한 ngx_pool_t의 cleanup pointer 오염
  • POST body를 통한 데이터 spraying으로 Null byte 제약을 극복하고 가짜 ngx_pool_cleanup_s 구조체 배치
  • Pool 파괴 시점에 system() 함수를 호출하도록 제어 흐름을 변경하여 RCE 달성

1. 다단계 처리 프로세스(크기 계산 후 복사) 설계 시 각 단계의 상태 값이 동일하게 유지되는지 검증

2. 가변 길이 데이터를 처리하는 함수(예: URI Encoding) 호출 전 버퍼 크기 재검증 로직 적용

3. 메모리 풀 기반 할당 구조에서 인접 객체의 포인터 오염 가능성을 고려한 메모리 격리 검토

원문 읽기