跳到主要内容

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).