BGP路由泄露:互联网全球性灾难的元凶

来自:车小胖谈网络 (微信号:chexiaopangnetwork),作者:车小胖谈网络

最近在研究互联网全球性灾难事故,突然看到这个最新的事故,觉得很有启发性,故分享给大家。

 

事件的前因后果

2019.06.24日,一家位于宾夕法尼亚州的电信运营商,名字叫“DQEAS33154 ”。

 

这家公司将其从AT&T学习到BGP全球路由,使用了BGP优化器进行了优化。所谓优化,就是将路由的网络掩码位扩长,使得路由变得更加明细。

 

比如104.20.0.0/20,经过优化之后变成了两条路由,一条是104.20.0.0/21 ,一条是104.20.8.0/21

 

优化过的路由如果只是在自己的AS内使用,一点问题没有,但是千万不要通过BGP发布出去。

 

路由选路规则

按照路由的“最长匹配”选路规则,104.20.0.0/21104.20.8.0/21肯定比104.20.0.0/20更优,所以互联网上的访问“104.20.0.0/20”流量,都会通过DQE中转。

 

不幸发生了,DQE将这些优化过的路由发给了其邻居Allegheny,然后Allegheny这些优化过的路由扩散到全球路由表中。

 


 


 

灾难降临

Cloudflare访问“104.16.16.x”流量到达第一跳ATTATT路由器按照最长匹配,匹配到“104.16.16.0/21”路由指向DQE,于是将流量发给DQE

 

DQE收到报文查询路由表,匹配到优化路由“104.16.16.0/21”,发现下一跳依然ATT路由器,于是将流量发给ATT路由器。

 

ATT路由器接着发给DQE路由器,一个三层的环路形成了。

 

IP报文中的TTL每经过一次路由器的处理减1TTL初始值= 255,经过255次的环路处理,终于被丢弃了。

 

但是,网络上源源不断的流量争先恐后奔来,要不了几秒,DQEATT的路由器被海量流量打崩溃,互联网业务部分中断。。。

 

以上只是举一个例子,凡是被BGP优化器优化的路由全部受此影响。

 

如果允许几个“如果”

 

如果1DQE不使用BGP路由优化器,不会发生这个灾难

如果2:不要把优化过的路由发布给BGP邻居,而是将原始路由通告给邻居

如果3:接收方做路由合法性检查,拒绝优化过的路由

如果4:或者对接收到的路由,在线查询路由与AS号的权威映射(官方签名),凡是没有查询到的映射,一律拒绝处理

 

 



 

那么,这次灾难就不会发生!

 

这次的事件是人为造成的,但并不是恶意的攻击,可能源于工程师的失误。

 

但从这个事件可以看出,一次小小的失误就可能将互联网全部弄奔溃,这绝不是危言耸听。

 

互联网的不安全性

互联网非常脆弱,依赖于BGP的工作工作。在过去20年为了提供BGP的安全性,一般着重于BGP报文的保护,比如使用预共享密码认证邻居,使用共享密钥来校验报文的HMAC,使用TTL=1来减轻远程攻击

 

在看到这个事件时,深刻感到数字签名在路由分发的重要性,这样可以击退任何有意或无意的BGP路由注入,因为任何不合法的注入路由都会被接收方拒绝并丢弃,从而使得全球路由表中的路由条目都是值得信赖的,通过正确合法的路由导航,可以将IP报文导航到真正的目的地!

推荐↓↓↓
程序员的那点事
上一篇:什么是外网IP、内网IP? (续) 下一篇:TCP为何要连续发两次RST报文?