在BGP AS_PATH中强制实施首个AS路径
速览
该研究关注BGP协议中的AS_PATH属性,提出了一种强制实施首个AS路径的方法。此举旨在提升网络路由的安全性和可靠性,防止潜在的路由劫持和欺骗攻击。
AI 深度解读
强制验证 BGP AS_PATH 中的“第一 AS”:防御路由劫持的关键防线
背景
近期,安全研究公司 Spamhaus 报告的一系列路由劫持事件引起了 Cloudflare 的密切关注。在这些劫持尝试中,攻击者利用了未被使用的自治系统编号(ASN),通过伪造 BGP AS_PATH(自治系统路径)来误导流量,使其偏离正常路径。
攻击者的主要目的通常有两个:一是将流量引导至非预期的目的地,二是隐藏其真实身份。通过剥离网络路径中的关键信息,攻击者可以伪装成 BGP 前缀的原始来源(Origin)。一旦劫持成功,攻击者便能拦截流量并实施其他恶意行为。
尽管存在诸如 RPKI(资源公钥基础设施)和 ASPA(自治系统提供商授权)等安全机制,但攻击者仍可能通过伪造路径来绕过这些验证。本文旨在探讨一种简单但常被忽视的防御手段:强制验证 BGP 对等体(Peer)在通告路由时,其自身的 ASN 是否始终作为 AS_PATH 中的“第一 AS”出现。
核心内容
伪造路径的识别与分析
通过深入分析 implausible(不合逻辑)的 AS 关系,我们可以确认攻击者正在创建伪造的 AS_PATH。以 Spamhaus 报告的一个涉及法国电信公司 Orange S.A. 前缀的劫持案例为例,使用 monocle 工具捕获的 BGP UPDATE 消息显示如下路径:
as_path: "48237 1299 199524 270118 17072 41128"
在此路径中:
- AS1299 (Arelion) 是 Tier 1 网络,意味着路径右侧的所有 AS 均描述为上游(客户到提供商)关系。
- 这暗示 AS17072 是 AS41128 的传输提供商,AS270118 是 AS17072 的提供商,AS199524 是 AS270118 的提供商。
然而,查看这些网络的实际归属后,这种关系显得极其荒谬:
- AS41128:Orange France 的一个未使用的 ASN。
- AS17072:一家主要位于墨西哥的 ISP。
- AS270118:一家位于墨西哥的主机托管提供商。
- AS199524 (Gcore):一家在全球拥有对等连接存在的提供商。
上述 AS 顺序暗示一个未使用的 Orange France ASN 正在向墨西哥 ISP 购买传输服务,再向上游传输至 Gcore 和 Tier 1 提供商,这在商业逻辑上完全说不通。
另一个典型案例:Cloudflare 的 ASN 被滥用
在另一例针对前缀 47.1.0.0/16 和 47.2.0.0/16(原始来源为 AS36429)的劫持中,攻击者在 AS_PATH 中甚至包含了 Cloudflare 的主要 ASN 13335,路径为:"199524 270118 17072 13335 36429"。
Cloudflare 权威确认:
- 我们与现已被 Charter 拥有的未使用 ASN
AS36429没有任何邻接关系。 - 因此,这是一条伪造路径,攻击者将 Cloudflare 的 ASN 作为虚假的上游网络之一,向 Gcore (AS199524) 传播。
- Spamhaus 指出,所有劫持路由最终都指向 Gcore 在芝加哥对等互联后的网络,流量实际上并未经过墨西哥 ISP 或 Cloudflare 的网络。
基于此,我们可以合理推断,这些路径在到达最左侧的公共 AS(即 AS199524)之前都是伪造的。攻击者的策略如下:
- 为“停放”的前缀生成 BGP 通告。
- 完全伪造 AS_PATH,不包含攻击者自己的本地 ASN。
- 将这些路由通告给 Gcore (AS199524)。
在此过程中,Gcore 似乎跳过了对“第一 AS”与预期客户 ASN 匹配的验证和强制执行步骤,导致伪造路径被接受并向上游传播。
为什么 RPKI 和 ASPA 不够?
虽然 ASPA 有助于使这些伪造路径无效,但攻击者可以通过仅包含 RPKI-ROV 有效的原始 ASN 或合法的 ASPA 上游 ASN 来绕过它。要阻止此类特定劫持,必须依赖 BGP 中已有的另一种保护机制:First AS 检查与强制执行。
“第一 AS”检查的重要性
互联网路由类似于物流包裹的运输,AS_PATH 记录了处理该包裹的每个“承运人”(网络)。BGP 利用 AS_PATH 进行路径选择、环路预防以及基于运营商配置的路由策略。
然而,BGP 建立在信任基础之上,AS_PATH 容易被操纵:
- 合法用途:AS 预置(AS Prepending)以移动流量。
- 恶意用途:缩短路径以人为吸引流量或执行起源攻击。
案例 1:伪造起源攻击
- 场景:AS64506 拥有有效的 RPKI ROA 记录,并配置了 ASPA,指定仅 AS64503 为其有效提供商。
- 攻击:攻击者运行 AS64505,操纵其 AS_PATH 以剥离 AS64505 自身,并声称自己是 AS64506。
- 漏洞:下游提供商 AS64502 未强制执行 First AS 检查。
- 结果:路由看起来符合 RPKI-ROV 验证且路径最短。由于路径
64502 64506中没有出现“山谷”(Valley,即下游到上游再到下游的非法拓扑),ASPA 验证也不会报错。AS64505 通过不包含自身 ASN,伪装成 AS64506,成功劫持了流量。 - 解决方案:如果 AS64502 强制执行 First AS 检查,它会发现来自 AS64505 的路由其第一 AS 并非 AS64505(而是 AS64506),从而丢弃该路由。
案例 2:缩短 AS_PATH 以吸引流量
- 场景:AS64506 有两个传输提供商:AS64503 和 AS64505。AS64505 按流量使用比例向客户 AS64506 收费。
- 攻击:AS64505 从路径中剥离自身,其对等体 AS64504 未强制执行 First AS 检查。
- 结果:BGP 路径选择算法现在将通过 AS64504 的路由选为最佳路径。AS64506 仍需向 AS64503 和 AS64505 支付费用,但由于 AS64505 提供了更短的 BGP 路径,所有流量都经由 AS64505 处理,导致 AS64505 获得全部收益,而 AS64503 一无所获。
- 解决方案:强制执行接收到的 AS_PATH 中的“第一 AS”必须与对等体 ASN 匹配。
关键要点
- 伪造路径的普遍性:攻击者利用未使用的 ASN 和伪造的 AS_PATH 进行路由劫持,试图隐藏身份并误导流量。
- 逻辑矛盾是识别关键:通过分析 AS_PATH 中的 AS 关系(如 Tier 1 网络的位置、地理分布、商业逻辑),可以发现不合逻辑的路径(如未使用的 ASN 向墨西哥 ISP 购买传输服务)。
- First AS 检查是基础防线:BGP 对等体在通告路由时,
