Subscribe to receive notifications of new posts:

BGP泄漏与加密货币

2018-06-24

9 min read

在过去的几个小时里,已经有十几个新闻报道揭露了有攻击者企图(也许已经完成了)使用BGP泄漏来窃取加密货币。

elhombredenegro提供的CC BY 2.0 图像

什么是BGP?

互联网由路由组成。关于我们的DNS解析器1.1.1.1,我们告知外界所有属于 1.1.1.01.1.1.255范围内的IP地址均可通过CloudFlare的任一网路连接点 (Point of Presence,PoP)进行访问。

对于没有直接连接我们路由器的人,他们从传输供应商得到路由,传输供应商会将数据包传送到这些与Cloudflare和其他互联网连接的路由地址。

这是互联网正常的运作方式。

IP地址是由权威机构(地区互联网注册机构,RIR)负责分发的,以避免人们使用相同的地址空间。这些机构分别是IANARIPEARINLACNICAPNICAFRINIC

什么是BGP泄漏?

马格努斯d提供的CC BY 2.0 图像

BGP泄漏被广义定义为某IP空间的非法占有者对外通报了该空间。当一家传输提供商收到Cloudflare的公告 1.1.1.0/24并将其向互联网通报时,这是受到我们允许的。他们还使用了RIR信息进行验证,因此只有Cloudflare可以向他们通报。

虽然检查所有公告可能会很棘手,而且互联网上有700,000多个路由和供应商链彼此之间交换流量。

就其性质而言,路由泄漏是本地化的。您的本地连接数越多,遭受路由泄露的风险就越小。
为了使访问请求经过合法的路由被接收,路由必须满足:

  • 较小的IP前缀( 10.0.0.1/32= 1 IP vs 10.0.0.0/24= 256 IP)
  • 在相同长度前缀下具有更好的度量(路径更短)

BGP泄漏的原因通常是配置错误:要么是路由器突然通告它获知的IP,要么是内部用于传输工程的较小前缀突然变为公共的前缀。

但有时配置错误是因为他人恶意为之。前缀被路由重定向从而被动地分析数据。或者有人设置了非法响应服务。这些以前都发生过

如今发生了什么改变?

Cloudflare维护着一系列BGP收集器,这些收集器从全球数百个路由器收集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

这些是更具体的范围公告:

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

此IP空间是分配给Amazon(AS16509)的,但是却由eNet Inc(AS10297)的访问堆栈结点(ASN)向其他结点宣布这是分配给它的IP空间并将此讯息转发给Hurricane Electric(AS6939)。

这些IP地址属于Route53 Amazon DNS服务器。当您查询其中一个客户端区域时,这些服务器将向您做出响应。

在两小时的泄漏期间,该IP域内的服务器仅响应对myetherwallet.com的请求。有些人注意到服务器故障

任何DNS解析器(被询问由Route53管理的名称)都会请求通过BGP泄漏被接管的权威服务器。这个中毒的DNS解析器的路由器已被该路由接管。

这其中也包括Cloudflare DNS解析器1.1.1.1。我们在芝加哥,悉尼,墨尔本,珀斯,布里斯班,宿雾,曼谷,奥克兰,马斯喀特,吉布提和马尼拉的解析器1.1.1.1均受到影响。在世界的其他地方,1.1.1.1仍然能正常工作。

例如,以下查询应该返回合法的Amazon IP:

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

但在劫持期间,它返回了与俄罗斯供应商(AS48693和AS41995)相关的IP 。就算你没有接受被劫持的路由,只要你使用已经中毒的DNS解析器,你就成为了攻击的受害者。

如果您使用的是HTTPS,假网站将显示由未知权限署名的TLS证书(证书中列出的域名是正确的,但它是自署名的)。此攻击生效的唯一途径是继续访问并接收错误的证书。从那时起,您发送的所有内容都将被加密,但攻击者拥有密钥。

如果您已登录,则浏览器将发送在cookie中的登录信息。换句话说,如果您在登录页面上输入了用户名和密码,则您的用户名和密码会被发送出去。

一旦攻击者获得了登录信息,他就会在合法网站上使用它们来转移和窃取以太币。

图片摘要

正常情况

BGP路由泄漏后


受影响的地区

如前所述,AS10279宣布了这一路由。但只有一些地区受到影响。Hurricane Electric受到的影响在澳大利亚非常显著,这主要源于互联网的成本。芝加哥地区受到影响,因为AS10279实际就在该处,这是直接的结果。

下图显示受影响区域和未受影响区域中接收的数据包数(Y轴归一化)。数据包丢失是由于权威服务器不再响应我们的请求(它只响应一个网站而忽略所有其他Amazon域)。

eNet(CenturyLink,Cogent和NTT)使用的其他传输线似乎没有接收这条路由:原因可能是他们有筛选程序和/或有亚马逊作为客户。

eNet提供IP服务,因此他们的一个客户可能已经声明了它。

找到涉事人员了吗?

由于其中涉及许多参与者,很难确定是谁的过错。参与者有:

  • ISP声明了一个它没有拥有的子网。
  • 在转发之前未检查声明的传输供应商。
  • 接收该路由的ISP。
  • 缺乏保护的DNS解析器和权威机构。
  • 托管在俄罗斯供应商的网络钓鱼网站。
  • 未强制执行合法TLS证书的网站。
  • 即使TLS证书无效也继续点击访问的用户们。

就像区块链一样,网络变更通常是可见的和已存档的。RIPE正维护一个用于此用途数据库

我们能解决这个问题吗?

这是一个难以回答的问题。我们对受到保护的BGP建议:
可以将一些条款添加到RIR数据库中,由此可以生成允许的源列表:

$ 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

使用RIR设置RPKI / ROA记录作为路由路径的真实来源,尽管不是每个人都由创建这些记录或去验证它们。IP和BGP是几十年前创建的,在完整性和可靠性方面有不同的要求(更少的路由)。

我们在网络堆栈的上层也可以做一些事情。

DNS上,您可以使用DNSSEC对记录进行署名。伪DNS返回的IP不会被署名,因为它们没有私钥。

如果您将Cloudflare用作DNS,则只需在面板中单击几下即可启用DNSSEC 。

HTTPS上,您的浏览器将检查网站提供的TLS证书。如果启用了HSTS,浏览器将始终需要有效证书。为域生成合法TLS证书的唯一方法是病毒入侵证书颁发机构的非DNSSEC DNS解析器的缓存。

DANE让用户可以使用DNS将证书固定到域名。

通过HTTPS的DNS还可以验证是否正在与正确的解析器通信,以防在DNS解析器而非DNS权威上发生泄漏。

没有完美且唯一的解决方案。但只要防护措施越多,恶意攻击者就越难以进行此类攻击。

关键词:BGP加密TLSHTTPS安全性漏洞

We protect entire corporate networks, help customers build Internet-scale applications efficiently, accelerate any website or Internet application, ward off DDoS attacks, keep hackers at bay, and can help you on your journey to Zero Trust.

Visit 1.1.1.1 from any device to get started with our free app that makes your Internet faster and safer.

To learn more about our mission to help build a better Internet, start here. If you're looking for a new career direction, check out our open positions.
BGP (CN)Encryption (CN)Security (CN)简体中文HTTPS (CN)TLS (CN)

Follow on X

Louis Poinsignon|@lpoinsig
Cloudflare|@cloudflare

Related posts