arm64:探测:修复大端内核的 uprobes(CVE-2024-50194)

admin 2024-11-10 19:27:52 Ali_nvd 来源:ZONE.CI 全球网 0 阅读模式
arm64:探测:修复大端内核的 uprobes(CVE-2024-50194)

CVE编号

CVE-2024-50194

利用情况

暂无

补丁情况

N/A

披露时间

2024-11-08
漏洞描述
在Linux内核中,已经解决了以下漏洞:针对大端架构的arm64的uprobes代码存在问题。由于它并未将在内存中的指令编码(始终为小端)转换为内核的本机字节序进行分析和模拟指令,这可能导致几个不同的问题:1. 内核可能会错误地拒绝探测一个其实可以安全探测的指令。2. 内核可能会错误地允许一个无法安全跳过的指令被跳过。3. 由于错误地解释了字节顺序颠倒的编码,内核可能会错误地模拟指令。编译器和稀疏工具未能捕获到字节序的不匹配问题,因为:* arch_uprobe::{insn,ixol}字段被编码为u8数组,因此编译器和稀疏工具并不知道这些字段包含一个小端32位值。核心uprobes代码使用memcpy()填充这些字段,同样不处理字节序问题。* 虽然uprobe_opcode_t类型是__le32的别名,但arch_uprobe_analyze_insn()和arch_uprobe_skip_sstep()函数将u8[]转换为同样命名的probe_opcode_t(别名为u32),因此没有进行字节序转换警告。通过改变arch_uprobe::{insn,ixol}字段为__le32,并在消费指令编码之前添加适当的__le32_to_cpu()转换来解决这个问题。核心uprobes会将这些字段复制为不透明的字节范围,因此这个改变不会对其产生影响。同时,移除MAX_UINSN_BYTES,为了清晰一致地使用AARCH64_INSN_SIZE。使用以下代码进行了测试:测试代码中包含一个名为adrp_self的函数,该函数使用汇编语言进行 adrp(取地址寄存器指针)操作。在函数被编译后,对其进行了跟踪调试。在修复漏洞之前,ADRp指令无法被正确识别并模拟,导致结果出现错误。在修复漏洞后,ADRp指令被正确识别并模拟。测试结果表明漏洞修复后的内核能够正确处理和模拟adrp指令。
解决建议
"将组件 Linux 升级至 4.10 及以上版本"
参考链接
https://git.kernel.org/stable/c/13f8f1e05f1dc36dbba6cba0ae03354c0dafcde7
https://git.kernel.org/stable/c/14841bb7a531b96e2dde37423a3b33e75147c60d
https://git.kernel.org/stable/c/3d2530c65be04e93720e30f191a7cf1a3aa8b51c
https://git.kernel.org/stable/c/8165bf83b8a64be801d59cd2532b0d1ffed74d00
https://git.kernel.org/stable/c/b6a638cb600e13f94b5464724eaa6ab7f3349ca2
https://git.kernel.org/stable/c/cf60d19d40184e43d9a624e55a0da73be09e938d
https://git.kernel.org/stable/c/cf9ddf9ed94c15564a05bbf6e9f18dffa0c7df80
https://git.kernel.org/stable/c/e6ab336213918575124d6db43dc5d3554526242e
受影响软件情况
# 类型 厂商 产品 版本 影响面
1
运行在以下环境
系统 debian_12 linux * Up to (excluding) 6.1.115-1
CVSS3评分 N/A
  • 攻击路径 N/A
  • 攻击复杂度 N/A
  • 权限要求 N/A
  • 影响范围 N/A
  • 用户交互 N/A
  • 可用性 N/A
  • 保密性 N/A
  • 完整性 N/A
N/A
CWE-ID 漏洞类型
- avd.aliyun.com
weinxin
版权声明
本站原创文章转载请注明文章出处及链接,谢谢合作!
评论:0   参与:  0