BGP 泄露

news2025/4/2 12:05:56

大家读完觉得有帮助记得关注和点赞!!!

目录

1. BGP 是什么?

2. 什么是 BGP 泄露?

3. 今天发生了什么?

4. 正常和被劫持状态下的路由示意图

5. 受影响区域

6. 责任在谁?

7. 有办法避免这种问题吗?


1. BGP 是什么?

互联网是由路由(routes)组成的。例如,对于我们的 DNS 解析服务器 1.1.1.1, 我们会告诉全世界:1.1.1.0 ~ 1.1.1.255 的所有 IP 地址都能够通过 Cloudflare 的 PoP 点直接访问。

没有与我们的路由器直接相连 也没关系,你仍然能收到来自中转供应商(transit providers)的路由,后者直接或间接 地与 Cloudflare 及互联网的其他部分相连,因此能够将数据包正确地发送到我们的 DNS 解 析服务器。

这就是正常情况下互联网的运行方式

世界上有几个权威机构(Regional Internet Registries, or RIRs,地区性互联网 注册机构)负责 IP 地址的分配,以避免 IP 地址有冲突。这些机构包括

  • IANA
  • RIPE
  • ARIN
  • LACNIC
  • APNIC
  • AFRINIC

2. 什么是 BGP 泄露?

CC BY 2.0 image by elhombredenegro

BGP 泄露(BGP leak)的广义定义为:

某个路由器向网络通告它拥有某段 IP 地址空间,但实际上拥有该地址空间的另有其人

中转供应商收到 Cloudflare 通告的 1.1.1.0/24 后,可以继续转发给互联网的其他部分 ,这样的行为是合法的。这些中转供应商也会用 RIR 信息来验证只有 Cloudflare 能向它 们通告这条路由

但路由通告的合法性验证可能会比较耗时,尤其是考虑到互联网目前的路由条目 (records)规模有 700K+

本质上来说,路由泄露是局部性的(route leaks are localized)。你的连接越局部( more locally connected),接受泄露的路由的风险就越低。

路由的特点

  • 前缀越精确(掩码越长),优先级越高(10.0.0.1/32 = 1 IP vs 10.0.0.0/24 = 256 IPs)
  • 前缀相同的情况下,metrics 更好(路径更短)的优先级越高

BGP 泄露通常都是配置错误导致的,例如某个路由器突然对外通告了:

  • 它学到的路由(a router suddenly announces the IPs it learned)
  • 它内部使用的某条用于流量工程(traffic engineering)的子路由(smaller prefixes)

但有时也可能是恶意行为:

  • BGP 泄露之后流量会经过通告者的路由器,这样就可以对流经的数据进行分析
  • 或者,还可以对经过的流量进行非法重放(reply illegitimately),这是以前发生过的。

3. 今天发生了什么?

Cloudflare 维护了许多 BGP collector,用于从全世界的路由器收集 BGP 信息。

在今天大约 11:05:00 UTC ~ 12:55:00 UTC,我们看到了下面这些通告:

BGP4MP|04/24/18 11:05:42|A|205.251.199.0/24|10297
BGP4MP|04/24/18 11:05:42|A|205.251.197.0/24|10297
BGP4MP|04/24/18 11:05:42|A|205.251.195.0/24|10297
BGP4MP|04/24/18 11:05:42|A|205.251.193.0/24|10297
BGP4MP|04/24/18 11:05:42|A|205.251.192.0/24|10297
...
BGP4MP|04/24/18 11:05:54|A|205.251.197.0/24|4826,6939,10297

这些 /24 的路由都是下面这些 /23 路由通告的拆分(more specifics announcements):

  • 205.251.192.0/23
  • 205.251.194.0/23
  • 205.251.196.0/23
  • 205.251.198.0/23

这些 /23 IP 空间属于 Amazon(AS16509),但从自治系统编号(ASN)可以查到, 上面的通告来自 eNet Inc(AS10297),后者通告给了它的 BGP 邻居,并转发给了 Hurricane Electric (AS6939)。

这些 IP 是 Route53 Amazon DNS 服务器的地址空间。 当请求 Amazon 的服务时,这些服务器就会响应。

在发生路由泄露的两个小时期间,这些 IP 地址只响应对 myetherwallet.com 的查询请求, 正如大家在 SERVFAIL 看到的。

Route53 处理 DNS 请求时都会去查询权威服务器,而此时由于 BGP 泄露,权威服务器已 经被接管(劫持)了。如果一个路由器接受了这些路由,那依赖这个路由器的 DNS 服务 器都会受到污染(poisoned),这其中就包括 Cloudflare DNS resolver 1.1.1.1。我们在 Chicago, Sydney, Melbourne, Perth, Brisbane, Cebu, Bangkok, Auckland, Muscat, Djibouti and Manilla 都受到了影响。而在其他地方,1.1.1.1 工作是正常的。

例如,正常情况下,下面的查询会返回正确的 Amazon IP 地址:

$ dig +short myetherwallet.com @205.251.195.239
54.192.146.xx

但在被劫持期间,这个查询返回的是某个俄罗斯供应商(AS48693 and AS41995)的 IP。需 要注意的是,不管你有没有接受被劫持的路由,你都是这次攻击的受害者,因为你用到的 DNS 服务器被污染了

如果你使用的是 HTTPS,那假网站将显示一个来自未知机构的 TLS 证书(证书中列出 的 domain 是正确的,但证书是自签名的)。但只有你点击“接受风险并继续”之后,这种攻 击才会真正起作用。从此时起,你发送的所有内容都是加密的,但攻击者有解密的秘钥。

如果你已经登录了,那你的浏览器会发送 Cookie 中的登录信息。否则,如果你在登录页面 输入账号和密码,那它们将会被发送给攻击者。

攻击者拿到登录信息后就可以合法地登录网站,转移和盗取以太币。

4. 正常和被劫持状态下的路由示意图

正常情况:

BGP 路由泄露后:

5. 受影响区域

如前文所述,AS10279 通告了这条路由。但只有部分区域(region)收到了影响。出于成本 原因,Hurricane Electric 公司在澳大利亚建设了有很多接入点。芝 加哥受到了影响,因为 AS10279 有一条物理接入点,导致了 direct peering。

下图显示了受影响和未受影响区域的收包情况(Y 轴作了归一化)。中间的丢包是因为权威 服务器不再响应我们的请求(它只响应对自己网站的请求,所有对 Amazon domain 的请求 都被无视了)。

eNet 使用的其他中转节点(CenturyLink, Cogent and NTT)似乎并未受到这条路由的影响 ,原因可能是他们设置了路由过滤,并且/或者将 Amazon 作为他们的 customer( and/or Amazon as a customer)。eNet 提供 IP 服务,因此他们的某个 customer 应该已 经通告了这条路由。

6. 责任在谁?

这次故障涉及到多方,很难说责任在谁。这其中包括:

  • ISP 通告了一个它并未拥有(own)的子网(subnet)
  • 中转供应商没有检查合法性就继续传递(relay)这个通告
  • 那些接受了这条路由的 ISP
  • DNS 解析器和 DNS 权威缺乏应有的保护
  • 部署在俄罗斯供应商上面的钓鱼网站
  • 以太坊网站并没有强制要求合法 TLS 证书
  • 虽然浏览器已经提示 TLS 非法,但用户还是点击了“接受风险并继续”

和区块链(blockchain)类似,网络的每次变动通常都是可见并被记录的(visible and archived)。RIPE 维护了用于此目的的数据库。

7. 有办法避免这种问题吗?

这个问题很难回答。业内已经有保护 BGP 安全的提案:向 RIR 数据库添加一些额外 的字段,生成一个允许源列表(a list of allowed sources):

$ whois -h whois.radb.net ' -M 205.251.192.0/21' | egrep '^route:|^origin:|source:' | paste - - - | sort
route:      205.251.192.0/23	origin:     AS16509	source:     RADB
route:      205.251.192.0/23	origin:     AS16509	source:     REACH

对于一条路由路径(the path of a route),应该以 RIR 作为信任源设置 RPKI/ROA 记录( Setting up RPKI/ROA records with the RIR as a source of truth),虽然 不是所有人都会去添加或验证这些记录。IP 和 BGP 都是几十年前发明的东西,在完整 性(integrity )和贴近真实世界方面(authenticity,没考虑到路由数量会这么多)的考虑 是不能与今天同日而语的。

但在网络层之上(on the upper levels of the network stack),有一些工作可以做:

  • DNS 方面,可以使用 DNSSEC对记录进行签名。 假的 DNS 服务器返回的 IP 是没有签名的,因为它们没有私钥。如果你使用的 Cloudflare DNS,在面板上点击几下就设置好了。
  • 对于 HTTPS,浏览器会检查网站提供的 TLS 证书。如果启用了 HSTS, 浏览器会强制要求合法证书。为一个 domain 生成一个合法 TLS 证书的唯一方式是:污染 证书权威的某个 non-DNSSEC DNS 解析器的缓存(poison the cache of a non-DNSSEC DNS resolver of the Certificate Authority)。
  • DANE 提供了一种使用 DNS 将某个证书绑定(pinning)到某个 domain 的功能
  • DNS over HTTPS 也能验证是否在与正确的解析器通信,在发生路由泄露时能区分出响应是来自 DNS 权威 还是 DNS 解析器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275959.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构与算法之二叉树: LeetCode 572. 另一棵树的子树 (Ts版)

另一棵树的子树 https://leetcode.cn/problems/subtree-of-another-tree/description/ 描述 给你两棵二叉树 root 和 subRoot检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树如果存在,返回 true ;否则,返回 false二叉树 tree …

动植物基因表达调控

1, on and off状态 以及表达的量 2, 基因调控的生物学影响? 超过400多种细胞类型,数目上37万亿 不是所有的基因都表达 为什么多核真核细胞需要基因调控? 单个细胞往多个细胞逐渐进化的过程,形成复杂的…

FreePBX 17 on ubuntu24 with Asterisk 20

版本配置: FreePBX 17(最新) Asterisk 20(最新Asterisk 22,但是FreePBX 17最新只支持Asterisk 21,但是21非LTS版本,所以选择Asterisk 20) PHP 8.2 Maria DB (v10.11) Node J…

“AI智能服务平台系统,让生活更便捷、更智能

大家好,我是资深产品经理老王,今天咱们来聊聊一个让生活变得越来越方便的高科技产品——AI智能服务平台系统。这个系统可是现代服务业的一颗璀璨明珠,它究竟有哪些魅力呢?下面我就跟大家伙儿闲聊一下。 一、什么是AI智能服务平台系…

Qt监控系统远程网络登录/请求设备列表/服务器查看实时流/回放视频/验证码请求

一、前言说明 这几个功能是近期定制的功能,也非常具有代表性,核心就是之前登录和设备信息都是在本地,存放在数据库中,数据库可以是本地或者远程的,现在需要改成通过网络API请求的方式,现在很多的服务器很强…

【网络协议】动态路由协议

前言 本文将概述动态路由协议,定义其概念,并了解其与静态路由的区别。同时将讨论动态路由协议相较于静态路由的优势,学习动态路由协议的不同类别以及无类别(classless)和有类别(classful)的特性…

安装完docker后,如何拉取ubuntu镜像并创建容器?

1. 先docker拉取ubuntu镜像 docker search ubuntu #搜索ubuntu 镜像 docker pull ubuntu:22.04 #拉取ubuntu 镜像 docker images #下载完成后,查看已经下载的镜像 docker run --name ubuntu_container -dit ubuntu:22.04 /bin/bash # docker container -l 2.…

互联网全景消息(10)之Kafka深度剖析(中)

一、深入应用 1.1 SpringBoot集成Kafka 引入对应的依赖。 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupI…

React Fiber框架中的Render渲染阶段——workLoop(performUnitOfWork【beginWork与completeWork】)

触发渲染过程——renderRoot renderRoot 是一个函数&#xff0c;用于触发渲染工作。它通常会调用并递归地执行一系列的渲染任务&#xff0c;直到完成整个更新过程。这个过程包括执行 Fiber 树中的 beginWork 和 completeWork&#xff0c;以及渲染新状态或 DOM。 function ren…

STM32F1学习——ADC模数转换器

一、ADC模数转换器 ADC的全称 Analog-Digital Converter 模拟-数字转换器&#xff0c;他可以用来将引脚上连续变换的模拟电压转换为内存中存储的数字变量。 ADC有两个重要指标&#xff0c;分辨率和频率。 STM32的ADC是 12位 逐次逼近型&#xff0c;1us转换时间&#xff0c;也就…

[每周一更]-(第131期):Go并发协程总结篇

Go语言的并发是通过协程&#xff08;goroutine&#xff09;实现的。Go协程是轻量级的线程&#xff0c;允许多个任务同时执行&#xff0c;且Go运行时会高效地管理它们。在Go中使用并发协程的方式非常简便&#xff0c;也很强大。以下是一些关于Go协程的基础用法和并发控制方法&am…

Ecdsa密钥在线生成工具

具体前往&#xff1a;ECC公钥私钥对在线生成器

llama.cpp 模型可视化工具 GGUF Visualizer

llama.cpp 模型可视化工具 GGUF Visualizer 1. GGUF Visualizer for VS Code (gguf-viz)1.1. Features1.2. Extension Settings References GGUF Visualizer https://marketplace.visualstudio.com/items?itemNameAgainstEntropy.gguf-viz 1. GGUF Visualizer for VS Code (g…

【DAPM杂谈之三】DAPM的初始化流程

本文主要分析DAPM的设计与实现 内核的版本是&#xff1a;linux-5.15.164&#xff0c;下载链接&#xff1a;Linux内核下载 主要讲解有关于DAPM相关的知识&#xff0c;会给出一些例程并分析内核如何去实现的 /**************************************************************…

HarmonyOS:@LocalBuilder装饰器: 维持组件父子关系

一、前言 当开发者使用Builder做引用数据传递时&#xff0c;会考虑组件的父子关系&#xff0c;使用了bind(this)之后&#xff0c;组件的父子关系和状态管理的父子关系并不一致。为了解决组件的父子关系和状态管理的父子关系保持一致的问题&#xff0c;引入LocalBuilder装饰器。…

Pytorch导出onnx模型并在C++环境中调用(含python和C++工程)

Pytorch导出onnx模型并在C环境中调用&#xff08;含python和C工程&#xff09; 工程下载链接&#xff1a;Pytorch导出onnx模型并在C环境中调用&#xff08;python和C工程&#xff09; 机器学习多层感知机MLP的Pytorch实现-以表格数据为例-含数据集和PyCharm工程中简单介绍了在…

git打补丁

1、应用场景 跨仓库升级 开发项目B使用的是开源项目A。开源项目A发现漏洞&#xff0c;作者进行了修复&#xff0c;我们可以通过使用git补丁的方式&#xff0c;将作者修改的内容复制到我 们的项目B中。 2、TortoiseGit方式 源仓库 格式化补丁 根据提交数量&#xff0c;生成…

计算机网络 (34)可靠传输的工作原理

前言 计算机网络可靠传输的工作原理主要依赖于一系列协议和机制&#xff0c;以确保数据在传输过程中能够准确无误地到达目的地。 一、基本概念 可靠传输指的是数据链路层的发送端发送什么&#xff0c;在接收端就收到什么&#xff0c;即保证数据的完整性、正确性和顺序性。由于网…

基于ADAS 与关键点特征金字塔网络融合的3D LiDAR目标检测原理与算法实现

一、概述 3D LiDAR目标检测是一种在三维空间中识别和定位感兴趣目标的技术。在自动驾驶系统和先进的空间分析中&#xff0c;目标检测方法的不断演进至关重要。3D LiDAR目标检测作为一种变革性的技术&#xff0c;在环境感知方面提供了前所未有的准确性和深度信息. 在这里&…

Vue3初学之常用的指令

v-bind&#xff1a;动态绑定属性 v-bind 用于动态绑定一个或多个属性&#xff0c;或一个组件 prop 到表达式的值。 v-model&#xff1a;双向数据绑定 见上篇 https://editor.csdn.net/md/?articleId145022994 v-if、v-else-if、v-else&#xff1a;条件渲染 v-show&…