区块链网站|NFTS 小蚁币(NEO) 区块链被RPC攻击 小蚁币持有者需警惕盗币风险

区块链被RPC攻击 小蚁币持有者需警惕盗币风险

广告位

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

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

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

实验室对这一安全问题进行了紧急研究分析,发现NEO node确实存在RPC接口暴露问题。这个问题在neo-cli客户端2.9.0版之前广泛存在。该版本之后的节点在配置不当的情况下也面临一定的安全威胁。

因此,实验室在此发布此安全警告,提醒NEO节点维护人员和小蚁币持有者警惕远程盗币攻击,并给出相应的安全防范措施,避免此类攻击带来的风险。

1.以太坊RPC接口安全事件再探

在开始对NEO-node RPC的攻击进行研究和分析之前,有必要重温一下以太坊RPC接口的安全性,从而类比分析NEO RPC安全问题产生的原因和可能存在的安全隐患。

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

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

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

账户解锁时触发转账。要转账,用户需要用正确的密码解锁相应的账户。账户解锁后,默认情况下,账户有300秒的时间窗口处于解锁状态。攻击者可以利用这个时间窗口先窃取数字资产。

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

二、近地天体区块链RPC接口安全问题

2.1 neo节点的RPC接口是如何暴露的?

NEO-CLI是NEO区块链常用的客户端之一,支持RPC接口,实现形式也是JSON-RPC。以存在安全问题的v2.9.0为例,使用neo-cli -rpc启动节点时,使用的默认rpc相关配置文件如下:\’ RPC\’: {

\’端口\’:10332,

SslCert“:”,

SslCertPassword“:”

},

可以看出:1。这种配置将SSL相关的配置设置为空字符串,因此JSON-RPC接口的底层是基于Http而不是Https实现的,缺少RPC调用者的认证;

2.给定了RPC端口信息,但未设置它将绑定到的IP地址。

使用此配置启动测试程序后,检查由neo-cli打开的IP端口,您可以获得以下结果:

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

2.2公开RPC接口的NEO节点面临怎样的安全威胁?

neo-cli的很多RPC接口都需要打开该节点操作的wallet。一般情况下,节点的本地操作员可以在neo-cli提供的本地命令界面中输入open wallet命令来打开相应的wallet。

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

可以看出,攻击者通过依次调用listaddress和getaccountstate接口,可以得到目标节点维护的钱包和账户资产信息,那么可以采用的总手段有:

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

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

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

2.3攻击行为监控

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

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

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

3.利用资产信息获取账户余额,确认攻击值;

4.调用dumpprivakey来窃取帐户的私钥。

5.攻击者成功窃取用户私钥后,可以攻击者的名义签署交易,盗取钱财。

2.4易受攻击的节点扫描

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

三。关于安全和防御的建议

为了提高其安全性能,从NEO节点维护者和neo-cli开发者的角度提出了一些安全建议。

对近地天体节点维护者的建议:

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

2.避免使用远程RPC函数,将配置文件中BindAddress的地址修改为127 . 0 . 0 . 1;

3.如果有特殊需求,必须使用远程RPC功能,那么要修改RPC端口号,启用基于Https的JSON-RPC接口,设置防火墙策略,保证节点安全。

对neo-cli开发人员的建议:

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

2.彻底抛弃基于Http的JSON-RPC功能,以Https为底层协议;

修改代码逻辑,将钱包的“打开(解锁)-操作-关闭(锁定)”视为互斥的原子事务,以保证账户的安全敏感窗口不被攻击者利用。

(作者:Warp未来安全地带,内容来自链家的开放内容平台“德豪”;本文仅代表作者观点,不代表链家官方立场)

广告位
本文来自网络,不代表区块链网站|NFTS立场,转载请注明出处:https://www.qklwz.com/jzb/neo/1837.html
上一篇
下一篇

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部