安全公告 安全公告 问题⼩结!多个实时操作系统(RTOS)和 C 标准库的堆处理函数存在整数溢出⻛险,这些漏洞被统称为 BadAlloc,完整列表⻅ https://us-cert.cisa.gov/ics/advisories/icsa-21-119-04。!•影响 当攻击者能够控制应⽤程序,按照攻击者提供的⼤⼩进⾏内存分配时,BadAlloc 漏洞即可能带来⻛险。具体来说,攻击者可以通过控制内存分配的⼤⼩,使应⽤程序在计算分配内存时出现整数算法溢出,并随后导致堆缓冲区溢出或堆损坏。!•漏洞详情 ESP-IDF 受 FreeRTOS 中以下漏洞的影响:CVE-2021-31571、CVE-2021-31572。ESP-IDF 不受 Newlib 漏洞 CVE-2021-3420 的影响。!ESP-IDF 从 v3.1.4 和 v3.2 版本起,已在堆管理例程中增加了针对此类漏洞的保护。 本公告发布之时的最早维护版本为 v3.3.x。!CVE-2021-31571 与 xQueueCreate 函数中的溢出有关,受此影响的 ESP-IDF 版本包括 v3.x、v4.0.x ⾄ v4.0.3、v4.1.x ⾄ v4.1.2、v4.2.x ⾄ v4.2.2。ESP-IDF v4.3 及之后版本不受影响。如果攻击者可以使应⽤程序调⽤ xQueueCreate 函数,并使⽤攻击者控制的元素⼤⼩ (element size) 或元素计数值 (element count) 为参数,则应⽤程序就可能受到影响。!标题有关 BadAlloc 系列漏洞的安全公告发布⽇期2021-10-27公告编号AR2021-005编号CVE-2021-3420 CVE-2021-31571 CVE-2021-31572版本V1.0/21 CVE-2021-31572 与 xStreamBufferCreate 函数中的溢出有关,受此影响的 ESP-IDF 版本仅包括以下预发布版本:v4.3-beta1、v4.3-beta2、v4.3-beta3,不包括任何现有已发布版本。与 CVE-2021-31571 的情况类似,如果攻击者可以控制 xStreamBufferCreate 函数调⽤的参数,应⽤程序就可能受到影响。 ESP-IDF 修补版本 使⽤旧版本且⽆法升级的客户可以进⾏⼿动修复,⽅法如下:!• https://github.com/FreeRTOS/FreeRTOS-Kernel/commit/47338393f1f79558f6144213409f09f81d7c4837!• https://github.com/FreeRTOS/FreeRTOS-Kernel/commit/d05b9c123f2bf9090bce386a244fc934ae44db5b$(仅适⽤于 release/v4.3 分⽀ 788312a Commit 之前的版本;在此之前或之后的版本不受影响)!给应⽤程序开发者的建议 即使不存在这些漏洞,攻击者只要能够控制应⽤程序分配内存的⼤⼩,即可通过耗尽设备内存,实现拒绝服务攻击。因此,我们建议,应⽤程序在接受来⾃不受信任设备的参数时,应⾸先进⾏清理和验证。例如,如果协议或⽂件格式包含以⻓度值作为前缀的可变⻓度数据时,则应⽤程序应在使⽤这⼀参数进⾏操作前,⽐如为数据分配缓存空间,应⾸先检查该⻓度值是否在预期范围内。ESP-IDF 分⽀Commit IDMaster639e7adrelease/v4.3788312a, 已在 IDF v4.3 中发布release/v4.2fc7bf95,已在 IDF v4.2.2 中发布release/v4.14922973,已在 IDF v4.1.2 中发布release/v4.05ba7202,已在 IDF v4.0.3 中发布release/v3.3fa00fd5,尚未在任何 v3.3 版本中发布,将会在 IDF v3.3.6 中发布。/22