漏洞概述 该网页总结了七个FatFs项目中的漏洞,这些漏洞的严重程度从CVSS Medium到High不等。主要问题包括: 1. FAT32整数溢出在mount_volume()中 - CVE编号: CVE-2024-6682 - 描述: 核心挂载算术中的整数溢出可能导致攻击者控制的文件大小元数据被误认为读取长度,从而引发堆栈溢出和代码执行。 2. exFAT标签长度栈溢出在f_getlabel()中 - CVE编号: CVE-2024-6687 - 描述: exFAT标签长度字段未正确截断,导致写入调用者提供的标签缓冲区,可能引发栈溢出。 3. 下游调用中的长文件名溢出 - CVE编号: CVE-2024-6685 - 描述: 启用LFN后,文件名可能比许多调用者缓冲区预期的大得多,导致溢出。 4. dirty-cache处理中的无符号减法包装 - CVE编号: CVE-2024-6685 - 描述: 在碎片化卷上,算术包装可能导致脏缓存行为和越界内存效果,表现为静默损坏。 5. sync/write路径中的exFAT除以零 - CVE编号: CVE-2024-6683 - 描述: exFAT sync/write流中的除以零条件可能导致崩溃行为,成为实际的砖化向量。 6. EOF之后的未初始化集群暴露 - CVE编号: CVE-2024-6686 - 描述: 扩展文件超出EOF时可能泄露之前删除数据中的未初始化集群,导致信息泄露。 7. GPT分区扫描循环DoS(pre-RO.16) - CVE编号: CVE-2024-6684 - 描述: GPT条目计数滥用可能导致无界扫描,造成严重的挂载时DoS。 影响范围 这些漏洞影响广泛的生态系统,包括Espressif ESP-IDF、STMicroelectronics STM32Cube中间件、Zephyr RTOS、MicroPython、Arduino、RT-Thread、Mbed、Samsung TizenRT和SWUpdate等。下游应用包括消费级IoT、工业控制器、无人机、加密钱包等。 修复方案 FAT32整数溢出: 修复核心挂载算术中的整数溢出问题。 exFAT标签长度栈溢出: 正确截断exFAT标签长度字段。 长文件名溢出: 确保文件名长度在调用者缓冲区范围内。 无符号减法包装: 修复dirty-cache处理中的算术包装问题。 exFAT除以零: 防止sync/write流中的除以零条件。 未初始化集群暴露: 避免扩展文件超出EOF时泄露未初始化数据。 GPT分区扫描循环DoS: 限制GPT条目计数,防止无界扫描。 POC代码或利用代码 页面中未提供具体的POC代码或利用代码,但提到了一个完整的qemu-based exploit示例和损坏的FatFs图像在GitHub仓库中: 总结 这些漏洞的修复需要FatFs项目的维护者进行更新,下游实现者应审计其版本、包装器、文件名和文件大小处理,并计划补丁更新。由于FatFs的广泛使用和缺乏响应,建议尽快采取安全措施。