CVE-2024-38063 — Windows IPv6 协议栈漏洞(分析与 PoC)
-red)
针对 CVE-2024-38063 的技术分析与概念验证(PoC)。该漏洞是 Windows IPv6 协议栈(tcpip.sys)中的一个严重远程代码执行(RCE)漏洞。该问题由 KunLun Lab 发现,属于零点击漏洞,意味着无需用户交互即可通过特制数据包触发。
学术背景: “网络安全基础”课程的期末项目。
演示
目录
概述
本仓库包含:
- 对该漏洞的结构化分析,
- 使用 Scapy 的 PoC 演示,
- 以及完整的课程文档和实验说明。
技术摘要
核心问题在于 tcpip.sys 在解析分片流量中的 IPv6 扩展头 时存在 整数下溢。
- 逻辑缺陷: 头部长度校验在计算过程中失败。
- 内存破坏: 下溢导致缓冲区溢出和不安全的内存写入。
- 影响: 在特定条件下可能导致 BSOD 和 RCE。
仓库内容
- CVE-2024-38063 Analysis.pdf — 涵盖背景、根本原因和缓解措施的幻灯片。
- CVE-2024-38063.py — 基于 Scapy 的 PoC 脚本(演示崩溃行为)。
- WriteUP.pdf — 完整报告、实验要求和执行说明。
实验环境搭建
要在受控的教学实验环境中复现该环境:
- 受害机: Windows 10/11 2024 年 8 月补丁之前 / 24H2 之前,已启用 IPv6。
- 攻击机: 装有 Python 3 和 Scapy 的 Linux 虚拟机。
- 网络: 两台机器位于同一网段并具备 IPv6 连通性。
PoC 逻辑(高层概述)
该 PoC 构造一系列数据包以触发下溢:
- 目标选项(Destination Options),使用无法识别的选项类型,以将流量推入错误处理路径。
- 分片 1,用于启动分片并提供载荷。
- 分片 2,用于终止该序列。
脚本会重复发送这些批次,同时改变 Hop Limit,以提高命中易受攻击解析路径的概率。
使用方法
- 确定目标 IPv6 地址。
- 更新
CVE-2024-38063.py 中的 ip_addr 和 iface。
- 从攻击机运行该脚本:
pip install scapy
pip install getmac
python3 CVE-2024-38063.py
如果目标存在漏洞,内核在处理畸形头部时通常会在 30–60 秒内触发 BSOD。
缓解措施
- 应用安全更新: Microsoft 补丁(2024 年 8 月 13 日)。
- 在无法打补丁的情况下禁用 IPv6。
- 防火墙过滤: 在网络边界阻止分片的 IPv6 数据包。
我的收获
- IPv6 头部架构: 加深了我对下一头部链式结构(逐跳选项、目标选项和分片)的理解,以及嵌套头部的复杂性如何扩大网络攻击面。
- 内核级数据包接收(
tcpip.sys): 亲身观察了 Ring 0 数据包处理过程。由于分片重组和解析发生在网络驱动深处、在到达用户态套接字之前,这一层的缺陷会绕过主机级软件控制,并实现零点击利用。
- 根本原因漏洞机理: 分析了头部长度计算中的整数下溢如何破坏指针偏移,将算术缺陷转化为越界内核内存写入和系统崩溃(BSOD)。
- 使用 Scapy 自定义构造数据包: 获得了构造不符合 RFC 规范的数据包、注入畸形目标选项 TLV(Type-Length-Value)以及编排分片顺序以迫使目标内核进入边界情况错误处理的实践经验。
免责声明
本项目仅用于教育和研究目的。未经授权测试或访问您不拥有或未获得明确评估许可的系统是违法的。作者对任何滥用行为不承担任何责任。