课题研究 IPv6演进安全 子课题05 · 第4页 / 共8页
05子课题 · IPv6扩展头与分片安全

IPv6扩展头与分片安全第04页:重叠分片、原子分片与重组实现差异

分片重组面的核心矛盾是"规范已收紧、实现仍多样":RFC 5722禁止重叠分片并要求整包丢弃,但整包丢弃/先到优先/后到优先等策略差异至今构成设备间语义分裂的来源。本页还原原子分片的完整公案——RFC 6946为解决翻译器场景的PMTUD矛盾而引入,RFC 8021因"伪造PTB诱发原子分片→ID可预测(RFC 7739)→注入伪造分片"的旁路攻击链而宣告其生成有害并废弃。随后梳理七类分片滥用模式(微小分片、缓存灌入、多末片冲突、翻译器交互、AH次序混淆、慢速驻留等),以六个公开CVE建立实现漏洞实证库,并给出防御向的受控验证方法学与缓解体系。

重叠分片RFC 5722重组策略原子分片RFC 6946RFC 8021分片注入RFC 7739微小分片CVE-2020-16898CVE-2021-24086CVE-2022-34718
所属专题互联网基础设施安全 › IPv6演进安全
目标受众网络与安全架构师、SOC与蓝队、红队与攻防演练团队、IPv6演进负责人
全文结构8页:总览 → 扩展头架构 → 分片机制 → 重叠与原子分片 → 中间设备基线 → PMTUD信任滥用 → 威胁建模清单 → 治理路线

01 · 重叠分片:问题定义与规范处置

1.1 定义

当两个分片覆盖同一数据报的同一字节区间、且内容不一致时,即构成重叠分片(Overlapping Fragments)。重叠本身并非错误——同一区间重复到达且内容相同属于正常重传;危险在于"内容不一致的重叠":不同协议栈采用不同合并策略(先到的保留/后到的覆盖/整体丢弃),同一组分片在不同系统上可能还原出不同的字节流,为"中间设备看到A内容、终端重组出B内容"的检测绕过创造条件。

1.2 规范处置与历史脉络

  • IPv4先例:Teardrop类攻击(1990年代末)利用重叠分片令早期系统崩溃,成为拒绝服务攻击的经典教材案例——分片重组策略缺陷不是IPv6的新问题,而是IPv4时代已被反复利用的老问题的延续;
  • RFC 5722(2009年12月):明确禁止节点生成重叠分片,并要求接收方发现重叠时整包丢弃全部相关分片——从"容忍差异"转向"消灭差异空间";
  • RFC 8200整合:现行标准将5722的禁令吸收进§4.5,重叠分片在规范层面已无容身之地;但规范的收编不等于实现的一致——是否执行整包丢弃、如何判定"重叠"、边界条件(恰好相邻 vs 覆盖一字节)的处理,仍是实现质量的试金石。

事实性声明:本节所有攻击模式均在概念层描述机理与先决条件,不提供构造参数与可复现细节;重叠判定与重组策略的实验验证仅应在自有或书面授权的隔离环境中进行(见第06节实验方法)。

02 · 重组策略多样性:同类分片的不同命运

面对"内容不一致的重叠"这一规范已禁止的输入,各实现的处置并不一致——这正是重叠面在禁令之后仍然值得研究的原因:

策略行为描述安全后果
整包丢弃(RFC 5722合规)发现任何内容不一致重叠即丢弃全部相关分片最稳健;但攻击者可用重叠构造"自毁开关"——注入一个重叠分片即可令目标数据报整体报废(轻量级DoS)
先到优先(first-wins)保留先到达的区间内容,后到重叠部分忽略与"后到优先"设备组合时,同一报文呈现双重内容——IPS与终端所见可不一致
后到优先(last-wins)后到分片覆盖已缓存区间使注入的重叠分片"有效"——离线注入者只需让伪造分片后到达即可改写报文内容
部分拒绝/截断丢弃重叠部分并按剩余内容交付或报错内容截断的语义在高层协议上可能静默产生异常(如TCP校验和意外通过时的语义损坏)

学术与工业界测量长期观察到主流协议栈在重组边界行为(重叠、乱序、缺片超时、首分片缺失时的缓存策略)上存在系统性差异——这些差异本身具有双重价值:对防御方,它是远程指纹识别与异常检测的素材;对攻击方,它是构造"设备差异化处置"报文的配方库。RFC 5722的价值正在于把"策略空间"压缩为"单一合规点",压缩的彻底程度取决于实现与基线核查的执行力(第5、8页)。

03 · 原子分片:从RFC 6946到RFC 8021的完整公案

3.1 引入动机(2013年)

原子分片指携带分片头但偏移=0且M=0的报文——即"形式上分片、实质上未分片"。RFC 6946(2013年5月)引入该概念,处理场景是:当报文经过协议翻译器(SIIT/NAT64家族,RFC 6145时代)时,翻译器收到超过出口MTU的IPv4报文需要分片转发,但IPv6要求仅源节点分片——翻译器无法代劳。6946的折中方案:翻译器通过Packet Too Big通知上游,上游主机(或翻译器在特定条件下)生成带分片头的单一片报文,翻译器据此可按分片语义处理。该机制试图用"形式分片"化解"翻译器不能分片"与"PMTUD必须工作"的矛盾。

3.2 被废弃的理由(2017年)

Fernando Gont的后续分析(后以RFC 8021于2017年1月发布,标题直言"Considered Harmful")指出原子分片生成的根本缺陷——它向链路旁路攻击者开放了分片注入通道:攻击者伪造Packet Too Big即可诱使受害主机对正常数据报附加分片头发送(生成原子分片);由于原子分片会被接收端放入重组队列等待"其余分片",掌握(或可预测,见RFC 7739)Identification值的攻击者随后可注入伪造的第二分片,与原子分片重叠合并——按照"后到优先"类实现策略,报文内容即被离线改写。RFC 8021因此废弃原子分片的生成,并明确:收到MTU低于1280字节的Packet Too Big时,节点应将其视为无效(按1280处理),不得进入原子分片生成路径。RFC 8200整合了这一结论。

原子分片注入攻击链(概念示意)
旁路攻击者无需在传输路径上,仅需伪造ICMPv6与可预测的Identification
说明:攻击链为RFC 8021与RFC 7739所述机理的概念性流程;RFC 8021(2017年)已废弃原子分片生成,合规栈在第一步即应拒绝进入该路径。

3.3 现行规范状态与核查要点

  • 生成:禁止(RFC 8021);收到PTB通告MTU<1280必须按1280处理,不得触发原子分片生成;
  • 接收:RFC 6946的接收处理规则(将原子分片按未分片报文对待,同时保留重组队列行为)因生成端已消灭而仅具历史意义——但老系统、嵌入式栈可能仍保留生成逻辑,资产清查必须覆盖"是否响应小MTU PTB"这一探针维度;
  • 翻译器:SIIT实现已由RFC 7915(2016年,取代RFC 6145)规范其分片处理;对遗留NAT64部署,原子分片残留属于专项核查项。

04 · 其他分片滥用模式

模式机理(概念层)缓解锚点
微小分片类(Tiny Fragment)构造载荷极小的首分片,使过滤设备无法从首分片提取完整上层头(如TCP头仅出现前几字节,目的端口字段缺失),后续分片按五元组缺失放行——经典过滤绕过手法IPv6下RFC 7112强制首分片含完整上层头;设备执行7112并拒绝"首分片短于完整上层头"的报文即封堵
首分片缺失的缓存灌入先向目标大量发送"后续分片"(无首分片),占用重组槽位;合法首分片到达时已无资源可用——资源耗尽型限制"无首分片的后续分片"缓存配额;重组槽位/字节双限额(内核参数基线)
重叠区间注入见第01—02节:利用合并策略差异实现内容改写或设备间语义分裂RFC 5722整包丢弃+基线核查实现合规性
多末片冲突同一三元组出现多个M=0分片:部分实现取先到、部分取后到、部分丢弃——又一处"双重命运"构造原料告警并丢弃:合规实现应将其视为重叠/异常(RFC 5722精神延伸)
分片×翻译器交互分片报文穿越NAT64/SIIT时,五元组翻译与ID处理的一致性缺陷可导致状态表错乱或过滤缺口(RFC 7915规范了处理流程,实现差异仍是变量)过渡网关纳入一致性测试范围(第5页);翻译器自身加固基线(第8页)
分片×AH次序混淆AH认证覆盖"每分片首部+可分片部分"的规则若实现有误(先验后重组或反之),分片路径上的完整性校验可出现空隙IPsec实现核查:分片重组须在AH校验之前完成(RFC 4302处理顺序)
慢速分片(缓存驻留)以远低于超时阈值的速率持续供给分片,使重组状态长期驻留——低流量、高占用的隐蔽资源消耗槽位超时上限+每源配额;流量侧监测"长期未完成三元组"清单

05 · 实现漏洞实证库:协议栈解析面的公开证据

以下条目均来自CVE官方档案与Microsoft安全响应中心(MSRC)公开信息,是"设计安全≠实现安全"的实证基线。所列均为公开披露且已修复的漏洞;我们不给出利用细节,仅记录其与本课题的机制关联。

编号披露/修复机制关联
CVE-2013-31832013.10(MS13-065)Windows TCP/IP栈ICMPv6报文处理远程代码执行——报文解析面缺陷;公开分析涉及ICMPv6路径的分片处理环节,属"NDP报文×分片×选项解析"交叉面
CVE-2020-168982020.10(ADV200006)"Bad Neighbor":ICMPv6 RA携带RDNSS选项(RFC 8106)时的缓冲区溢出,可致RCE/DoS——扩展头(目的选项)内嵌选项的解析缺陷实证
CVE-2021-240862021.02Windows TCP/IP栈拒绝服务:由特制IPv6分片报文触发——分片重组路径的资源处理缺陷实证
CVE-2021-240742021.02Windows TCP/IP栈远程代码执行:IPv4源路由(Loose Source Routing)选项与分片转发组合处理的内存破坏缺陷——虽属IPv4侧漏洞,但"选项×分片交叉处理"的失效模式与本课题扩展头×分片面同构,列为机制旁证
CVE-2022-347182022.09Windows TCP/IP栈远程代码执行:向启用IPSec的Windows节点发送特制IPv6报文(ESP×分片重组路径的缓冲区溢出)即可触发——再次印证IPv6协议栈解析面是内核高危攻击面
CVE-2024-380632024.08Windows TCP/IP栈远程代码执行(CVSS 9.8):处理含目的选项/分片头的特制IPv6报文时整数下溢致堆溢出——扩展头×分片解析面的最新公开实证;无需认证与用户交互,公开PoC可致蓝屏DoS,理论可达成RCE
检索建议:其他操作系统与嵌入式栈的同类漏洞可在cve.org以"IPv6 fragment"/"ICMPv6"等关键词检索。管理动作上,IPv6相关内核补丁的评估与部署速度应纳入变更管理基线——上述五个Windows漏洞从披露到修复均在月度补丁节奏内完成,说明主流厂商的响应机制成熟,风险窗口主要存在于未打补丁期。

06 · 受控验证方法学(防御向)

  • 环境:隔离实验网段,两台以上不同协议栈的目标(如Windows/Linux/BSD各一),中间串接待测防火墙/IPS,双端抓包点(发送端镜像+接收端镜像);
  • 构造:使用Scapy等报文构造框架按"单变量变异"原则生成测试矩阵——基准合法分片基础上每次仅改一个字段(偏移±8字节、M位翻转、ID替换、首分片截断等),矩阵规模与维度设计详见第5页;
  • 观测:三视角对比——发送端视角(发出什么)、中间设备视角(转发/丢弃/告警)、接收端视角(重组结果与计数器);三者不一致即一致性缺陷证据;
  • 合规:测试速率限速(避免对设备造成无意DoS),全程留档,仅在自有或书面授权环境执行;本节不提供具体构造参数。

07 · 缓解体系小结

  • 终端基线:重叠分片整包丢弃(RFC 5722)、首分片完整性强制(RFC 7112)、原子分片生成路径移除(RFC 8021)、ID生成随机化(RFC 7739方向)、重组槽位与字节双限额、相关内核参数纳入配置管理;
  • 中间设备基线:分片会话有状态关联(首分片五元组→后续分片一致性校验)、微小分片与重叠模式检测、重组后检测(对IPS而言)、异常分片计数与告警;
  • 监测基线:四类模式(微小/重叠/多末片/首片缺失)的检出规则+资源侧计数器+PTB突增关联(与第6页衔接);
  • 管理基线:IPv6协议栈补丁节奏、实验环境季度复测、基线核查结果归档(第8页核查清单)。

本节参考来源(第4页)

以下均为真实可查的权威来源,用于支撑本页事实性表述。

[1]

IETF RFC 5722《Handling of Overlapping IPv6 Fragments》(2009年12月):rfc-editor.org/rfc/rfc5722。

[2]

IETF RFC 6946《Processing of IPv6 "Atomic" Fragments》(2013年5月):rfc-editor.org/rfc/rfc6946;RFC 8021《Generation of IPv6 Atomic Fragments Considered Harmful》(2017年1月):rfc-editor.org/rfc/rfc8021。

[3]

IETF RFC 7739《Security Implications of Predictable Fragment Identification Values》(2016年2月):rfc-editor.org/rfc/rfc7739。

[4]

IETF RFC 7112《Implications of Oversized IPv6 Header Chains》(2013年1月):rfc-editor.org/rfc/rfc7112;RFC 7045《Transmission and Processing of IPv6 Extension Headers》(2013年12月):rfc-editor.org/rfc/rfc7045。

[5]

IETF RFC 4302《IP Authentication Header》(2005年12月):rfc-editor.org/rfc/rfc4302;RFC 7915《IP/ICMP Translation Algorithm》(2016年6月,取代RFC 6145):rfc-editor.org/rfc/rfc7915。

[6]

Microsoft MSRC:CVE-2013-3183(MS13-065)、CVE-2020-16898(ADV200006)、CVE-2021-24074与CVE-2021-24086(2021年2月,另见MSRC官方博客《Multiple Security Updates Affecting TCP/IP: CVE-2021-24074, CVE-2021-24094, and CVE-2021-24086》)、CVE-2022-34718(2022年9月)、CVE-2024-38063(2024年8月):msrc.microsoft.com;CVE档案:cve.org。

[7]

SI6 Networks技术博客(Fernando Gont):原子分片与EH丢弃问题分析(2017年1月):si6networks.com。

[8]

Scapy官方文档(报文构造框架,防御测试用途):scapy.net。