目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2026-93164— Linux 内核 uprobes x86 代码优化

一分钟漏洞结论

影响对象
Linux Linux
利用判断
尚无明确在野利用证据,仍需结合暴露面评估
建议动作
优先检查厂商安全公告和参考链接中的修复版本;无法立即升级时,限制受影响服务暴露并加强监测。

以下是该 Linux 内核漏洞描述的中文翻译: 在 Linux 内核中,已修复以下漏洞: uprobes/x86:将优化后的 uprobe 从 nop5 迁移至 nop10 Andrii 报告了一个关于优化 uprobe [1] 的问题:当 指令将返回地址压入堆栈时,可能会破坏 x86 的红区(red zone)。由于用户代码可能在不调整 寄存器存储临时数据,这种冲突会导致内存损坏。 修复方法: 通过将优化后的 uprobe 放置在 10 字节的 指令上,我们可以挤出另一条指令,在执行 之前先离开红区。示例如下:

AI 预测 7.0 利用难度: 中等 EPSS 0.20% · P9

影响版本矩阵 6

厂商产品 版本范围状态
Linux Linux ba2bfc97b4629b10bd8d02b36e04f3932a04cac4< 1b3fecd09910040668b752f3377d7218ca5c59ac affected
ba2bfc97b4629b10bd8d02b36e04f3932a04cac4< 554ba38456dad8053a1a80afe6ae6da9eff745cc affected
6.18 affected
< 6.18 unaffected
7.2.6≤ 7.2.* unaffected
7.3-rc1≤ * unaffected
获取后续新漏洞提醒 登录后订阅

一、 漏洞 CVE-2026-93164 基础信息

漏洞信息

对漏洞内容有疑问?看看神龙的深度分析是否有帮助!
查看神龙十问 ↗

尽管我们使用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。神龙努力确保数据的准确性,但请您根据实际情况进行核实和判断。

Vulnerability Title
uprobes/x86: Move optimized uprobe from nop5 to nop10
来源: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: uprobes/x86: Move optimized uprobe from nop5 to nop10 Andrii reported an issue with optimized uprobes [1] that can clobber redzone area with call instruction storing return address on stack where user code may keep temporary data without adjusting rsp. Fixing this by moving the optimized uprobes on top of 10-bytes nop instruction, so we can squeeze another instruction to escape the redzone area before doing the call, like: lea -0x80(%rsp), %rsp call tramp Note the lea instruction is used to adjust the rsp register without changing the flags. We use nop10 and following transformation to optimized instructions above and back as suggested by Peterz [2]. Optimize path (int3_update_optimize): 1) Initial state after set_swbp() installed the uprobe: cc 2e 0f 1f 84 00 00 00 00 00 From offset 0 this is INT3 followed by the tail of the original 10-byte NOP. After a previous unoptimization bytes 5..9 may still contain the old call instruction, which remains valid for threads already there. 2) Rewrite the LEA tail and call displacement: cc [8d 64 24 80 e8 d0 d1 d2 d3] From offset 0 this traps on the uprobe INT3. Bytes 1..9 are not executable entry points while byte 0 is trapped. 3) Publish the first LEA byte: [48] 8d 64 24 80 e8 d0 d1 d2 d3 From offset 0 this is: lea -0x80(%rsp), %rsp call <uprobe-trampoline> Unoptimize path (int3_update_unoptimize): 1) Initial optimized state: 48 8d 64 24 80 e8 d0 d1 d2 d3 Same as 3) above. 2) Trap new entries before restoring the NOP bytes: [cc] 8d 64 24 80 e8 d0 d1 d2 d3 From offset 0 this traps. A thread that had already executed the LEA can still reach the intact CALL at offset 5. 3) Restore bytes 1..4 of the original NOP while keeping byte 0 trapped and byte 5 as CALL. cc [2e 0f 1f 84] e8 d0 d1 d2 d3 From offset 0 this still traps. Offset 5 is still the CALL for any thread that was already past the first LEA byte. 4) Publish the first byte of the original NOP: [66] 2e 0f 1f 84 e8 d0 d1 d2 d3 From offset 0 this is the restored 10-byte NOP; the CALL opcode and displacement are now only NOP operands. Offset 5 still decodes as CALL for a thread that was already there. Tthere is only a single target uprobe-trampoline for the given nop10 instruction address, so the CALL instruction will not be changed across unoptimization/optimization cycles. Therefore, any task that is preempted at the CALL instruction is guaranteed to observe that CALL and not anything else. Note as explained in [2] we need to use following nop10: PF1 PF2 ESC NOPL MOD SIB DISP32 NOP10: 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 -- cs nopw 0x00000000(%rax,%rax,1) which means we need to allow 0x2e prefix which maps to INAT_PFX_CS attribute in is_prefix_bad function. Also changing the uprobe syscall error when called out of uprobe trampoline to -EPROTO, so we are able to detect the fixed kernel. The optimized uprobe performance stays the same: uprobe-nop : 3.129 ± 0.013M/s uprobe-push : 3.045 ± 0.006M/s uprobe-ret : 1.095 ± 0.004M/s --> uprobe-nop10 : 7.170 ± 0.020M/s uretprobe-nop : 2.143 ± 0.021M/s uretprobe-push : 2.090 ± 0.000M/s uretprobe-ret : 0.942 ± 0.000M/s --> uretprobe-nop10: 3.381 ± 0.003M/s usdt-nop : 3.245 ± 0.004M/s --> usdt-nop10 : 7.256 ± 0.023M/s [1] https://lore.kernel.org/bpf/20260509003146.976844-1-andrii@kernel.org/ [2] https://lore.kernel.org/bpf/20260518104306.GU3102624@noisy.programming.kicks-ass.net/#t
来源: CVE Program / CVE List V5
CVSS Information
N/A
来源: CVE Program / CVE List V5
Vulnerability Type
N/A
来源: CVE Program / CVE List V5

受影响产品

厂商 产品 影响版本 CPE 订阅
Linux Linux ba2bfc97b4629b10bd8d02b36e04f3932a04cac4 ~ 1b3fecd09910040668b752f3377d7218ca5c59ac -
Linux Linux 6.18 -

二、漏洞 CVE-2026-93164 的公开POC

# POC 描述 源链接 神龙链接
AI 生成 POC 高级

未找到公开 POC。

登录以生成 AI POC

三、漏洞 CVE-2026-93164 的情报信息

请登录查看更多情报信息。

CVE-2026-93164 补丁与修复 (2)

同批安全公告 · Linux · 2026-09-17 · 共 600 条

CVE-2026-92489 9.8 CRITICAL Linux内核 xfrm 双重释放漏洞
CVE-2026-90151 9.8 CRITICAL NFSv4客户端分配失败回调处理漏洞
CVE-2026-90235 9.8 CRITICAL 内核sunrpc xprtsock并发读取修复
CVE-2026-90104 9.8 CRITICAL NFSv4.1 解码前未清空调用列表
CVE-2026-90173 9.8 CRITICAL SMB SmbDirect 释放完成队列漏洞
CVE-2026-90110 9.4 CRITICAL inetpeer 随机化RB树节点比较
CVE-2026-90230 9.1 CRITICAL Linux内核Nvme-target堆越界读取漏洞
CVE-2026-90413 9.1 CRITICAL IB/isert 登录PDU数据长度校验漏洞
CVE-2026-90414 9.1 CRITICAL IB/isert拒绝声明超出实际接收数据的PDU
CVE-2026-90425 8.8 HIGH Linux内核 5.x 内核漏洞
CVE-2026-93042 8.8 HIGH Linux内核dmaengine模块资源耗尽漏洞
CVE-2026-93189 8.8 HIGH Linux HID核心使用已释放内存漏洞
CVE-2026-90329 8.8 HIGH Linux 内核 HID 驱动探测清理同步漏洞
CVE-2026-90357 8.8 HIGH mt76驱动MT7915无线局域网远程拒绝服务漏洞
CVE-2026-90256 8.8 HIGH Linux Bluetooth L2CAP 远程代码执行漏洞
CVE-2026-90367 8.8 HIGH Linux内核MT7996驱动死锁漏洞
CVE-2026-90381 8.8 HIGH Linux内核mt76驱动无线信道切换漏洞
CVE-2026-90379 8.8 HIGH Linux 内核 mt76 驱动系统崩溃漏洞
CVE-2026-90380 8.8 HIGH MT76驱动 mt792x 使用释放后内存漏洞
CVE-2026-90371 8.8 HIGH mt76 无线驱动 RXDMAD_C 竞态修复

显示前 20 条,共 600 条。 查看全部 &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2026-93164

暂无评论


发表评论