CVE-2025-69419
PKCS12_get_friendlyname() UTF-8 변환의 경계를 벗어난 쓰기(Out-of-bounds write) 취약점
- 게시됨
- 2026. 1. 27.
- 업데이트됨
- 2026. 5. 12.
- CNA 할당 중
- openssl
- 증거 관찰됨
- 2026. 8. 28.
기본 CVSS
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N낮음 · 다음 30일
- 백분위수
- 46.0%
- 모델 날짜
- 2026. 9. 21.
EPSS는 통계적 추정치이지 확실성이나 영향의 척도가 아닙니다. 이를 CVSS, KEV 상태, 노출 및 환경과 결합하세요.
요약
Issue summary: 악의적으로 제작된 PKCS#12 파일에서 BMPString(UTF-16BE) 형식의 friendly name에 비-ASCII BMP 코드 포인트가 포함된 경우, PKCS12_get_friendlyname() 함수를 호출하면 할당된 버퍼 앞에 1바이트를 쓰는 현상이 발생할 수 있습니다. Impact summary: 버퍼 경계를 벗어난 쓰기는 메모리 손상을 유발할 수 있으며, 이는 서비스 거부(Denial of Service)를 포함한 다양한 결과를 초래할 수 있습니다. OPENSSL_uni2utf8() 함수는 PKCS#12 BMPString(UTF-16BE)을 UTF-8로 변환하기 위해 두 번의 패스를 수행합니다. 두 번째 패스에서 UTF-8 바이트를 생성할 때, 헬퍼 함수 bmp_to_utf8()은 남은 UTF-16 소스 바이트 수를 대상 버퍼 용량으로 잘못 전달하여 UTF8_putc()에 넘깁니다. U+07FF보다 큰 BMP 코드 포인트의 경우 UTF-8은 3바이트가 필요하지만, 전달된 용량은 2바이트에 불과할 수 있습니다. 그러면 UTF8_putc()이 -1을 반환하고, 이 음수 값은 검증 없이 출력 길이에 더해져 길이가 음수가 됩니다. 이후 후행 NUL 바이트가 음수 오프셋에 기록되어 힙에 할당된 버퍼 밖에 쓰기가 발생합니다. 이 취약점은 공격자가 제어하는 PKCS#12 파일을 파싱할 때 공개 API인 PKCS12_get_friendlyname()을 통해 도달할 수 있습니다. PKCS12_parse()는 이 문제를 회피하는 다른 코드 경로를 사용하지만, PKCS12_get_friendlyname()은 취약한 함수를 직접 호출합니다. 악용하려면 공격자가 애플리케이션이 파싱하도록 악성 PKCS#12 파일을 제공해야 하며, 공격자는 할당된 버퍼 앞에 1바이트의 0(zero) 쓰기만 트리거하면 됩니다. 이러한 이유로 이 문제는 당사의 보안 정책에 따라 낮음(Low) 심각도로 평가되었습니다. 3.6, 3.5, 3.4, 3.3 및 3.0의 FIPS 모듈은 PKCS#12 구현이 OpenSSL FIPS 모듈 경계 밖에 있으므로 이 문제의 영향을 받지 않습니다. OpenSSL 3.6, 3.5, 3.4, 3.3, 3.0 및 1.1.1은 이 문제에 취약합니다. OpenSSL 1.0.2는 이 문제의 영향을 받지 않습니다.
소스
1CVE-2025-69419에 대한 최소한의 개념 증명 재현기입니다. 이는 조작된 BMPString에 의해 트리거되는 OpenSSL의 PKCS12_get_friendlyname() 함수의 힙 버퍼 오버플로우입니다. 회귀 테스트 및 보안 연구용으로 설계되었습니다.
책임 있는 사용
귀하가 소유하고 있거나 테스트할 권한이 있는 시스템에 대해서만 취약점 정보를 사용하십시오. Kitploit은 공개 연구 메타데이터에 연결되며 익스플로잇 코드나 악성 페이로드를 저장하지 않습니다.