跳到主要内容

6. 安全考虑事项

Flow Label 字段位于 IPv6 头部中未受保护的部分, 这意味着路径上的任何节点都可以修改它而不被检测到. 本节讨论使用 Flow Label 字段的安全影响, 并提供关于如何缓解潜在安全风险的指导.

一般安全属性

Flow Label 具有以下安全属性:

  1. 无完整性保护: Flow Label 不受 IPv6 头部中任何校验和或认证机制覆盖. 仅检查分组无法检测 Flow Label 值的变化.

  2. 无机密性: Flow Label 值以明文传输, 可被路径上的任何节点观察到.

  3. 无认证: 没有机制可验证 Flow Label 是否由声称的源设置.

这些属性意味着, 在没有额外保护机制的情况下, Flow Label 不应用于安全关键功能.

6.1. 隐蔽信道风险

Flow Label 字段可能被用作传输信息的隐蔽信道. 攻击者可以在分组的 Flow Label 值中编码数据, 接收者则可以提取这些数据.

缓解措施

为缓解隐蔽信道风险:

  • 网络管理员 MAY 选择在安全边界处清除 Flow Label 字段 (例如在管理域边缘).

  • 安全设备 (防火墙, 入侵检测系统) SHOULD 意识到 Flow Label 字段中存在隐蔽信道的可能性.

  • 当出于安全原因必须清除 Flow Label 时, SHOULD 对所有分组一致执行, 以避免基于哪些分组被清除 Flow Label 而产生旁信道.

操作考虑事项

清除 Flow Label 字段可能影响依赖 Flow Label 的负载分布机制的性能. 网络管理员在决定是否清除 Flow Label 时, 应权衡安全收益与操作影响.

6.2. 盗用和拒绝服务

攻击者可能利用 Flow Label 字段造成拒绝服务, 或 "steal" 分配给某个流的资源.

Flow Label 猜测

如果攻击者可以猜测或观察合法流使用的 Flow Label 值, 攻击者可以:

  1. 注入分组: 发送与合法流具有相同 Flow Label, Source Address 和 Destination Address 的分组, 导致这些分组被视为该流的一部分.

  2. 资源盗用: 在基于 Flow Label 分配资源的有状态场景中, 攻击者可以通过使用与合法流相同的 Flow Label 来盗用资源.

缓解措施

为缓解这些风险:

  • 不可预测性: 源节点 SHOULD 使用伪随机函数生成 Flow Label 值, 使攻击者难以猜测合法流的 Flow Label. 该函数 SHOULD 包含秘密组成部分 (例如每主机秘密密钥), 以防止攻击者预测 Flow Label 值.

  • 速率限制: 基于 Flow Label 分配资源的节点 SHOULD 实现速率限制, 以防止资源耗尽攻击.

  • 认证: 对于需要强安全保证的流, 除 Flow Label 外还 SHOULD 使用更高层认证机制 (例如 IPsec, TLS).

通过流状态耗尽造成拒绝服务

在有状态场景中, 攻击者可以尝试创建大量具有不同 Flow Label 值的流, 从而耗尽节点的流状态存储.

缓解措施

为缓解流状态耗尽攻击:

  • 维护流状态的节点 SHOULD 对流数量和每个流的状态量实施限制.

  • 流状态 SHOULD 具有合理超时, 以防止陈旧状态累积.

  • 节点 SHOULD 实现检测并响应流状态耗尽攻击的机制, 例如对流进行优先级排序或丢弃可疑流的状态.

6.3. IPsec 和隧道交互

Flow Label 字段与 IPsec 和隧道协议存在必须考虑的特定交互.

IPsec 传输模式

在 IPsec 传输模式中, Flow Label 不受 IPsec 认证或加密保护. 即使分组的其余部分受 IPsec 保护, 攻击者也可以修改 Flow Label 而不被检测到.

IPsec 隧道模式

在 IPsec 隧道模式中, 原始 IPv6 头部 (包括 Flow Label) 被封装在新的 IPv6 头部内. 外层头部中的 Flow Label 可以不同于内层头部中的 Flow Label.

建议:

  • 外层头部 Flow Label SHOULD 基于内层头部 Flow Label 和其他字段设置, 以在穿越隧道时保留流识别属性.

  • 隧道端点 SHOULD NOT 简单地将内层 Flow Label 复制到外层 Flow Label, 因为这可能造成安全漏洞或操作问题.

其他隧道协议

类似考虑适用于其他隧道协议 (例如 GRE, L2TP). 外层头部中的 Flow Label 应以既保留流识别能力又不造成安全漏洞的方式设置.

6.4. 安全过滤交互

防火墙和入侵检测系统等安全设备可能需要基于流识别来检查分组. Flow Label 可以帮助完成这一过程, 但安全设备必须了解其限制.

防火墙考虑事项

执行有状态分组过滤的防火墙可以将 Flow Label 作为其流识别机制的一部分. 但是:

  • 防火墙 MUST NOT 仅依赖 Flow Label 作出安全决策, 因为 Flow Label 可以被伪造.

  • 防火墙 SHOULD 将 Flow Label 与其他头字段 (源和目的地址, 端口号等) 结合用于流识别.

  • 防火墙 MAY 选择对跨越安全边界的分组清除或随机化 Flow Label.

入侵检测系统

入侵检测系统 (IDS) 可以使用 Flow Label 跟踪流并检测异常. 但是:

  • IDS 系统 MUST 意识到 Flow Label 可以被攻击者修改.

  • IDS 系统 SHOULD 将 Flow Label 作为众多指标之一, 而不是作为决定性标识符.

  • IDS 系统 SHOULD 能够检测 Flow Label 使用中的异常, 例如流内 Flow Label 值发生意外变化.

小结

Flow Label 字段为流识别和负载分布提供了有用功能, 但其安全属性有限. 实现应:

  • 使用不可预测的 Flow Label 值以防止猜测攻击.
  • 不仅依赖 Flow Label 作出安全关键决策.
  • 意识到隐蔽信道的可能性并采取适当缓解措施.
  • 考虑与 IPsec 和隧道协议的交互.
  • 在需要强安全保证时使用更高层安全机制 (IPsec, TLS).