跳到主要内容

5. 安全考虑 (Security Considerations)

5.1. ICMP 消息的认证和机密性 (Authentication and Confidentiality of ICMP Messages)

ICMP 协议数据包交换可以使用 IP 认证头 (IP Authentication Header) [IPv6-AUTH] 或 IP 封装安全载荷头 (IP Encapsulating Security Payload Header) [IPv6-ESP] 进行认证. ICMP 协议数据包交换的机密性可以使用 IP 封装安全载荷头 [IPv6-ESP] 实现.

[SEC-ARCH] 详细描述了 IPsec 对 ICMP 流量的处理.

5.2. ICMP 攻击 (ICMP Attacks)

ICMP 消息可能遭受各种攻击. 完整讨论见 IP 安全架构 (IP Security Architecture) [IPv6-SA]. 下文简要讨论这些攻击及其防范方式:

  1. ICMP 消息可能遭受某些行为, 其目的在于使接收方相信该消息来自一个不同于消息发起者的源. 可以通过对 ICMP 消息应用 IPv6 认证机制 [IPv6-AUTH] 来防护这种攻击.

  2. ICMP 消息可能遭受某些行为, 其目的在于使消息或其应答前往一个不同于消息发起者意图的目标. 可以使用认证头 [IPv6-AUTH] 或封装安全载荷头 [IPv6-ESP] 来防护这种攻击. 认证头为 IP 数据包的源地址和目标地址提供防篡改保护. 封装安全载荷头本身不提供这种保护, 但 ICMP 校验和计算包含源地址和目标地址, 而封装安全载荷头会保护该校验和. 因此, ICMP 校验和与封装安全载荷头的组合可对此类攻击提供保护. 封装安全载荷头提供的保护强度不如认证头提供的保护强.

  3. ICMP 消息的消息字段或负载可能被修改. 对 ICMP 消息进行认证 [IPv6-AUTH] 或加密 [IPv6-ESP] 可以防护此类行为.

  4. ICMP 消息可能被用于尝试拒绝服务攻击, 方式是连续发送错误的 IP 数据包. 正确遵循本规范第 2.4 节第 (f) 段的实现, 将受到 ICMP 错误速率限制机制的保护.

  5. 第 2.4 节规则 e.3 的例外 2 给恶意节点提供了对多播源造成拒绝服务攻击的机会. 恶意节点可以发送一个多播数据包, 其中包含被标记为强制的未知目标选项, 并使用有效多播源的 IPv6 源地址. 大量目标节点会向该多播源发送 ICMP 参数问题消息 (ICMP Parameter Problem Message), 从而造成拒绝服务攻击. 多播路由器转发多播流量的方式要求恶意节点位于正确的多播路径上, 即靠近多播源. 只有通过保护多播流量才能避免这种攻击. 多播源在发送带有标记为强制的目标选项的多播流量时应当谨慎, 因为如果大量目标无法识别该目标选项, 这些流量可能导致多播源自身遭受拒绝服务攻击.

  6. 由于 ICMP 消息会被传递给上层进程, 因此可以使用 ICMP 对上层协议, 例如 TCP, 发起攻击 [TCP-attack]. 推荐上层在根据 ICMP 消息采取行动之前, 使用 ICMP 消息负载中包含的信息对这些消息执行某种形式的验证. 实际的验证检查取决于具体上层, 超出本规范范围. 使用 IPsec 保护上层可以缓解这些攻击.

    ICMP 错误消息用于指示处理互联网数据报时遇到的网络错误状况. 根据具体场景, 所报告的错误状况可能会在短期内解决, 也可能不会. 因此, 对 ICMP 错误消息的反应不仅可能取决于错误类型和代码, 还可能取决于其他因素, 例如收到错误消息的时间, 对所报告网络错误状况的既有了解, 以及对接收主机运行所在网络场景的了解.