🔍 CVE-2025-11187

0.0
CVSS Score
UNKNOWN
2026-01-27
2026-01-27 16:16
✅ 완료

🇰🇷 한글 설명

OpenSSL에서 PBMAC1 매개변수가 PKCS#12 파일에서 유효성 검증 없이 사용되어 스택 기반 버퍼 오버플로우, 무효 포인터 또는 NULL 포인터 참조가 발생할 수 있는 취약점

💡 쉬운 설명

OpenSSL에서 PBMAC1 매개변수가 유효성 검증 없이 사용되어 버퍼 오버플로우 또는 NULL 포인터 참조가 발생할 수 있습니다. 이는 서비스 거부 또는 코드 실행을 유발할 수 있습니다. 그러나 이는trusted PKCS#12 파일을 처리하는 어플리케이션에서 발생할 가능성이 낮습니다.

🇺🇸 원문 (English)

Issue summary: PBMAC1 parameters in PKCS#12 files are missing validation which can trigger a stack-based buffer overflow, invalid pointer or NULL pointer dereference during MAC verification. Impact summary: The stack buffer overflow or NULL pointer dereference may cause a crash leading to Denial of Service for an application that parses untrusted PKCS#12 files. The buffer overflow may also potentially enable code execution depending on platform mitigations. When verifying a PKCS#12 file that uses PBMAC1 for the MAC, the PBKDF2 salt and keylength parameters from the file are used without validation. If the value of keylength exceeds the size of the fixed stack buffer used for the derived key (64 bytes), the key derivation will overflow the buffer. The overflow length is attacker-controlled. Also, if the salt parameter is not an OCTET STRING type this can lead to invalid or NULL pointer dereference. Exploiting this issue requires a user or application to process a maliciously crafted PKCS#12 file. It is uncommon to accept untrusted PKCS#12 files in applications as they are usually used to store private keys which are trusted by definition. For this reason the issue was assessed as Moderate severity. The FIPS modules in 3.6, 3.5 and 3.4 are not affected by this issue, as PKCS#12 processing is outside the OpenSSL FIPS module boundary. OpenSSL 3.6, 3.5 and 3.4 are vulnerable to this issue. OpenSSL 3.3, 3.0, 1.1.1 and 1.0.2 are not affected by this issue as they do not support PBMAC1 in PKCS#12.

📍 영향받는 시스템

OpenSSL 3.6, 3.5, 3.4

⚔️ 공격 벡터

사용자가恶意적으로 생성된 PKCS#12 파일을 처리할 때 발생

🛡️ 대응 방법

OpenSSL을 최신 버전으로 업데이트하거나, PBMAC1 매개변수를 유효성 검증하는 패치 적용

🔧 검증 코드

이 코드는 로컬 시스템의 OpenSSL 버전을 확인하여 취약점 여부를 판단합니다. 코드 실행 전, Python이 설치되어 있어야 하며, subprocess 모듈을 사용하여 OpenSSL 버전을 확인합니다.

Shell / Script
import subprocess
result = subprocess.run(['openssl', 'version'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
version = result.stdout.decode('utf-8').split(' ')[1]
if version in ['OpenSSL 3.6', 'OpenSSL 3.5', 'OpenSSL 3.4']:
    print({"result": "취약", "reason": "OpenSSL 버전이 취약한 버전입니다."})
else:
    print({"result": "양호", "reason": "OpenSSL 버전이 취약하지 않은 버전입니다."})

💻 영향받는 소프트웨어

OpenSSL