CVE-2026-23423Linux内核btrfs子系统存在一处内存泄漏漏洞(CVE-2026-23423)。该漏洞位于`btrfs_uring_read_extent`函数中,当利用io_uring进行读取操作时,如果发生错误(如分配失败或非预期返回值),代码跳转至清理区域却未释放先前分配的'pages'对象,导致内存泄漏。本地低权限攻击者可利用此缺陷持续消耗系统内存,最终导致系统崩溃或拒绝服务。
该漏洞源于Linux内核btrfs文件系统驱动程序中的`btrfs_uring_read_extent`函数实现逻辑缺陷。在正常情况下,当使用io_uring机制读取btrfs文件数据时,该函数会分配页数组('pages'对象)用于存储数据,并期望在异步操作完成后由`btrfs_uring_read_finished()`回调函数负责释放这些内存。然而,代码未能正确处理错误路径。如果在分配'pages'之后、异步操作排队之前发生错误(例如后续分配失败,或者`btrfs_encoded_read_regular_fill_pages`返回除-EIOCBQUEUED以外的错误),函数将跳转到清理区域。虽然清理区域释放了其他分配的资源,但遗漏了对'pages'对象的释放操作。这导致在错误发生时,分配的页数组永远不会被释放,从而造成内核内存泄漏。由于该漏洞需要本地访问权限且无需用户交互,本地低权限攻击者可以通过反复触发该错误路径,耗尽系统内存,最终导致系统崩溃或拒绝服务。