从这个网页截图中,我们可以获取到以下关于漏洞的关键信息: 1. 漏洞描述: - 函数: 和 。 - 问题:这些函数在使用uprobes时存在安全问题,因为它们使用了plain C访问内存,而这些访问在用户内存中是不安全的。 2. 问题详细说明: - 问题1:plain C访问没有对应的可表项,导致在遇到故障时,内核会将其视为对用户内存的不意图访问,从而导致内核线程崩溃。 - 问题2:plain C访问受硬件和软件页表影响,导致在使用uprobes时无法模拟对用户内存的访问。 - 问题3:plain C访问是特权指令,只能访问一小范围的内核虚拟地址,而模拟的指令必须在TTBR0地址范围内,这可能导致在TTBR1地址范围的最后1MiB中发生错误。 3. 解决方法: - 避免使用uprobes:不使用uprobes来模拟LDR (literal) 和 LDRSW (literal) 指令。 - 限制使用:限制使用 和 。 - 考虑未来:在未来考虑引入uprobes支持,但这需要更多的工作。 4. 修复和相关链接: - 修复:9842ceae9fa8 ("arm64: Add uprobe support")。 - 相关链接:https://lore.kernel.org/r/20241008155851.801546-2-mark.rutland@arm.com 5. 代码差异: - 文件: 。 - 差异:删除了对LDR (literal) 和 LDRSW (literal) 指令的模拟支持。 这些信息表明,该漏洞与Linux内核中的uprobes功能有关,特别是与模拟LDR (literal) 和 LDRSW (literal) 指令时的安全问题有关。修复措施包括限制这些模拟指令的使用,并在未来考虑引入uprobes支持。