DirtyAH6
CVE-2026-80844 是一个影响 Linux 内核 IPv6 认证头(AH6)/ XFRM 子系统的漏洞。
该漏洞源于对 IPv6 路由头 segments_left 字段的校验不足,
可能导致越界内存操作
以及内核内存破坏。
本仓库仅用于经授权的安全研究、漏洞 分析、CTF 以及防御性测试。
请勿将本研究用于您不拥有或未获得明确 测试许可的系统。
| 字段 | 详情 |
|---|---|
| CVE | CVE-2026-80844 |
| 代号 | DirtyAH6 |
| 组件 | Linux 内核 |
| 子系统 | IPv6 / XFRM / AH6 |
| 漏洞类型 | 本地权限提升 |
| 攻击向量 | 本地 |
| 攻击复杂度 | 低 |
| 所需权限 | 低 |
| 用户交互 | 无 |
| CVSS v3.1 | 7.8 — 高 |
| 受影响代码 | net/ipv6/ah6.c |
| 状态 | 已修补 |
该漏洞存在于 IPv6 AH6 处理路径中。
受影响的代码通过以下方式执行路由头操作:
net/ipv6/ah6.c
具体而言,易受攻击的逻辑涉及:
ipv6_rearrange_rthdr()
该函数未能充分验证以下两者之间的关系:
hdrlen
和:
segments_left
因此,能够提供特制 IPv6 数据包的攻击者可以使内核在预期路由头边界之外的内存上操作。
这可能导致:
Malformed IPv6 packet
│
▼
AH6 / XFRM processing
│
▼
Invalid routing-header state
│
▼
Out-of-bounds memory operation
│
▼
Kernel memory corruption
│
▼
Potential privilege escalation
根本问题在于对 IPv6 路由头 segments_left 值的验证不足。
从概念上讲,该漏洞条件可以表示为:
segments_left > available routing-header addresses
内核必须确保路由头所请求的段数与实际头长度一致,然后再操作相关的地址数据。
如果没有这种验证,后续的内存操作可能会超出有效缓冲区边界。
成功利用可能允许具备所需本地能力/环境的攻击者破坏内核内存。
潜在后果包括:
具体的可利用性取决于内核配置、可用的命名空间/能力以及其他环境条件。
net/ipv6/ah6.c
相关处理:
AH6
└── IPv6 Routing Header
└── ipv6_rearrange_rthdr()
问题场景涉及不一致的路由头元数据。
例如,从概念上讲:
hdrlen → describes a limited number of addresses
segments_left → claims more addresses than are available
这种不匹配必须在内核执行地址重排之前被拒绝。
上游修复在内核执行易受攻击的操作之前,为路由头部的 segments_left 值引入了验证。
相关的上游提交为:
7bad4bda74dc4713f398d3b7624ff05478e3a568
xfrm: ah6: validate routing header segments_left
安全修复可概括为:
Before:
Trust segments_left
↓
Rearrange addresses
↓
Potential OOB access
After:
Validate segments_left
↓
Reject malformed header
↓
Safe AH6 processing
受影响的版本取决于上游和厂商的向后移植历史。
用户应核实其发行版的安全公告,而不是仅依赖上游版本号。
已修复的上游稳定版本示例包括:
| 内核分支 | 已修复版本 |
|---|---|
| 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 |
检查正在运行的内核:
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 发行版的官方安全公告。
推荐的隔离环境:
Host
│
├── Kali Linux
│
└── Vulnerable Linux VM
│
├── Debug kernel
├── IPv6 enabled
├── AH6/XFRM support
└── Kernel symbols
有用的调试工具:
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 路由头条件,并观察由此产生的内核行为。
预期的研究工作流程:
Craft malformed IPv6 header
↓
Transmit inside isolated lab
↓
AH6/XFRM processing
↓
Observe kernel behavior
↓
Capture dmesg / crash information
↓
Compare vulnerable vs patched kernel
示例监控:
sudo dmesg -w
打过补丁的内核应当拒绝畸形输入,而不会触及存在漏洞的内存操作。
| 行为 | 存在漏洞的内核 | 已修补的内核 |
|---|---|---|
畸形的 segments_left | 验证不足 | 已验证 |
| 路由头处理 | 可能继续 | 无效时拒绝 |
| 越界内存操作 | 可能可达 | 已阻止 |
| 内核损坏 | 可能 | 已缓解 |
| 权限提升 | 潜在 | 已缓解 |
此漏洞说明了为什么内核网络解析器绝不能信任攻击者提供的长度或计数字段。
安全关键的解析应遵循:
Input
↓
Bounds validation
↓
Relationship validation
↓
State validation
↓
Memory operation
而不是:
Input
↓
Memory operation
↓
Validation
即使两个数据包元数据字段之间只有很小的不一致,也可能演变成内核级的内存安全漏洞。
7bad4bda74dc4713f398d3b7624ff05478e3a568xfrm: ah6: validate routing header segments_leftLinux 内核安全研究
CVE-2026-80844 · IPv6 · AH6 · XFRM · LPE
研究 • 分析 • 理解 • 加固