主页 > 华为怎么下载imtoken > 区块链遭RPC攻击,NYcoin持有者需警惕币被盗风险

区块链遭RPC攻击,NYcoin持有者需警惕币被盗风险

华为怎么下载imtoken 2023-02-19 05:04:59

摘要:近日,某实验室检测出著名区块链项目NEO(对应数字货币“蚂蚁币”,总市值1.8亿美元)存在远程盗币风险。

近日,有实验室检测出著名区块链项目NEO(对应数字货币“蚂蚁币”,总市值1.8亿美元)存在远程盗币风险。 当用户使用默认配置启动具有RPC功能的NEO网络节点并启用钱包时,其数字货币可能被远程窃取。 这种攻击场景与今年年初被广泛披露的以太坊RPC攻击非常相似,严重危害NEO用户数字资产安全。

实验室针对该安全问题展开紧急研究分析,发现NEO节点确实存在RPC接口暴露问题。 这个问题在neo-cli client v2.9.0之前广泛存在。 该版本之后的节点如果配置不当也会面临一定的安全威胁。

因此,实验室特此发出本次安全警示,提醒NEO节点维护者和NYcoin持有者警惕远程盗币攻击,并给予相应的安全防范措施,避免此类攻击带来的风险。

一、重温以太坊RPC接口安全事件

在开始对NEO节点RPC攻击进行研究分析之前,有必要对以太坊RPC接口的安全性进行回顾以太坊rpc节点,以分析本次爆发的NEO RPC安全问题的成因和可能存在的安全隐患。

以太坊是目前知名的区块链公链项目。 以太坊节点的RPC接口以JSON-RPC的形式对外提供调用,其底层是Http协议。 以太坊网络中的RPC攻击是针对对外暴露RPC接口的以太坊节点进行的。 一般来说,节点维护者可以通过节点的RPC接口来控制节点的行为,比如签署和发布交易信息。 但是,各种版本的以太坊客户端都实现了有效的 RPC 接口调用者身份验证机制。 这为攻击者进行远程攻击提供了方便。

以太坊最典型的 RPC 攻击是远程盗币。 要使攻击成功,需要:

sitehqz.com 以太坊节点_以太坊 json rpc java_以太坊rpc节点

知道节点维护钱包中的账户信息,攻击者可以通过调用eth_account等RPC接口获取。

在账户解锁时触发转账。 为实现转账,用户需要用正确的密码解锁相应的账户。 账户解锁后,账户默认解锁300秒。 攻击者可以利用这个时间窗口抢先窃取数字资产。

在以太坊网络上,已知最早的一次远程盗币攻击发生在2016年2月14日,截至目前,攻击者账户共盗取了超过45000个以太币,市值超过500万美元。 仅此一个攻击者帐户就证明了以太坊 RPC 攻击造成的严重安全威胁。

2. NEO区块链RPC接口安全问题

2.1 NEO节点的RPC接口如何暴露

NEO区块链常用的客户端之一neo-cli支持RPC接口,其实现也采用了JSON-RPC的方式。 我们以存在安全问题的v2.9.0版本为例。 使用neo-cli –rpc启动节点时,默认使用的RPC相关配置文件如下: "RPC": {

“端口”:10332,

"SSLCert": "",

sitehqz.com 以太坊节点_以太坊 json rpc java_以太坊rpc节点

“SSL证书密码”:“”

},

可以看出: 1、该配置将SSL相关配置设置为空字符串,因此整个JSON-RPC接口底层是基于Http而不是Https实现的,缺少对RPC调用者的鉴权;

2、给出了RPC端口信息,但是没有设置要绑定的IP地址。

使用该配置启动测试程序后,查看neo-cli启用的IP端口,可以得到如下结果:

sitehqz.com 以太坊节点_以太坊rpc节点_以太坊 json rpc java

可以看出,neo-cli默认直接将RPC接口绑定到0.0.0.0地址,导致RPC接口对外暴露。 事实上,在v2.9.0及更早的版本中,并没有办法配置RPC接口来绑定IP地址。 只要开启RPC功能,就会绑定到0.0.0.0地址; 在以后的版本中,开发者增加了一个新的RPC配置项BindAddress,默认配置为127.0.0.1,可以保证其接口的安全性。 但是,如果节点配置器将此选项修改为0.0.0.0或其公网IP地址,同样会面临RPC攻击的威胁。

2.2 暴露RPC接口的NEO节点面临什么样的安全威胁?

sitehqz.com 以太坊节点_以太坊 json rpc java_以太坊rpc节点

neo-cli 的很多 RPC 接口都要求节点操作的钱包是开放的。 正常情况下,本地节点运营者可以在neo-cli提供的本地命令界面输入打开钱包命令,打开对应的钱包。

值得注意的是,目前neo-cli并没有设置钱包自动关闭的时间窗口。 因此,用户的钱包打开后会长期处于打开状态。 我们分析了neo-cli提供的RPC接口,筛选出相应的可能被攻击者攻击的接口:

sitehqz.com 以太坊节点_以太坊rpc节点_以太坊 json rpc java

可以看出,攻击者可以通过依次调用listaddress和getaccountstate接口获取目标节点维护的钱包和账户资产信息,那么总共可以使用的方法有:

1.调用dumpprivkey窃取受害者私钥;

2.调用sendXXX窃取数字货币;

3.调用invokeXXX作为受害者调用NEO上的智能合约。

2.3 攻击行为监控

以太坊 json rpc java_以太坊rpc节点_sitehqz.com 以太坊节点

发现NEO RPC攻击后,实验室紧急部署了蜜罐系统检测攻击者的行为,捕获到了如下图所示的典型攻击行为。 根据蜜罐日志,我们可以看到攻击者的攻击过程如下:

1.使用listaddress命令获取我们的钱包地址;

2.调用getaccountstate获取钱包的资产信息;

3、利用资产信息获取账户余额,确认其具有攻击价值;

4.调用dumpprivakey窃取账户私钥。

5、攻击者成功盗取用户私钥后,可以以攻击者的名义签署交易,盗取币值。

2.4 漏洞节点扫描

在确认NEO网络中仍有RPC攻击者潜伏后,实验室对其网络规模和存在安全隐患的节点进行了排查。 首先,基于NEO节点P2P通信协议的网络节点检测接口发现公网范围内的所有NEO节点。 实验室扫描了这些节点的默认RPC端口(10332),发现有13.6%的节点暴露了自己的RPC接口,响应我们发送的RPC请求获取节点版本信息。 经过两天的观察,发现有13.1%的节点会打开钱包,泄露钱包信息。

以太坊 json rpc java_以太坊rpc节点_sitehqz.com 以太坊节点

三、安全防御建议

以下是从NEO节点维护者和neo-cli开发者的角度提出的一些安全建议,以提高他们的安全性能。

给 NEO 节点维护者的建议:

1、升级到最高版本的neo-cli客户端程序;

2、为避免使用远程RPC功能以太坊rpc节点,修改配置文件中BindAddress地址为127.0.0.1;

3、如有特殊需求必须使用远程RPC功能,应修改RPC端口号,启用基于HTTPS的JSON-RPC接口,并设置防火墙策略以保证节点安全。

给 neo-cli 开发者的建议:

1. 通知其社区成员和节点维护者尽快完成客户端更新;