主页 > imtoken冷钱包怎么创建 > 以太坊生态缺陷导致数十亿代币重大失窃

以太坊生态缺陷导致数十亿代币重大失窃

imtoken冷钱包怎么创建 2024-01-26 05:14:56

本文原作者为慢雾安全团队,雷锋网授权转载。

近日,慢雾安全团队观察到一起自动盗币攻击。 攻击者利用以太坊节点的Geth/Parity RPC API认证缺陷,恶意调用eth_sendTransaction进行盗币,历时两年。 未转出的以太币按现价价值高达2000万美元,代币种类达164种,总价值难以估计(很多代币还未正式发行)交换)。 如下所示:

以太坊生态缺陷导致的一起亿级代币盗窃大案

攻击过程

安全团队结合受害者情报、Reddit信息、蜜罐日志分析,对攻击行为进行了回溯,可能是:

全局扫描8545端口(HTTP JSON RPC API)、8546端口(WebSocket JSON RPC API)等开放的以太坊节点,发送eth_getBlockByNumber、eth_accounts、eth_getBalance遍历区块高度、钱包地址和余额

不断重复调用eth_sendTransaction,尝试将余额转入攻击者钱包

当节点用户对自己的钱包执行unlockAccount时,期间无需再次输入密码签署交易。 此时攻击者的eth_sendTransaction调用会被正确执行,余额会进入攻击者的钱包。

评论:

以太坊cn代币_什么叫以太坊代币_以太坊erc20代币是什么

unlockAccount功能介绍

此函数将使用密码从本地密钥库中提取私钥并将其存储在内存中。 函数的第三个参数duration,表示解密后私钥保存到内存的时间。 默认为 300 秒; 如果设置为 0,则表示永久保留在内存中,直到 Geth/Parity 退出。 看:

#personal_unlockaccount

攻击时间表

我们对攻击者在Etherscan上的钱包地址进行了详细分析,得到以下主要攻击时间线:

2016/02/14 03:59:14 PM 第一个IN(收货),这一天是情人节

2016/02/16 06:33:30 PM 第二次IN,时隔2天,推测自动攻击程序首次上线

以太坊cn代币_以太坊erc20代币是什么_什么叫以太坊代币

2016/05/19 07:46:33 PM 第一个OUT(payout),共51个IN

2016/07/20 06:35:57 PM 第二个OUT,共57个IN

2017/05/11 06:34:35 PM Shapeshift(知名交易所)IN 7笔,跨越71天

2017/06/10 02:39:53 AM OUT 最后一笔,此时IN笔划约有207笔

2017/06/21 07:46:49 AM f2pool(知名矿池)IN 36笔,跨越4小时

这种时间线追踪可以辅助分析攻击者的行为痕迹。

影响情况

以太坊erc20代币是什么_以太坊cn代币_什么叫以太坊代币

安全团队扫描检测了全球约42亿个IPv4空间,发现暴露在公网并启用RPC API的以太坊节点超过10000个。 这些节点都有很高的被直接盗币攻击的风险。

以太坊生态缺陷导致的一起亿级代币盗窃大案

以太坊生态缺陷导致的一起亿级代币盗窃大案

以太坊生态缺陷导致的一起亿级代币盗窃大案

防御建议

更改默认RPC API端口,配置方式如:--rpcport 8377或--wsport 8378

将RPC API监听地址改为内网,配置方式如:--rpcaddr 192.168.0.100或--wsaddr 192.168.0.100

以太坊cn代币_以太坊erc20代币是什么_什么叫以太坊代币

配置iptables限制访问RPC API端口,例如:只允许192.168.0.101访问8545端口:

iptables -A 输入 -s 192.168.0.101 -p TCP --dport 8545 -j 接受

iptables -A INPUT -p TCP --dport 8545 -j DROP

账户信息(keystore)不要存放在节点上(因为账户不在节点上,unlockAccount不会用到)

对于任何转账,使用 web3 的 sendTransaction 和 sendRawTransaction 发送私钥签名的交易

私钥物理隔离(如冷钱包、人工转录)或高强度加密存储什么叫以太坊代币,保证密钥安全

进一步思考

以太坊erc20代币是什么_以太坊cn代币_什么叫以太坊代币

通过对这起事件的后续调查和攻击方式的完整再现,我们越来越意识到网络空间遵循着黑暗森林的法则。 这个定律引用自《三体》:“宇宙是一片黑暗的森林,每一个文明都是拿着枪的猎人,像幽灵一样潜入森林,轻轻拨开挡路的树枝,尽量不要让脚步声发出声音,连呼吸都要小心,他必须要小心,因为森林里到处都有像他一样潜伏的猎人,如果他发现了其他生命,他能做的只有一件事,射杀它”

我们仔细审查了这次持续了两年并且仍然活跃的攻击的所有细节。 如果我们是攻击者,一个脚本项目就可以轻松拿走全球数万甚至数百万的数字资产。

我们需要特别提到攻击者的方法。 不知道大家有没有注意到,为什么攻击的第一步是调用eth_getBlockByNumber来获取区块高度? 本次调用的详细信息为:eth_getBlockByNumber("0x00", false),如果区块高度不是最新的,则本次调用会报错,后续不需要进行钱包地址、余额等查询操作,因为余额不准确什么叫以太坊代币,最后一步转账操作肯定做不完。 这种攻击逻辑的设计是针对这种攻击场景的一种非常暴力的美学设计。

从上面提到的“攻击时间线”我们可以看出,攻击者其实很不一般。 此次潜伏攻击发生在以太坊历史上第一起知名黑客事件 The DAO 之前(2016/06/17),也正是以太坊技术被市场正式认可的时期。 可见攻击者是以太坊技术的早期研究者,对黑客工程技术了如指掌。 攻击者在实战中不断优化这套项目。

我们也进一步分析了RPC API相关模块的功能,发现了一些潜在的安全隐患,同样需要大家注意。 比如在RPC API中启用个人模块,则可以通过personal_unlockAccount方法爆破账号密码。 如果爆破成功,可以一次性实现解锁+转账。 如果在RPC API中启用了矿机模块,则可以通过miner_setEtherbase方法修改挖矿的钱包地址。

在我们墨子(MOOZ)系统的全网检测中,我们发现这些暴露在公网上的以太坊节点开启的RPC API模块是不一样的。 这为更复杂的攻击提供了不同的条件。

从防御分析的角度,我们也发现Geth等的日志机制并不完善,无法记录RPC API请求的源IP(配置--debug和--verbosity 5无效),导致直接在被攻击的以太坊节点上取证 追踪攻击者的 IP 非常麻烦。

虽然以太坊本身的健壮性已经过测试,但安全是一个整体。 通过这次事件,我们可以看出以太坊生态系统存在的一些安全漏洞。 一些安全漏洞可能被认为是一种需要用户注意的机制,但这对用户来说是一个太高的安全门槛。 高门槛的安全必然更容易滋生这种大规模的攻击。

本文由慢雾安全团队原创,雷锋网授权转载。