🔍 CVE-2026-59251

7.5
CVSS Score
HIGH
2026-07-27
2026-10-24 13:10
✅ 완료

🇰🇷 한글 설명

Erlang/OTP의 public_key 모듈에서 X.509 인증서 경로 검증 시 리소스 제한 없이 정책 트리를 할당하는 취약점이 발견되었습니다. 공격자가 조작된 인증서 체인을 TLS 핸드셰이크 중에 전송하면 메모리 고갈 및 스케줄러 점유를 유발하여 서비스 거부(DoS) 상태를 만들 수 있습니다.

💡 쉬운 설명

인증서를 확인하는 과정에서 컴퓨터의 메모리를 무한정 사용하게 만드는 버그가 있습니다. 나쁜 인증서를 보내는 것만으로도 서버를 멈추게 하거나 다운시킬 수 있습니다.

🇺🇸 원문 (English)

Allocation of resources without limits in Erlang/OTP public_key certificate path validation allows a remote unauthenticated attacker to cause denial of service by sending a crafted X.509 certificate chain during the TLS handshake. During RFC 5280 policy processing in public_key:pkix_path_validation/3, the certificate policy tree maintained by pubkey_policy_tree grows without an upper bound. When a certificate chain contains M policies per certificate and K certificates, the tree grows on the order of M^K nodes because pubkey_policy_tree:add_leaves/2 and pubkey_policy_tree:add_leaf_siblings/2 extend the tree per policy per certificate. A modest chain with many policies per certificate is enough to pin BEAM schedulers and exhaust the node's memory, taking down the entire VM. The attacker only needs to be able to present a certificate chain to the victim, which is the normal precondition for a TLS handshake, so exploitation succeeds against any incoming or outgoing TLS connection that validates the peer's chain (the default for SSL/TLS clients and mutual-TLS servers). This is the same vulnerability class as OpenSSL's X509_verify_cert policy tree DoS. This vulnerability is associated with program files lib/public_key/src/pubkey_policy_tree.erl and program routines pubkey_policy_tree:add_leaves/2 and pubkey_policy_tree:add_leaf_siblings/2. This issue affects OTP from OTP 26.2 before OTP 29.0.4, OTP 28.5.0.4 and OTP 27.3.4.15, corresponding to public_key from 1.15 before 1.21.4, 1.20.3.4 and 1.17.1.5.

📍 영향받는 시스템

OTP 26.2 미만(29.0.4 미만), 28.5.0.4 미만, 27.3.4.15 미만 버전 및 관련 public_key 모듈

⚔️ 공격 벡터

TLS 핸드셰이크 과정에서 정책이 다수 포함된 조작된 X.509 인증서 체인을 전송

🛡️ 대응 방법

OTP 및 public_key 모듈을 보안 패치가 적용된 최신 버전(OTP 29.0.4, 28.5.0.4, 27.3.4.15 이상 등)으로 업데이트

🔧 검증 코드

출력된 public_key의 버전이 취약한 버전 범위(1.15 < 1.21.4, 1.20.3.4, 1.17.1.5 미만)에 해당하는지 확인

Shell / Script
erl -eval 'io:format("~s~n", [application:get_version(public_key)]), halt().' -noshell

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

OpenSSL