В функции кодирования SignedData компании wolfSSL существует уязвимость, связанная с переполнением буфера стека. В wc_PKCS7_BuildSignedAttributes() при добавлении пользовательских подписанных атрибутов код передает неправильное значение емкости (esd->signedAttribsCount) в EncodeAttributes() вместо оставшегося доступного пространства в массиве SignedAttribs[7] фиксированного размера. Когда приложение устанавливает для pkcs7->signedAttribsSz значение, большее, чем MAX_SIGNED_ATTRIBS_SZ (по умолчанию 7) минус количество уже добавленных атрибутов по умолчанию, EncodeAttributes() записывает за пределы массива, что приводит к повреждению памяти стека.
В сборках WOLFSSL_SMALL_STACK это приводит к повреждению кучи. Для использования требуется приложение, которое позволяет ненадежному вводу контролировать размер массива SignedAttribs при вызове wc_PKCS7_EncodeSignedData() или связанных функций подписи.
Показать оригинальное описание (EN)
A stack buffer overflow vulnerability exists in wolfSSL's PKCS7 SignedData encoding functionality. In wc_PKCS7_BuildSignedAttributes(), when adding custom signed attributes, the code passes an incorrect capacity value (esd->signedAttribsCount) to EncodeAttributes() instead of the remaining available space in the fixed-size signedAttribs[7] array. When an application sets pkcs7->signedAttribsSz to a value greater than MAX_SIGNED_ATTRIBS_SZ (default 7) minus the number of default attributes already added, EncodeAttributes() writes beyond the array bounds, causing stack memory corruption. In WOLFSSL_SMALL_STACK builds, this becomes heap corruption. Exploitation requires an application that allows untrusted input to control the signedAttribs array size when calling wc_PKCS7_EncodeSignedData() or related signing functions.
Характеристики атаки
Последствия
Строка CVSS v4.0