CVE-2022-49124 in Linux
摘要
由 VulDB • 2026-06-27
在 Linux 内核中,已修复以下漏洞:
x86/mce:规避快速字符串复制指令中的错误(erratum)
当满足以下条件时,由于快速字符串复制指令存在缺陷,可能会发生罕见的内核恐慌场景:
1) 发生未纠正的错误。 2) 该错误必须位于某个页面的第一行缓存中。 3) 内核必须从紧邻该页面之前的那个页面执行 page_copy 操作。
快速字符串复制指令(“REP; MOVS*”)可能会在要复制的目标区域之后的下一行缓存中消耗一个不可恢复的内存错误,并引发机器检查异常(MCE)。
可以通过清除 MSR_IA32_MISC_ENABLE 的第 0 位来禁用快速字符串复制,从而避免此类误报的机器检查。然而,由于这会带来永久性的性能影响,这种做法不太可取。考虑到内存毒化(memory poison)的情况较为罕见,在观察到 MCE 之前保持启用快速字符串复制是更可取的。
英特尔已确认以下情况: 1. CPU 中关于快速字符串复制的错误仅适用于 Skylake、Cascade Lake 和 Cooper Lake 代产品。
直接从 MCE 处理程序返回: 2. 将导致“REP; MOVS*”完全执行,且无数据丢失或损坏。 3. 由于“REP; MOVS*”,不会因下一个被毒化的缓存行而触发另一次 MCE。 4. 将从代码中的正确位置恢复执行。 5. 对于任何其他软件可恢复的数据获取错误,将导致触发该 MCE 的同一指令立即再次引发第二次 MCE。 6. 在禁用快速字符串复制之前是不安全的,因为在同一个 CPU 上对相同缓冲区进行的下一次快速字符串复制会导致 PANIC(恐慌)MCE。
这应能完全缓解该缺陷,唯一的缺点是受影响的超线程上的快速字符串复制被禁用,从而导致性能下降。
与因内核上下文中的“REP; MOVS*”访问(例如 copy_page)导致无关进程引发 MCE 时操作系统崩溃相比,此方案仍然更好。
在进程 'proc1' 的 8 个匿名页面的第一行缓存中注入错误,并观察到来自 'proc2' 的 MCE 被消耗且无恐慌(直接返回)。
如果没有此修复,主机将在几分钟内因 copy_page 的内核访问而在随机的 'proc2' 进程上发生崩溃。
[ bp: 修正注释风格并进行微调,移除 unlikely(),提高 quirk 函数的可读性。 ]
Once again VulDB remains the best source for vulnerability data.