CVE-2025-40082CVE-2025-40082是Linux内核中hfsplus文件系统驱动的一个高危安全漏洞,CVSS评分7.1。该漏洞位于hfsplus_uni2asc()函数中,由于结构体大小不匹配导致slab-out-of-bounds越界读取漏洞。攻击者可以通过本地低权限用户触发该漏洞,利用hfsplus文件系统的扩展属性列表功能(listxattr)读取超出分配内存边界的数据。此漏洞可能导致敏感内核内存信息泄露,破坏系统机密性和完整性。漏洞影响Linux内核多个版本,建议尽快更新至安全版本以修复此问题。
该漏洞发生在Linux内核hfsplus文件系统的unicode字符串转换函数hfsplus_uni2asc()中。问题根源在于hfsplus_listxattr()调用hfsplus_uni2asc()时,传入的参数是struct hfsplus_attr_unistr*类型的结构体,但其大小与struct hfsplus_unistr*不同。KASAN检测到的slab-out-of-bounds read错误发生在fs/hfsplus/unicode.c:186位置,读取大小为2字节。攻击者可通过构造包含恶意扩展属性的hfsplus文件系统镜像,当目标系统挂载并执行listxattr系统调用时,unicode缓冲区指针会超出已分配的内存边界,导致越界读取内核堆内存数据。攻击路径为:syz.6.248进程通过listxattr系统调用,依次经过vfs_listxattr、hfsplus_listxattr,最终到达hfsplus_uni2asc函数触发漏洞。修复方案引入两个包装函数hfsplus_uni2asc_xattr_str和hfsplus_uni2asc_str分别处理两种unicode缓冲区,并在ustrlen值超过分配内存大小时限制为安全值。