DirtyAH6
CVE-2026-80844 是一个影响 Linux 内核 IPv6 认证头(AH6)/ XFRM 子系统的漏洞。
该漏洞由对 IPv6 路由头 segments_left 字段验证不足引起,可能导致越界内存操作和内核内存破坏。
本仓库仅用于授权的安全研究、漏洞分析、CTF 和防御性测试。
请勿将本研究用于您不拥有或未获得明确测试许可的系统。
该漏洞存在于 IPv6 AH6 处理路径中。
受影响代码通过以下方式执行路由头操作:
net/ipv6/ah6.c
具体而言,存在漏洞的逻辑涉及:
ipv6_rearrange_rthdr()
该函数未能充分验证以下两者之间的关系:
hdrlen
与:
segments_left
因此,能够提供特制 IPv6 数据包的攻击者可以使内核在预期路由头边界之外的内存上操作。
这可能导致:
畸形 IPv6 数据包
│
▼
AH6 / XFRM 处理
│
▼
无效的路由头状态
│
▼
越界内存操作
│
▼
内核内存破坏
│
▼
潜在的权限提升
根本问题在于对 IPv6 路由头 segments_left 值验证不足。
从概念上讲,存在漏洞的条件可以表示为:
segments_left > 可用的路由头地址数
在操作相关地址数据之前,内核必须确保路由头请求的段数与实际头长度一致。
如果没有该验证,后续内存操作可能会超出有效缓冲区边界。
成功利用可能允许具备所需本地能力/环境的攻击者破坏内核内存。
潜在后果包括:
具体可利用性取决于内核配置、可用的命名空间/能力以及其他环境条件。
net/ipv6/ah6.c
相关处理:
AH6
└── IPv6 路由头
└── ipv6_rearrange_rthdr()
问题场景涉及不一致的路由头元数据。
例如,从概念上讲:
hdrlen → 描述有限数量的地址
segments_left → 声称的地址数超过可用数量
在内核执行地址重排之前,必须拒绝这种不匹配。
上游修复在内核执行存在漏洞的操作之前,引入了对路由头 segments_left 值的验证。
相关的上游提交为:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
该安全修复可以总结为:
修复前:
信任 segments_left
↓
重排地址
↓
潜在的越界访问
修复后:
验证 segments_left
↓
拒绝畸形头
↓
安全的 AH6 处理
受影响的版本取决于上游和厂商的向后移植历史。
用户应核实其发行版的安全公告,而不是仅依赖上游版本号。
已修补的上游稳定版本示例包括:
检查正在运行的内核:
uname -a
或:
uname -r
检查详细内核信息:
cat /proc/version
对于基于 Debian/Kali 的系统:
apt-cache policy linux-image-amd64
对于基于 RPM 的系统:
rpm -q kernel
发行版内核经常向后移植安全修复,而不会以明显方式更改上游版本。 请始终检查厂商公告/变更日志。
主要缓解措施是升级到包含安全修复的内核。
Debian/Kali:
sudo apt update
sudo apt full-upgrade
然后重启:
sudo reboot
验证:
uname -r
对于生产系统,在应用内核更新之前,请查阅 Linux 发行版的官方安全公告。
推荐的隔离环境:
主机
│
├── Kali Linux
│
└── 存在漏洞的 Linux 虚拟机
│
├── 调试内核
├── 启用 IPv6
├── AH6/XFRM 支持
└── 内核符号
有用的调试工具:
gdb
gef
pwndbg
crash
dmesg
pahole
objdump
readelf
内核调试:
sudo dmesg -w
检查内核符号:
cat /proc/kallsyms
CVE-2026-80844-DirtyAH6/
│
├── README.md
│
├── exploit/
│ ├── poc.c
│ └── Makefile
│
├── analysis/
│ ├── vulnerability.md
│ ├── root-cause.md
│ └── patch-analysis.md
│
├── kernel/
│ ├── vulnerable.patch
│ └── fixed.patch
│
├── docs/
│ └── research-notes.md
│
├── screenshots/
│
└── LICENSE
PoC 材料只应在隔离的实验室环境中执行。
该研究实现侧重于演示畸形 IPv6 路由头条件,并观察由此产生的内核行为。
预期研究流程:
构造畸形 IPv6 头
↓
在隔离实验室中发送
↓
AH6/XFRM 处理
↓
观察内核行为
↓
捕获 dmesg / 崩溃信息
↓
比较存在漏洞与已修补的内核
监控示例:
sudo dmesg -w
已修补的内核应拒绝畸形输入,而不会到达存在漏洞的内存操作。
该漏洞说明了为什么内核网络解析器绝不能信任攻击者提供的长度或计数字段。
安全关键的解析应遵循:
输入
↓
边界验证
↓
关系验证
↓
状态验证
↓
内存操作
而不是:
输入
↓
内存操作
↓
验证
即使两个数据包元数据字段之间只有微小不一致,也可能成为内核级内存安全漏洞。
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftLinux 内核安全研究
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
研究 • 分析 • 理解 • 加固
| 字段 | 详情 |
|---|
| CVE | CVE-2026-80844 |
| 代号 | DirtyAH6 |
| 组件 | Linux 内核 |
| 子系统 | IPv6 / XFRM / AH6 |
| 漏洞类型 | 本地权限提升 |
| 攻击向量 | 本地 |
| 攻击复杂度 | 低 |
| 所需权限 | 低 |
| 用户交互 | 无 |
| CVSS v3.1 | 7.8 — 高 |
| 受影响代码 | net/ipv6/ah6.c |
| 状态 | 已修补 |
| 内核分支 | 已修补版本 |
|---|
| 5.10 | 5.10.270 |
| 5.15 | 5.15.221 |
| 6.1 | 6.1.188 |
| 6.6 | 6.6.157 |
| 6.12 | 6.12.109 |
| 6.18 | 6.18.50 |
| 7.2 | 7.2.4 |
| 行为 | 存在漏洞的内核 | 已修补的内核 |
|---|
畸形 segments_left | 验证不足 | 已验证 |
| 路由头处理 | 可能继续 | 无效时拒绝 |
| 越界内存操作 | 可能可达 | 已阻止 |
| 内核破坏 | 可能 | 已缓解 |
| 权限提升 | 潜在 | 已缓解 |