北京时间2021年4月19日,Layer 2 DeFi 借贷协议 EasyFi创始人兼 CEO Ankitt Gaur 称,「有大量 EASY 代币从 EasyFi 官方钱包大量转移到以太坊网络和 Polygon 网络上的几个未知钱包。有人攻击了管理密钥或助记词。黑客成功获取了管理员密钥,并从协议池中以 USD/DAI/USDT 形式转移了 600 万美元的现有流动性资金,并将 298 万枚 EASY 代币(约占 EASY 代币总供应量的 30%,目前价值 4090 万美元)转移到了疑似黑客的钱包(0x83a2EB63B6Cc296529468Afa85DbDe4A469d8B37)中。」
通付盾区块链安全团队(SharkTeam)第一时间对此事件进行了分析,并总结了安全防范手段,希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。
一、事件分析
通过分析发现,本次攻击仍是区块链上以窃取私钥为基础,以窃取用户资产为目的的攻击手段。
首先我们来看下本次攻击中的整体流程:
EasyFi官方地址:0xbf126c7aab8aee364d1b74e37def83e80d75b303
中间地址:0x222def1dfeeaed8202491cdf534e4efff3268666
受害者1地址:0x0c08d0fe35515f191fc8f0811cadcfc6b2615b74
受害者2地址:0xf59c2e9d4ab5736a1813738e5aa5c3f5eaf94d9e
攻击者地址:0x83a2eb63b6cc296529468afa85dbde4a469d8b37
1.最初EasyFi项目的官方向中间地址(0x222def1dfeeaed8202491cdf534e4efff3268666)发送了8,800,000 EASY。
2.该中间地址分别向两个受害者地址(0x0c08d0fe35515f191fc8f0811cadcfc6b2615b74)和(0xf59c2e9d4ab5736a1813738e5aa5c3f5eaf94d9e)发送了2,700,000和2,000,000个 EASY。
3.在2021年4月19日,攻击者0x83a2eb63b6cc296529468afa85dbde4a469d8b37利用两受害者的账户向攻击者的账户分别转账了1,035,555.826203866010956193和1,799,990个EASY。交易的记录如下:
通过检查合约发现,合约中的执行逻辑简单并没有可以利用的漏洞。因此可以判定,这是一次因用户私钥或助记词泄露从而窃取用户虚拟资产的攻击。
在完成攻击获取到大量EASY数字资产后,该攻击者接着在Uniswap中将EASY置换为USDC。交易的记录如下图所示:
二、近期同类型事件
根据整个攻击过程的分析,根本原因在于攻击者可以利用被攻击者的账户地址调用合约,窃取受害者私钥授权合约执行并向攻击者地址进行大额数字资产的转账。
在之前《黑暗森林中的身份危机:透过Roll被攻击事件看区块链密钥保护的重要性》的分析中,SharkTeam就向大家进行了风险提示并提醒大家进一步重视密钥保护,做好自身安全防护。
攻击画像:窃取用户密钥
第一步:攻击者窃取用户私钥(钓鱼或渗透钱包)
第二步:使用被攻击者账户部署攻击合约,攻击合约是整个自动化攻击的核心。
第三步:使用被攻击者账号进行交易,将所有资产转到攻击合约中。
第四步:攻击合约自动执行,通过Uniswap等去中心化交易所将资产转出,防止项目方启动应急机制锁定被盗资产。
第五步:被盗资产进一步被转移到匿名性更强的混币平台,对抗AML等安全机制。
攻击分为5步,却有极强的目的性,一旦私钥丢失将非常难以进行防范。
那么,既然攻击的起始点是私钥窃取,那我们到底应该如何才能保护好我们的私钥?这里必须要提到区块链钱包,钱包是存储账户地址和使用数字货币的工具,比如以太坊钱包存储以太坊账户地址以及账户的以太币并且可以进行交易。区块链钱包并不是传统意义上的实体的钱包,而是使用加密技术加密保存账户地址的公私钥对的工具,有了钱包密钥就可以拥有钱包中账户地址的支配权,可以支配其中的数字货币,尤其是以太坊钱包,有了密钥不仅可以支配其中的以太币,更可以支配其中的合约地址对应的智能合约。由于私钥是一长串毫无意义且毫无规律的字符,比较难以记忆,因此出现了助记词(Mnemonic)。
三、通付盾区块链安全知识课堂
(1)助记词(Mnemonic)
私钥是由加密算法生成的一个32字节随机数,由64个十六进制的字符组成,由于私钥的字符串没有规律可循,并且可读性低难以记忆,因此当我们在使用钱包保存加密货币时,通常会使用到助记词来代替私钥。
助记词:就是另一种形式的私钥。它通过算法将64位的私钥转换成若干个常见的英文单词,作为区块链数字钱包私钥的友好格式。助记词和私钥是等价的,可以相互转换。
通常,助记词只会在创建新钱包的时候出现,所以在注册新钱包时,应该用安全的方式记录下这些单词,避免发生遗忘和泄露。在创建钱包时,通常用户会得到12或者是24个单词作为助记词。
公钥和地址的生成都依赖于私钥,而私钥和助记词是互通的,所以私钥和助记词是黑客窃取的最为核心的目标。而钱包保存了账户地址及其私钥,因此,钱包也是黑客攻击的目标。而私钥通常面“钓鱼攻击”和钱包“私钥保护不当”两类安全风险。
(2)钓鱼攻击(Phishing)
所谓“网络钓鱼攻击(Phishing)”,指的是攻击者伪装成可以信任的人或机构,通过电子邮件、通讯软件、社交媒体等网络工具,从而获取收件人的用户名、密码、私钥等私密信息。随着技术的发展,网络钓鱼攻击不仅可以托管各种恶意软件和勒索软件攻击,而且更糟糕的是这些攻击正在呈现不断上升的趋势。
网络钓鱼攻击可以分为两种类型:社会工程和漏洞利用。社会工程是基于欺骗和随后受害者的错误行为,而漏洞利用则是利用漏洞以及软件架构缺陷实施攻击的专业技术。利用网络漏洞以及软件和基础架构的缺陷来实现攻击手段。此类攻击一般包含以下攻击手段:
基于DNS的网络钓鱼
在此攻击中,攻击者最初会创建恶意访问点,并诱使客户端连接到运行假DNS服务器的访问点。该服务器将特定站点重定向到攻击者的网络钓鱼服务器。
会话劫持(cookie劫持)
该攻击基于使用有效会话(有时也称为会话密钥)来获得对计算机系统上信息或服务的未授权访问。特别是,它用于表示对远程服务器上的用户进行身份验证的cookie盗窃。一种流行的方法是使用源路由的IP数据包。IP数据包通过B的计算机,这使得网络上B点的攻击者可以参与A和C之间的对话。攻击者可以在原始路由被禁用的情况下盲目捕获,发送命令但看不到响应来设置允许从网上其他地方访问的密码。攻击者还可以使用嗅探程序“监视” A和C之间的对话。这就是“中间人攻击”。
恶意软件
当使用基于恶意软件的网络钓鱼时,恶意软件被用来在被攻击者计算机上存储凭据并将其发送给攻击者,即发送给钓鱼者。例如,可以通过带有附件doc文件的恶意垃圾邮件来传递威胁,该文档文件包含下载恶意程序的Powershell脚本,然后,恶意程序找到存储的钱包和凭据并将其发送给钓鱼者。木马AZORult和Pony Formgrabber以及bot Qbot是最常用的恶意程序。同时,网络犯罪分子还会继续使用以前针对银行的攻击工具,现在成功地使用它们来破解加密钱包,获得钱包的密码以及用户的个人账户等信息。
四、安全建议
通过如上的分析可以看出,虽然不同于传统互联网的账号密码体系,但区块链账户同样面临私钥被盗的风险,由于通常私钥与数字资产紧密相关,其安全风险更高。保护私钥安全,既是用户的责任也是项目方的责任。
用户应提高私钥保护意识,对访问的网页或下载安装的钱包提高警惕,防止被钓鱼攻击。
项目方应以用户资产安全为核心,做好热钱包、冷钱包、系统服务、智能合约等相关模块的风险评估和安全审计,确保系统本身安全。
制定AML和应急方案,提高对抗黑客攻击的风险防范能力。
底层链平台可采用分组密码、环签名等技术,从区块链底层提高账户安全保护能力。
五、通付盾智能合约审计
在不断完善私钥保护等区块链安全机制的同时,在区块链项目开发和运营的各个阶段适时引入合适的安全工具和服务,为用户的数字资产和项目安全发展提供保障已成为行业共识。通付盾作为国内领先的区块链安全服务提供商,为开发者提供智能合约审计服务。
智能合约自动化审计在通付盾云平台上为用户提供智能合约进行自动化审计服务。运用符号执行、形式化验证等智能合约分析技术,覆盖高级语言、虚拟机、区块链、业务逻辑四个层面一百多项安全风险检测项,保障智能合约安全运行。
通付盾也为客户提供高级别的区块链安全服务,区块链安全专家团队7*24小时为智能合约提供全生命周期的安全保障,服务包括:VIP安全审计服务、VIP合规审计服务、安全事故应急响应等。