NGINX 보안취약점 발표 (250205) - CVE-2025-23419

관리자
2025-02-07
조회수 501

* NGINX TLS session resumption vulnerability CVE-2025-23419


보안 권고 설명

TLS 1.3 및 OpenSSL을 사용하여 동일한 IP 주소 및 포트 조합을 공유하도록 이름 기반 가상 호스트를 구성하면 이전에 인증된 공격자는 세션 재개를 사용하여 이러한 서버에서 클라이언트 인증서 인증 요구 사항을 우회할 수 있습니다. 이 취약성은 TLS 세션 티켓이 사용되거나 SSL 세션 캐시가 기본 가상 서버에서 사용되고 기본 가상 서버가 클라이언트 인증서 인증을 수행할 때 발생합니다. 이 문제는 NGINX http 및 NGINX 스트림 모듈 모두에 영향을 미칩니다. (CVE-2025-23419)

영향

이 취약성으로 인해 리소스 또는 기능이 의도하지 않은 행위자에게 노출될 수 있으며, 공격자에게 중요한 정보에 대한 제한된 액세스 권한을 제공할 수 있습니다. 컨트롤 플레인 노출은 없습니다. 이는 데이터 플레인에만 해당되는 문제입니다.

참고: 이 문제는 OpenSSL을 암호화 라이브러리로 사용하여 컴파일된 NGINX OSS 및 NGINX Plus에만 영향을 미칩니다. LibreSSL 또는 BoringSSL로 컴파일된 NGINX OSS는 이 문제에 취약하지 않습니다. NGINX Plus는 OpenSSL로만 컴파일됩니다.


보안 권고 상태

NGINX Plus
- 영향받는 버전 : NGINX Plus R28-R33
- 완회버전 : NGINX Plus R33 P2 / R32 P2
- CVE Score : Medium / 4.3 (CVSS v3.1)
- 취약한 요소 : TLS 1.3 을 사용하는 서버 구성


NGINX OSS
- 영향받는 버전 : NGINX 1.11.1 - 1.27.3
- 완화 버전 : 1.27.4 / 1.26.3
- CVE Score : Medium / 4.3 (CVSS v3.1)
- 취약한 요소 : TLS 1.3 을 사용하는 서버 구성


보안 권고 권장 작업 (Mitigation)

취약한 것으로 알려진 버전 열에 나열된 버전을 실행 중인 경우 소개된 수정 사항 열에 나열된 버전을 설치하여 이 취약성을 제거할 수 있습니다.
소개된 수정 사항 열에 분기의 버전이 나열되지 않으면 현재 해당 분기에 대한 업데이트 후보가 없으며 F5 키는 수정 사항이 있는 버전으로 업그레이드하는 것이 좋습니다


완화

이 취약성을 완화하기 위해 F5 키는 지시문을 사용하여 NGINX 구성의 각 서버 블록이 고유한 IP 주소 및 포트 조합으로 구성되어 있는지 listen 하는 것이 좋습니다.
이렇게 하면 구성에 명시적으로 정의된 기본 가상 서버가 없는 경우 시스템이 SSL 세션 상태를 공유하는 것을 방지할 수 있습니다.
listen 지시문에 대한 자세한 내용은 https://nginx.org/en/docs/http/ngx_http_core_module.html#listen 를 참조하십시오. 또는 고유한 IP 주소 및 포트 조합을 사용하여 별도의 서버 블록을 구성할 수 없는 경우 클라이언트 인증을 수행하지 않는 기본 스텁 서버를 구성하는 것이 좋습니다. 또한 F5 키는 클라이언트 인증에 사용되는 서버 블록이 포함된 변수 $ssl_client_s_dn 및 $ssl_client_i_dn의 올바른 클라이언트 인증서 값에 대한 권한 부여 검사를 수행하는 것이 좋습니다.
이러한 변경을 수행할 수 없는 경우 필요에 따라 서버 구성에서 TLS 1.3을 비활성화할 수 있습니다. 이러한 절차를 수행하려면 다음 예를 참조하십시오.


#1. 기본 Stub 서버 생성

클라이언트 인증을 수행하지 않는 명시적 기본 스텁 서버를 생성

* SSL Handshake 및 클라이언트 권한 부여가 비활성화된 샘플 설정

server {
listen 443 ssl default_server;
ssl_reject_handshake on;
ssl_verify_client off;
ssl_protocols TLSv1.2 TLSv1.3;
}


#2. 클라이언트 인증서 값에 대한 권한 부여 검사 수행

$ssl_client_s_dn 및 $ssl_client_i_dn의 올바른 클라이언트 인증서 값에 대한 권한 부여 검사를 수행

* 인증서 주체 (DN) 에 대해 권한검사 수행하는 샘플 설정

server {
listen 443 ssl;
server_name example.org;

ssl_client_certificate org.crt;
ssl_verify_client on;

if ($ssl_client_s_dn != "CN=clientA,O=siteA,L=City,C=DE") {
return 403;
}
}


#3. 각 서버 블록에서 TLS 비활성화

기존 설정에 대해 변경 수행 불가능시, TLS 1.3 Disable 할 수 있습니다. ( NGINX Plus R29 및 NGINX OSS 1.23.4 부터 기본 활성화 ) 

server {
listen 443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;

...
}

Would become:

server {
listen 443 ssl;
ssl_protocols TLSv1.2;

...
}


위 내용을 토대로 NGINX 보안취약점에 대해 완화 및 패치를 진행할 수 있습니다.






0