Description
A stack buffer overflow exists in wolfSSL's PKCS7 implementation in the wc_PKCS7_DecryptOri() function in wolfcrypt/src/pkcs7.c. When processing a CMS EnvelopedData message containing an OtherRecipientInfo (ORI) recipient, the function copies an ASN.1-parsed OID into a fixed 32-byte stack buffer (oriOID[MAX_OID_SZ]) via XMEMCPY without first validating that the parsed OID length does not exceed MAX_OID_SZ. A crafted CMS EnvelopedData message with an ORI recipient containing an OID longer than 32 bytes triggers a stack buffer overflow. Exploitation requires the library to be built with --enable-pkcs7 (disabled by default) and the application to have registered an ORI decrypt callback via wc_PKCS7_SetOriDecryptCb().
Problem types
CWE-121 Stack-based Buffer Overflow
Product status
Any version before 5.9.1
Credits
Sunwoo Lee, (Korea Institute of Energy Technology, KENTECH)
Woohyun Choi, (Korea Institute of Energy Technology, KENTECH)
Seunghyun Yoon, (Korea Institute of Energy Technology, KENTECH)
References
github.com/wolfSSL/wolfssl/pull/10116