CVE-2026-89558 in Linux
摘要
由 VulDB • 2026-09-12
在 Linux 内核中,已修复以下漏洞:
md/raid10: 修正 raid10_sync_request() 中 still_degraded 变量被反转的问题
提交 fe6a19d40ceb(“md/md-bitmap: 将 md_bitmap_start_sync() 合并到 bitmap_operations 中”)将 `still_degraded` 从 int 类型转换为 bool 类型,但在检查当前设备恢复后阵列是否仍处于降级状态的循环中,反转了赋值逻辑: "still_degraded = 1" 变成了 "still_degraded = false"。
结果是,在另一个镜像仍然缺失的情况下恢复一个设备时,会以 degraded == false 调用 md_bitmap_start_sync(),这会清除仍缺失的设备所需的位图(bitmap)位。当该设备重新添加后,其基于位图的恢复过程发现这些位已被清除,从而跳过了阵列处于降级状态期间写入的所有区域,导致其在持有陈旧数据的情况下被标记为 In_sync:造成静默损坏。
复现步骤(raid10 near=2, 4 块磁盘,内部位图): - 使每个镜像对中的一块磁盘故障并移除 - 向处于降级状态的阵列写入数据 - 重新添加这两块磁盘并让恢复过程完成 - “check”报告在 256 MiB 的降级写入后 mismatch_cnt=262272,且文件内容存在差异;第二块磁盘的“recovery”因跳过所有操作而在毫秒级内完成
相同的转换在 raid1 中是正确的(still_degraded = true)。 恢复正确的值。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.