CVE-2023-54285CVE-2023-54285是Linux内核中的一个整数溢出漏洞,位于iomap子系统的iomap_write_delalloc_scan函数中。该漏洞由于folio_next_index()函数返回的unsigned long类型值在左移PAGE_SHIFT时可能发生溢出,特别是在32位系统上。攻击者可通过触发文件系统操作来利用此漏洞,可能导致内存损坏或系统崩溃。CVSS评分7.8,属于高危漏洞。
在Linux内核的iomap子系统中,iomap_write_delalloc_scan函数负责处理延迟分配的写操作扫描。该函数调用folio_next_index()获取folio的下一个索引值,该值类型为unsigned long。当此值左移PAGE_SHIFT(通常为12)时,在32位系统上可能发生整数溢出。原始代码直接使用folio_next_index() << PAGE_SHIFT进行计算,而正确的做法是使用folio_pos(folio) + folio_size(folio),这种计算方式能够正确处理边界情况,避免溢出。攻击者需要具有本地低权限即可触发此漏洞,无需用户交互。该漏洞影响系统的机密性、完整性和可用性,可能导致攻击者提升权限或执行任意代码。