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