互联网跟人类社会一样,都通过特定的规则和法律来确保社会的正常运行。BGP协议就是互联网中的“规则”之一。BGP用于在不同的自治系统(AS)之间交换路由信息,当两个AS需要交换路由信息时,每个AS都必须指定一个运行BGP的节点,来代表AS与其他的AS交换路由信息。
但这些规则可能会被人为或意外打破。破坏 Internet 规则的最常见方式之一是 BGP 路由器通告不属于其自己的 AS 的前缀,也就是说,BGP路由器非法宣布特定前缀,从而将流量从其预期目的地重定向到它自己的 AS。这称为 BGP 路由劫持,也称为前缀劫持、路由劫持和 IP 劫持。
2018 年 4 月,恶意黑客公布了一些属于 Amazon Web Services 的 IP 前缀,一些试图登录加密货币网站的用户被重定向到黑客所创造的虚假网页之中,导致了超过 160,000 美元的损失。
除了恶意攻击,BGP 劫持的意外实例也可能产生严重后果。2008 年,巴基斯坦的一家 ISP 试图通过更新其 BGP 路由来审查 YouTube,由于在审查过程中配置错误,整个互联网中的YouTube 流量路全都输送到了巴基斯坦 ISP,导致了全球 YouTube 长达数小时的中断。
在了解 BGP 劫持之前,我们需要先掌握一些BGP的基础知识 。
BGP劫持之所以非常常见,很大一部分原因是因为BGP的设计者并未考虑到BGP劫持的可能性,并且默认所有 BGP “说话者”都在说真话。如果想要了解如何减轻这种风险,首先要了解 BGP 前缀通告和 BGP 劫持的工作原理。
BGP 如何通告前缀?
AS 由多个路由器组成,并在其边界内包含特定的前缀或路由,向相邻的 AS 通告。BGP 路由器在整个 Internet 中传播这些前缀,并通过各种 AS 维护到该目的地的路径,每个 AS 负责向其邻居宣布它拥有并包含在其中的前缀,BGP 路由器中维护的 BGP 表,其中包含为到达该特定前缀必须经过的 AS 路径。
例如下图:
当AS 100需要与AS170建立联系时,首先需要将自己的前缀 195.25.0.0/23 通告给相邻的 AS。这样,当该信息到达 AS 170 时,路由表中的信息将包括:
前缀:195.25.0.0/23
AS_PATH: AS100 AS190
在这个过程中,如果AS 170 收到来自具有不同路径的此前缀,则会优先选择最短路径,即绿色虚线建立联系。(如红色虚线路径更长,穿越的 AS 数量更多,假设之前所有的 BGP 属性都保持不变,会通过最短路径,也就是绿色路径进行传播。)
在 AS 边缘与其他 AS 中的 BGP 路由器形成对等互连的是外部 BGP 或 eBGP 路由器,eBGP 路由器负责向其他 AS 通告前缀。
当“敌对”AS 宣布它实际上不受控制的IP前缀的路由时,就会发生 BGP 路由劫持。例如,在下图中,AS 140 非法通告与 AS 100 相同的前缀:
AS 140 中的恶意劫持者正在宣传不属于自己的 AS 的前缀,所有其他 AS 将收到两个具有相同前缀的不同通告,后续的选择将取决于 BGP 属性。
所以,AS_PATH 长度属性在 BGP 劫持中的具有非常重要的作用,假设所有先前的属性保持不变,将安装最短 AS_PATH 的路由。如果 AS_PATH 相等,则由其他属性决定,例如最旧的路径或路由器 ID,这会导致路由的结果难以预测。在上图中,只有 AS 190 可以确保正确路由到 195.25.0.0/23 前缀。
此外,劫持者可以执行所谓的 AS_PATH 伪造,其中对目的地的通告 AS_PATH 进行修改,以便发往相关路由的流量将通过本地 AS。在这些情况下,合法 AS 包含在 AS_PATH 中,以便在将流量引导至非法 AS 时更难检测到此类劫持。
那么BGP劫持会造成什么后果,劫机者又为什么要劫持呢?
BGP劫持可能导致互联网流量出错,被监控或拦截,被“黑洞”,或者作为中间人攻击的一部分将流量导向虚假网站。此外,垃圾邮件发送者可以使用BGP劫持或实施BGP劫持的AS网络,以欺骗合法IP以进行垃圾邮件。
另外,攻击者可能执行 BGP 路由劫持的原因包括:
BGP劫持是对 Internet 上正确路由操作的一个非常真实的潜在威胁。因此,采用适当的机制和配置来防止此类攻击和事故非常重要。然而,我们并不能直接避免BGP劫持的发生,除了持续监控互联网流量如何路由之外,用户和网络可以做很少的事情来防止BGP劫持。
IP段前缀过滤
大多数网络应该只在必要时接受IP段前缀声明,并且只应将其IP前缀声明到某些网络,而不是整个Internet。这样做有助于防止意外的路由劫持,并可能使AS不接受伪造的IP前缀声明; 但是,这在实践中很难实施。
BGP劫持检测
劫持检测可以采取多种形式。基线性能的变化,例如更大的延迟、错误的流量或性能的普遍下降是可能表明某种形式的劫持的初步迹象。此外,监控广告以及记录路线的可用性和停机时间是发现劫持的重要方面。
更复杂的系统还可以分析来自邻居的公告 AS 以查看被劫持的前缀是否包含在公告中,可以识别前缀不匹配,并使用路径分析来确保正确的路由。
保护 BGP
从 1989 年BGP首次面世以来,就在不断的发展和改进。但直到在 2017 年引入 BGPsec 时,才进行了一些安全性的尝试,但尚未得到任何实质性采用。所以,就目前而言,这个 30 多年的协议本质上仍然很脆弱,需要一些复杂的监控机制来控制它。
有可能有助于打击 BGP 路由劫持的一个方面是使用路由源授权 (ROA)。ROA 是加密签名的对象,可用于验证特定前缀是否源自合法 AS。ROA 由每个 AS 所有者与区域互联网注册机构 (RIR) 合作创建,RIR 提供生成它们所需的 RPKI 基础设施。