NGINX 및 NGINX Plus를 사용하여 CVE-2015-1635로부터 보호하기

NGINX | 2015년 4월 16일

4월 14일, Microsoft는 취약점 경고를 발표했습니다 – 현재 CVE-2015-1635로 추적되고 있는 이 문제는 공격자가 영향을 받는 Windows 시스템에 특수하게 조작된 HTTP 요청을 보낼 경우 원격 코드 실행을 허용할 수 있습니다. 운영 중인 Windows 서버에 즉시 패치를 적용하기 어렵다면 NGINX와 NGINX Plus를 사용하여 공격으로부터 서버를 보호할 수 있습니다.

이 글을 작성하는 시점에는 해당 취약점에 대한 구체적인 세부 정보가 공개되지 않았지만, 공격자들은 매우 큰 Range 요청이 포함된 HTTP 요청을 전송하여 취약한 시스템을 찾으려는 것으로 알려졌습니다. 이러한 요청은 버퍼 오버플로를 유발하고 Windows 시스템을 중단시킬 수 있습니다.

사용자는 이 취약점을 해결하기 위해 Microsoft의 패치를 적용할 것을 강력히 권장합니다. 그러나 모든 프로덕션 시스템에 패치를 적용할 수 없고 NGINX 또는 NGINX Plus를 사용하여 해당 시스템으로 전달되는 트래픽을 부하 분산하거나 프록시하는 경우, 간단한 구성 변경만으로 취약한 시스템에 전송되는 특수 요청을 가로채 수정할 수 있습니다.

정찰 트래픽 식별 및 처리

Mattias Geniar는 공격 트래픽을 분석했으며 Range 헤더에 큰 바이트 범위가 지정된 HTTP 요청이 충돌을 유발한다고 보고했습니다:

GET / HTTP/1.1rnHost: stuffrn
Range: bytes=0-18446744073709551615rn
rn

가장 간단한 해결 방법은 proxy_set_header 지시어를 사용하여 Range 헤더를 ""(빈 문자열)로 설정하는 것입니다. 이렇게 하면 HTTP 요청이 proxy_pass 지시어에 지정된 Windows 서버로 전달되기 전에 해당 헤더가 사실상 삭제됩니다.

server {    listen 80;
 
    location / {
        proxy_set_header Range "";
        proxy_pass http://windowsserver:80;
    }
}

애플리케이션에서 바이트 범위 지원이 필요한 경우, map 지시어를 사용하여 큰 정수처럼 보이는 문자열을 빈 문자열로 바꾼 다음, proxy_set_header 지시어를 사용하여 Range 헤더를 설정할 수 있습니다:

map $http_range $saferange {    "~d{10,}" "";  # if it matches a string of 10 or more integers, remove it
    default $http_range;
}
 
server {
    listen 80;
 
    location / {
        proxy_set_header Range $saferange;
        proxy_pass http://windowsserver:80;
    }
}

또는 444 헤더의 값이 큰 정수처럼 보일 때 HTTP 코드 Range를 반환할 수 있습니다. 코드 444는 NGINX 및 NGINX Plus가 아무것도 반환하지 않고 클라이언트 연결을 즉시 종료하도록 지시합니다.

server {    listen 80;
 
    if ($http_range ~ "d{9,}") {
        return 444;
    }
 
    location / {
        proxy_pass http://windowsserver:80;
    }
}

안전을 위해 패치를 적용하세요. 즉시 적용할 수 없다면 NGINX와 NGINX Plus를 사용해 잠재적인 보안 허점을 차단할 수 있습니다.

NGINX Plus를 사용해 보려면 지금 30일 무료 체험을 시작하거나 데모를 위해 문의해 주세요.


공유

작성자 소개

관련 블로그 게시물

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric
NGINX | 2023. 11. 30.

시청하기: KubeCon North America 2023에서의 NGINX Gateway Fabric

이 영상에서는 KubeCon의 NGINX 부스를 찾아가, 저희가 공개한 Kubernetes Gateway API 구현을 살펴봅니다.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법
NGINX | 2023. 03. 23.

F5 NGINX로 대규모 WAF 플릿을 확인하고 관리하는 2가지 방법

앱 보안을 강화하는 두 가지 방법을 소개합니다. NGINX Management Suite를 통해 WAF 운영에 대한 가시성을 높이고, NGINX App Protect WAF를 활용해 코드형 보안을 구현하는 것입니다.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션
NGINX | 2021. 09. 27.

Ingress 컨트롤러 선택 가이드, 4부: NGINX Ingress Controller 옵션

개발 주체, 개발 철학, 프로덕션 환경 준비도, 보안 및 지원을 기준으로 어떤 NGINX Ingress 컨트롤러가 가장 적합한지 알아보세요.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법
NGINX | 2021. 07. 06.

진화하는 공격 환경에 NGINX App Protect Denial of Service가 적응하는 방법

NGINX App Protect Denial of Service(DoS)가 계층 7 DoS 공격을 방어하기 위해 완화 방법을 실시간으로 조정하는 방식을 설명합니다. 정상적인 사용자 행동과 서버 상태에 대한 모델을 생성하여 공격을 나타내는 이상 징후를 감지하고 맞춤형 완화 시그니처를 적용할 수 있습니다.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리
NGINX | 2021. 06. 30.

NGINX Instance Manager를 활용한 대규모 구성 업데이트 및 인증서 관리

NGINX Instance Manager 버전 1.0에는 두 가지 새로운 기능이 도입되었습니다. NGINX 인스턴스에 태그와 사용자 역할을 지정하면 전체 그룹에 구성을 한 번에 적용할 수 있습니다. 인증서 검사는 만료 예정인 인증서를 감지하여 서비스 중단을 방지할 수 있도록 인증서를 교체할 수 있게 해줍니다.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유
NGINX | 2015. 03. 25.

Netflix가 자사 CDN의 핵심으로 NGINX를 선택한 이유

Netflix가 글로벌 콘텐츠 전송 네트워크인 Open Connect의 스트리밍 미디어 기술로 NGINX를 선택한 이유를 NGINX 개발자 Gleb Smirnoff에게서 알아보세요.