从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 问题: 和 函数在使用uprobes时存在安全问题。 - 原因: - 这些函数最初是为kprobes设计的,使用了plain C访问内存。 - 当uprobes被添加后,这些函数被直接使用,但它们无法安全地访问用户内存。 - 三个关键问题: - 1) 平坦的C访问没有对应的可执行条目,导致在遇到故障时,内核将这些视为对用户内存的无意访问,导致内核线程崩溃。 - 2) 平坦的C访问受硬件和软件保护,任何对用户内存的模拟都会导致故障。 - 3) 平坦的C访问是特权的,只能访问一小范围的内核虚拟地址,模拟的指令必须在TTBR0地址范围内,这会导致问题。 2. 解决方案: - 避免在LDR (literal) 和 LDRSW (literal) 上使用uprobes,限制使用 和 。 - 将尝试在LDR (literal) 和 LDRSW (literal) 上放置uprobes的尝试拒绝, 将返回 。 - 未来可以考虑引入支持这些指令的uprobes,但需要更多的工作。 3. 修复和补丁: - 修复了 。 - 该补丁由Mark Rutland和Catalin Marinas签署。 - 该补丁链接到 。 4. 代码更改: - 代码更改发生在 文件中,涉及 和 函数的删除。 - 更改了 函数,以处理这些指令的uprobes。 这些信息表明,该漏洞与Linux内核中的uprobes和特定的ARM64指令模拟有关,修复了这些函数的使用,并限制了uprobes在这些指令上的使用。