BGP 泄露

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

目录

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.mzph.cn/diannao/66911.shtml

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

相关文章

wireshark排除私接小路由

1.wireshark打开,发现了可疑地址,合法的地址段DHCP是192.168.100.0段的,打开后查看发现可疑地址段,分别是,192.168.0.1 192.168.1.174 192.168.1.1。查找到它对应的MAC地址。 ip.src192.168.1.1 2.通过show fdb p…

使用 CompletableFuture 实现异步编程

在现代 Java 开发中,异步编程是一项重要技能。而 CompletableFuture 是从 Java 8 开始提供的一个功能强大的工具,用于简化异步任务的编写和组合。本文将详细介绍 CompletableFuture 的基本使用和一些常见的应用场景。 1. 为什么选择 CompletableFuture&…

AWS云计算概览(自用留存,整理中)

目录 一、云概念概览 (1)云计算简介 (2)云计算6大优势 (3)web服务 (4)AWS云采用框架(AWS CAF) 二、云经济学 & 账单 (1)定…

【江协STM32】10-4/5 I2C通信外设、硬件I2C读写MPU6050

1. I2C外设简介 STM32内部集成了硬件I2C收发电路,可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能,减轻CPU的负担支持多主机模型支持7位/10位地址模式支持不同的通讯速度,标准速度(高达100 kHz),快速…

Web开发中页面出现乱码的解决(Java Web学习笔记:需在编译时用 -encoding utf-8)

目录 1 引言2 乱码表现、原因分析及解决2.1 乱码表现2.2 原因分析2.3 解决 3 总结 1 引言 Web开发的页面出现了乱码,一直不愿写出来,因为网上的解决方案太多了。但本文的所说的页面乱码问题,则是与网上的大多数解决方案不一样,使…

分类模型为什么使用交叉熵作为损失函数

推导过程 让推理更有体感,进行下面假设: 假设要对猫、狗进行图片识别分类假设模型输出 y y y,是一个几率,表示是猫的概率 训练资料如下: x n x^n xn类别 y ^ n \widehat{y}^n y ​n x 1 x^1 x1猫1 x 2 x^2 x2猫1 x …

【AUTOSAR 基础软件】软件组件的建立与使用(“代理”SWC)

基础软件往往需要建立一些“代理”SWC来完成一些驱动的抽象工作(Complex_Device_Driver_Sw或者Ecu_Abstraction_Sw等),或建立Application Sw Component来补齐基础软件需要提供的功能实现。当面对具体的项目时,基础软件开发人员还可…

【Linux】sed编辑器二

一、处理多行命令 sed编辑器有3种可用于处理多行文本的特殊命令。 N:加入数据流中的下一行,创建一个多行组进行处理;D:删除多行组中的一行;P:打印多行组中的一行。 1、next命令:N 单行next命…

HTML5 网站模板

HTML5 网站模板 参考 HTML5 Website Templates

数据链路层-STP

生成树协议STP(Spanning Tree Protocol) 它的实现目标是:在包含有物理环路的网络中,构建出一个能够连通全网各节点的树型无环逻辑拓扑。 选举根交换机: 选举根端口: 选举指定端口: 端口名字&…

前端学习-事件流,事件捕获,事件冒泡以及阻止冒泡以及相应案例(二十八)

目录 前言 事件流与两个阶段说明 说明 事件捕获 目标 说明 事件冒泡 目标 事件冒泡概念 简单理解 阻止冒泡 目标 语法 注意 综合示例代码 总结 前言 梳洗罢,独倚望江楼。过尽千帆皆不是,斜晖脉脉水悠悠。肠断白蘋洲 事件流与两个阶段说明…

Cognitive architecture 又是个什么东东?

自Langchain: https://blog.langchain.dev/what-is-a-cognitive-architecture/ https://en.wikipedia.org/wiki/Cognitive_architecture 定义 A cognitive architecture refers to both a theory about the structure of the human mind and to a computational…

CVE-2025-22777 (CVSS 9.8):WordPress | GiveWP 插件的严重漏洞

漏洞描述 GiveWP 插件中发现了一个严重漏洞,该插件是 WordPress 最广泛使用的在线捐赠和筹款工具之一。该漏洞的编号为 CVE-2025-22777,CVSS 评分为 9.8,表明其严重性。 GiveWP 插件拥有超过 100,000 个活跃安装,为全球无数捐赠平…

【Linux】网络层

目录 IP协议 协议头格式 网段划分 2中网段划分的方式 为什么要进行网段划分 特殊的IP地址 IP地址的数量限制 私有IP地址和公有IP地址 路由 IP协议 在通信时,主机B要把数据要给主机C,一定要经过一条路径选择,为什么经过路由器G后&…

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

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

Elasticsearch—索引库操作(增删查改)

Elasticsearch中Index就相当于MySQL中的数据库表 Mapping映射就类似表的结构。 因此我们想要向Elasticsearch中存储数据,必须先创建Index和Mapping 1. Mapping映射属性 Mapping是对索引库中文档的约束,常见的Mapping属性包括: type:字段数据类…

MySQL进阶突击系列(05)突击MVCC核心原理 | 左右护法ReadView视图和undoLog版本链强强联合

2024小结:在写作分享上,这里特别感谢CSDN社区提供平台,支持大家持续学习分享交流,共同进步。社区诚意满满的干货,让大家收获满满。 对我而言,珍惜每一篇投稿分享,每一篇内容字数大概6000字左右&…

金融项目实战 02|接口测试分析、设计以及实现

目录 ⼀、接口相关理论 二、接口测试 1、待测接口:投资业务 2、接口测试流程 3、设计用例理论 1️⃣设计方法 2️⃣工具 4、测试点提取 5、测试用例(只涉及了必测的) 1️⃣注册图⽚验证码、注册短信验证码 2️⃣注册 3️⃣登录 …

指令的修饰符

指令的修饰符 参考文献: Vue的快速上手 Vue指令上 Vue指令下 Vue指令的综合案例 文章目录 指令的修饰符指令修饰符 结语 博客主页: He guolin-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力&…

[DO374] Ansible 配置文件

[DO374] Ansible 配置文件 1. 配置文件位置2. 配置文件3. Ansible 配置4. Ansible的Ad-hoc5. Ansible 模块6. playbook段落7. 任务执行后续8. Ansible 变量8.1 ansible 变量的定义8.1.1 主机变量8.1.2 主机组变量 8.2 vars的循环 9. Ansible Collection10. Ansible-galaxy 安装…