Переполнение буфера стека существует в реализации PKCS7 wolfSSL в функции wc_PKCS7_DecryptOri() в wolfcrypt/src/pkcs7.c. При обработке сообщения CMS EnvelopedData, содержащего получателя OtherRecipientInfo (ORI), функция копирует проанализированный ASN.1 OID в фиксированный 32-байтовый буфер стека (oriOID[MAX_OID_SZ]) через XMEMCPY без предварительной проверки того, что длина проанализированного OID не превышает MAX_OID_SZ. Созданное сообщение CMS EnvelopedData с получателем ORI, содержащим OID длиной более 32 байтов, вызывает переполнение буфера стека.
Для использования требуется, чтобы библиотека была собрана с --enable-pkcs7 (отключена по умолчанию), а приложение зарегистрировало обратный вызов расшифровки ORI через wc_PKCS7_SetOriDecryptCb().
Показать оригинальное описание (EN)
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().
Характеристики атаки
Последствия
Строка CVSS v4.0