点击蓝字 关注我们
概念
异形攻击是指诱使同类链的节点互相侵入和污染的一种攻击手法,漏洞的主要原因是同类链系统在通信协议上没有对非同类节点做识别
以太坊同类链节点间通过4个UDP通信协议来完成节点发现
-
ping :探测一个节点是否在线
-
pong :响应ping命令
-
findnode :查找与target节点异或距离最近的其他节点
-
neighbors : 响应findnode命令,会返回一或多个节点
完成握手和节点发现后,便会将节点加入自己的节点池子中,并且当有其他节点来请求findnode的时候,便会把neighbors推送过去自行扩散交换节点间的邻居信息。
当目标公链使用了兼容的握手和节点发现协议,就无法区分节点是否属于同个链,这样就可以通过异形攻击,导致地址池互相污染,节点通信性能下降,最终造成节点堵塞。
准备工作
需要收集一些以太坊节点地址,来加快攻击的扩散速度
-
社区制定的一个地址库
https://github.com/smartheye/EthStaticNodesTool/blob/master/MainNet/static-nodes.txt
1.发送恶意握手并推送恶意的邻居表
攻击者A模拟整个握手过程,主动发起ping操作,并利用协议的第四步neighbors,将返回的邻居表修改为我们收集的以太坊节点地址,推送给受害者B,由于单次通信只能推送16个地址,我们需要多次推送以达到攻击效果
2.污染地址池
B收到大量A返回的邻居表,尝试跟这些节点握手,并且将这些节点加入到自己的地址池(俗称K桶)
3.污染自动扩散
不同链的节点互相握手成功,他们把各自地址池里已知的节点推送给对方,导致更多的节点互相污染,最终扩散致整个网络
漏洞危害
-
受异形攻击的同类链节点无法找到真正可用的节点,无法建立TCP数据同步通道,导致节点被攻击离线。
-
对于矿池或者出块节点,异形攻击可能导致广播延迟甚至失败,造成收益损失。
-
异形攻击可以使所有以太坊同类链地址池互相污染,导致节点通信效率全面下降,对整个区块链系统造成长久的伤害。
本文始发于微信公众号(IDLab):公链安全-异形攻击
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论