Open BubbLess opened 5 years ago
If I recall correctly, timing out when downloading block header or block will cause the peer sending new_minor_block_header_list_command
to be disconnected from current cluster, preventing it from performing the same attack
在timeout之后确实是会断开连接,不过似乎并没有对这类恶意节点建立黑名单,那么就可以继续发送同样的请求重新建立连接,使用多个peer应该就可以对目标节点进行无缝切换的攻击了。
我的理解是核心还是黑名单的问题,对吧?
should be resolved by #199
another aspect to alleviate the problem is to do a PoW validation before adding the synchronization task. however considering the hashpower of a shard is relatively low, such validation won't stop malicious nodes keeping sending valid blocks to hang the synchronizer.
在shard.py中,注意到handle_new_minor_block_header_list_command函数下会触发synchronizer
而synchronizer启动后节点将拒收新的区块
逻辑上讲handle_new_minor_block_header_list_command应该是在进行最长链切换时的同步时调用的,那么我们可以伪造大量这样的请求,使得目标节点一直处于同步阶段,拒绝处理网络发送过来的新区块,从而对目标节点进行隔离。 另外因为synchronizer中同步时需要从对方下载该区块,如下
此处TIMEOUT为10秒,相当于我们一次请求可以阻塞目标节点10秒,这样我们持续阻塞该节点的难度将进一步降低,危害还是比较大的。