freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

PAID Network攻击事件分析
2021-03-11 17:32:39

​事件背景

PAID Network 是去中心化生态,部署在以太坊的 DApp 项目,旨在重新定义民事法律体系,从而通过专有的 SMART 协议、社区管理的仲裁系统、声誉评分、DeFi 工具,为开展业务提供一种新方法。

零时科技区块链安全情报平台监控到消息,北京时间2021年3月6日,PAID Network官方发推称合约遭到黑客攻击,由于PAID Network项目使用的是可升级的存储代理合约模型,攻击者利用PAID Network代理合约owner权限部署了恶意逻辑合约,并盗取了超过5900万个PAID令牌。

何为可升级合约?

以太坊上可升级合约的开发模型主要有以下几类:

Master-Slave contracts 主从模式;

Eternal Storage contracts 外部存储合约;

Upgradable Storage Proxy Contracts 可升级的存储代理合约;

经过初步分析,PAID Network项目使用的是第三种模型Upgradable Storage Proxy Contracts(可升级的存储代理合约),这种模型的特点是存在三个组件:代理合约,业务合约和数据结构基类合约。三个组件配合,最终使得合约有节省Gas,合约可升级,合约数据引用一致等优点。

Upgradable Storage Proxy Contracts(可升级的存储代理合约)模型的工作模式,这里我们用MuditG文章中的图来做说明。如下:

上图中:

User部分为用户,不做过多解释

UpgradeabilityProxy:代理合约,该代理合约固定不变,继承数据结构基类合约,并与用户和业务合约做交互。代理合约会有一个fallback方法,该方法会通过delegate call调用业务合约。

Logic Contract:业务合约,该业务合约可根据需求随时更新,也继承数据结构基类合约,并与代理合约做交互,也就是将该合约调用接口对接到代理合约。

Storage structure:数据结构基类合约,该合约同时被代理合约和业务合约继承,可以保持存储指针在链上的一致性。

从以上分析可以明确,代理合约可以随时更新,也就是PAID Network项目中的升级合约。

事件分析

零时科技安全团队跟进此事件并分析得出攻击步骤:

攻击者盗取PAID代理合约所有者owner私钥,通过该owner将自己的地址修改为owner,并使用攻击者地址部署了攻击合约,之后使用owner权限将PAID代理合约的业务合约地址更新为攻击合约,最终利用攻击者合约中的burn()销毁函数和mint()铸币函数给攻击者地址创造了5947万枚PAID代币。

详细攻击步骤如下:

初步分析,Paid代理合约owner部署Paid逻辑合约,通过所有者0x6ba1...1120地址部署业务合约0x8c86...48df。这一步是正常的部署合约操作,如下图:

https://cn.etherscan.com/tx/0x722caf4a8ba43f06f2c26e41cf49b9200af9f0593444d0b81713c2292782d15b

攻击操作一:攻击者给Paid代理合约owner(所有者0x6ba1...1120,也就是上一步部署正常合约的地址)转了一笔手续费。攻击者开始攻击,保证所有者地址0x6ba1...1120有ether可以进行其他调用操作,如下图:

https://cn.etherscan.com/tx/0x28494ebcd854735e4d84f55890f0a92376d1af17553d998b2ee391a25dbc18c7

攻击操作二:攻击者调用Paid代理合约owner的权限,更换了owner为攻击者。由于攻击者有Paid合约owner地址私钥,所以可直接使用owner权限,并调用transferOwnership(address newOwner)函数修改owner地址为0x1873...65be。如下图:

https://cn.etherscan.com/tx/0x733dd279b3d24f3415f3850b8eceafc651c1998163dcd0352b9e83c46e2b33d9

攻击操作三:攻击者通过修改后的owner地址0x1873...65be部署攻击合约0xb828...b9c7,如下图:

https://cn.etherscan.com/tx/0x75a22e264ffabbc5e4b84090fb30a76f2b5c4b87ae7a22762cba695d922c04aa

攻击者操作四:攻击者owner调用代理合约中upgrade()函数对攻击者合约进行更新,也就是更新了Paid的逻辑合约为攻击合约,如下图:

https://cn.etherscan.com/tx/0xe4678ca53b308bb35f6fd393ca369e853f936788cd6c318cd38b0a25bec88b70

攻击者操作五:攻击者调用攻击合约中的burn()函数销毁5947万枚PAID代币,如下图:

https://cn.etherscan.com/tx/0x3a483dd881d98541ebbd51e9a64daa700546bae9c2b33a30c2192f9981334b9b

攻击者操作六:攻击者调用攻击合约中的mint()函数给攻击者地址铸币5947万枚PAID代币,如下图:

https://cn.etherscan.com/tx/0x4bb10927ea7afc2336033574b74ebd6f73ef35ac0db1bb96229627c9d77555a0

攻击者后续操作:攻击者铸造5947 万枚 PAID 代币后,随后将部分PAID代币在去中心化交易所 Uniswap 上交易。在后续的交易中,攻击者陆续售出了大约 250 万个 PAID 代币,目前已获得2000 ETH。

总结

通过分析,发生该攻击事件只是因为PAID代理合约所有者owner私钥泄露,合约代码及可升级的合约模型并没有问题,当然也是目前大多数项目的中心化导致。所以建议项目方更要注重合约管理员私钥的安全存储。

安全建议

DeFi今年确实备受关注,黑客攻击也不断发生,包括Harvest Finance,Value DeFi,Akropolis,Cheese Bank和Origin Dollar等均受到不同程度的黑客攻击。针对频频发生的黑客攻击事件,我们给出以下的安全建议

在项目上线之前,找专业的第三方安全企业进行全面的安全审计,而且可以找多家进行交叉审计;

可以发布漏洞赏金计划,发送社区白帽子帮助找问题,先于黑客找到漏洞;

加强对项目的安全监测和预警,尽量做到在黑客发动攻击之前发布预警从而保护项目安全。

私钥存储安全建议

私钥尽量手抄,确保私钥的准确性,多次校验;

多个安全地方存储

可以将私钥强加密后存在电脑

不要截屏和拍照,会同步到云端

不要拷贝粘贴,会同步到云端

不要使用邮件传输或存储私钥

不要将私钥发到群里

不要将私钥导入未知的第三方网站

# 黑客 # 数据泄露 # 系统安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录