BGP 协议漏洞(BGP Vulnerabilities)
1. 背景与协议概览
BGP(Border Gateway Protocol) 是互联网自治系统(AS)之间的路径矢量路由协议,当前主流版本为 BGP-4。BGP 通过 TCP/179 建立邻居会话,交换 UPDATE/KEEPALIVE/NOTIFICATION/OPEN 报文,传播前缀与路径属性(attributes)。
常见路径属性(简要):
- AS_PATH:经过的 AS 列表,用于环路避免与路径选择。
- NEXT_HOP:到达该前缀的下一跳地址。
- ORIGIN、LOCAL_PREF、MED:路径度量与偏好。
- COMMUNITIES / EXTENDED / LARGE COMMUNITIES:携带策略标签(如黑洞、NO_EXPORT、流量工程等)。
- Aggregator、Atomic_Aggregate:聚合相关。
部署形态:
- eBGP(AS 之间)、iBGP(AS 内部),iBGP 依赖 Route Reflector 或 Confederation 扩展规模。
- BGP 亦用于 L3VPN/EVPN/FlowSpec 等(带来额外安全面)。
设计局限:
- 诞生于“互信”时代:缺乏内置强认证与加密;默认信任对端通告;策略复杂、易误配。
2. 威胁模型
- 被动对手:窃听路由动态、推断拓扑与策略。
- 主动对手:伪造或操纵 UPDATE;劫持/泄漏前缀;发起 DoS/资源耗尽。
- “误配置即攻击面”:运营商或企业边界的错误策略,影响可覆盖全球。
3. 漏洞与攻击分类
3.1 前缀劫持(Origin Hijack)
现象:非授权 AS 宣告原属他人的 IP 前缀,造成 MOAS(Multiple Origin AS) 或直接替代合法来源。
- 子前缀劫持(Subprefix):通告更具体前缀(/24 优先于 /23),优先级更高,杀伤力最大。
- 影响:流量黑洞、流量重定向、MITM、服务不可用、声誉损失。
3.2 路由泄漏(Route Leak)
现象:违反“山谷自由(valley-free)”的策略传播(例如把从上游/对等学到的路由,错误地再通告给上游/对等),往往由误配置或优化设备引发。
- 后果:全局收敛抖动、次优路径、大规模流量转移、拥塞乃至宕机。
3.3 会话劫持/注入(BGP Session Hijacking / Injection)
机理:BGP 基于 TCP,无加密;攻击者猜测序列号或中间人位置注入 UPDATE。
- 结果:注入伪路由、断链(发送错误 NOTIFICATION)、邻居 flap。
- 相关:TCP-MD5/TCP-AO 未普及或密钥管理薄弱;源地址与 ACL 过滤不足。
3.4 路径操纵(AS_PATH / 属性篡改)
- AS_PATH 伪造/缩短(Path Shortening):伪造“更短路径”以吸引流量。
- AS_PATH 污染/投毒(Poisoning):通过在 AS_PATH 注入特定 AS 以影响回程路径(TE/规避某 AS)。
- NEXT_HOP 劫持:篡改下一跳导致流量黑洞或转发到攻击者。
- COMMUNITY 滥用:移除/注入 NO_EXPORT、BLACKHOLE 等标签,影响传播范围或触发黑洞。
3.5 资源耗尽与收敛攻击(Control-Plane DoS)
- 大量/频繁 UPDATE 触发 BGP Churn,耗尽 CPU/内存,导致会话反复 flap、收敛变慢。
- Route Flap Damping 配置不当会放大影响(误惩罚、长时间不可达)。
3.6 RPKI/ROV 相关风险
- 误配置 ROA 导致合法前缀变为 Invalid,被下游丢弃(可造成“自残式”不可达)。
- 部分部署:仅做 Origin Validation,对路径(中转关系/泄漏)仍无力;策略不一致导致“孤岛效应”。
3.7 互联与平台特有面
- IXP Route Server:过滤/策略松散或私有 AS 未剥离,易放大泄漏范围。
- VPN/EVPN/FlowSpec:Route-Target/RTBH/FlowSpec 误下发可能造成跨租户影响或流量误封。
4. 真实攻击路线(典型场景)
- MITM via Subprefix:攻击者宣告受害者域的更具体前缀,将流量引到己方 POP,GRE/VPN 回注真实服务,用户无感但可被监控/篡改。
- 服务劫持:针对热门 DNS/加密资产/广告网络的前缀,短时劫持用于钓鱼、劫持解析或注入恶意内容。
- 误配置引发全局波及:边界路由器将上游学到的路由误传给另一个上游,形成“路由泄洪”。
5. 检测与监控
目的:尽快发现“异常来源(新 Origin AS)”“更具体前缀”“RPKI Invalid”“路径突变/AS_PATH 异常”与“泄漏模式”。
工具与数据源(示例):
- BGPStream / CAIDA、RouteViews、RIPE RIS(含 RIS Live)、Isolario:全网观测与历史分析。
- BGPalerter、ARTEMIS:本地/云端告警(MOAS、ROV 失配、前缀变更)。
- IRR/WHOIS:校验宣告是否与注册信息一致;结合 PeeringDB 做关系核验。
- Looking Glass / Route Server:快速侧证当前传播状态。
监控要点:
- 新出现的 Origin AS 或 子前缀;
- AS_PATH 过短/含非常见跳点;
- RPKI 状态变为 Invalid;
- 来自“非客户”的大批前缀/更具体前缀;
- 异常的社区(黑洞、NO_EXPORT 丢失等)。
6. 防护与缓解(分层清单)
6.1 源头治理:资源与注册
- 为所有自有前缀创建并维护 ROA(RPKI);覆盖需要的精确前缀与最大长度(maxLength)。
- 在 IRR 注册前缀与 ASN 关系,定期清理过期对象。
- 在 PeeringDB 维护准确的对等信息。
6.2 路由输入/输出边界控制
-
默认拒绝(deny-all),仅放行白名单:
- 从客户仅接受其授权前缀;
- 从对等/上游严格限制造成泄漏的路径与属性(如只收默认或限制更多具体前缀)。
- 前缀过滤:基于 RPKI + IRR 生成前缀列表;限制 max-prefix 防止洪泛。
- 剥离私有 AS、过滤 bogon、限制 AS_PATH 长度。
- 社区策略:显式允许/禁止 NO_EXPORT、BLACKHOLE 等;跨域传播前清洗未知社区。
- NEXT_HOP 验证 与 next-hop-self(避免第三方 next-hop 问题)。
6.3 RPKI/ROV 与路径安全
- 在边界路由器启用 ROV(Route Origin Validation):对 Invalid 采取 reject 或降权;Valid/Unknown 定义一致策略。
- 部署本地/集群 RPKI 验证器(如 Routinator、rpki-client、FORT),通过 RTR 协议向路由器下发 VRP。
- 关注 ASPA/BGP Roles 等(在可用时):约束 Provider/Customer/Peer 关系以减轻泄漏。
6.4 会话与平面加固
- TCP-AO/TCP-MD5 对等密钥管理与轮换;
- GTSM(TTL=255)、严格源地址 ACL;
- 针对边界设备的 控制面防护(CoPP/Policer),限制 BGP 报文速率;
- 仅允许运营所需的 TCP/179 访问,阻断未经授权主机。
6.5 变更与收敛风险控制
- 变更前模拟/影子测试(Lab:FRRouting/GoBGP/ExaBGP + containerlab/GNS3);
- 对高风险策略(如社区重写、反射器策略、聚合/去聚合)使用 渐进发布 与回滚计划;
- 审慎启用 Route Flap Damping(最小化误伤或遵循社区建议禁用)。
6.6 DDoS 相关(RTBH/FlowSpec)
- RTBH(Remote Triggered Blackhole):仅接受来自授权源的黑洞社区,限定前缀长度与最大速率;
- FlowSpec:配置匹配粒度与速率限制,避免被滥用为“全网黑洞”。
7. 运维检查清单(可直接落地)
8. 应急处置(Hijack/Leak 发生时)
- 确认事实:从多数据源(RIS/RouteViews/Looking Glass)交叉验证;记录受影响前缀、Origin、路径。
- 临时缓解:必要时宣布更具体前缀(/24)以收拢流量;与上游/对等协同下发临时过滤。
- 联系肇事方:通过 NOC/PeeringDB/WHOIS/IXP 通道,要求撤销错误宣告。
- RPKI 快速加固:若无 ROA 或 maxLength 不覆盖,立即补齐/更正;推动上游执行 ROV。
- 公开协调:必要时联系 CERT/CSIRT、行业邮件列表或社媒声明,降低次生损害。
- 复盘:补齐监控告警、完善过滤模板、更新变更流程与演练。
9. 研究与测试参考
- 开源路由栈/工具:FRRouting、GoBGP、BIRD、OpenBGPD、ExaBGP。
- 实验环境:containerlab、GNS3、EVE-NG、Mininet(结合仿真流量)。
- 分析框架:BGPStream、pybgpstream、RIS Live API、Isolario API。
10. 术语表(Glossary)
- ROA(Route Origin Authorization):授权某 AS 宣告某前缀(及最大长度)。
- ROV(Route Origin Validation):基于 RPKI 的起源校验(Valid/Invalid/Unknown)。
- MOAS:同一前缀出现多个 Origin AS。
- Valley-free:经济关系约束的传播规则(Prov/Peer/Customer)。
- RTBH:远程触发黑洞,通过社区触发丢弃。
- ASPA:声明并验证 Provider-Customer 关系(用于泄漏防护的后续机制)。