区块链技术博客
www.b2bchain.cn

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

第22550篇文章SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析,说明解释了SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析,是很好的区块链入门技术文章网站,提供了相应的代码的进行解释,并且把原理说的很清晰

8月10日,去中心化年金协议 Punk Protocol遭到攻击,损失 890 万美元,后来团队又找回了 495 万美元(向黑客2提供了 100 万美元作为漏洞发现费,黑客2归还495万美金)。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam第一时间对此事件进行了攻击分析和技术分析,攻击原因在于投资策略中找到了一个关键漏洞:CompoundModel 代码中缺少初始化函数的修饰符的问题,可以被重复初始化。希望后续的区块链项目可以引以为戒,共筑区块链行业的安全防线。

一、事件分析

黑客1的两笔攻击交易:

0x7604c7dd6e9bcdba8bac277f1f8e7c1e4c6bb57afd4ddf6a16f629e8495a0281

(试探攻击)

0xa76cd31bcd48869621e7f2698ac8754699026acd0655a6d33280224dabed4cfa

(正式攻击)

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

黑客2的两笔攻击交易

0x597d11c05563611cb4ad4ed4c57ca53bbe3b7d3fefc37d1ef0724ad58904742b

(攻击)

0x4c8072a57869a908688795356777270a77f56ae47d8f1d869be0d25e807e03b1

(通知项目方,见下图)

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

黑客2的攻击合约地址:

0x00000000b2ff98680adaf8a3e382176bbfc34c8f

黑客2的地址:

0x3aa27ab297a3a753f79c5497569ba2dacc2bc35a

0xe36cc0432619247ab12f1cdd19bb3e7a24a7f47c

黑客2退回的两笔交易地址:

0xc977ea434d083ac52f9cad00417bcffb866b894a5cbabf1cc7af9c00e78b8198

(从0x3aa2转出DAI给0xe36c,再通过0xe36c转出DAI至项目方)

0xa85ce7d9d0882b858bf3dbc8f64b72ff05f5399ec3d78d32cea82e6795ccc7ce

(从0x3aa2转出USDT至项目方)

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

下面以黑客1正式攻击交易为例

黑客的攻击执行了delegateCall,将攻击者的合约地址写入到compoundModel中initialize函的forge_参数。setForge(address) 函数在初始化函数中执行。这是一个修改Forge地址的功能。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

然后,它执行withdrawToForge函数并将所有资金发送到攻击者的合约。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

随后在调用initialize函数发现forge_参数已经被替换成攻击者合约的地址。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

链接到forge_的所有CompoundModel都使用相同的代码,因此所有资产都转移到攻击者的合约中。目前,导致黑客入侵的代码已被项目方修补。添加了两个Modifiers(仅Creator,initializer),这样只有Contract Creator可以调用Initialize函数并控制它只被调用一次。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

二、安全建议

本次攻击的根本原因在于 CompoundModel 合约中缺少对初始化函数的安全控制,可以被重复初始化。初始化函数应只能调用一次,而且需要进行调用者权限鉴别;如果合约是使用初始化函数,而不是在构造函数中进行初始化,则应使用安全合约库中的初始化器来进行初始化。避免合约被恶意操纵,造成合约关键参数和逻辑的错误。

SharkTeam提醒您,在涉足区块链项目时请提高警惕,选择更稳定、更安全,且经过完备多轮审计的公链和项目,切不可将您的资产置于风险之中,沦为黑客的提款机。而作为项目方,智能合约安全关系用户的财产安全,至关重要!区块链项目开发者应与专业的安全审计公司合作,进行多轮审计,避免合约中的状态和计算错误,为用户的数字资产安全和项目本身安全提供保障。

SharkTeam作为领先的区块链安全服务团队,为开发者提供智能合约审计服务。智能合约审计服务由人工审计和自动化审计构成,满足不同客户需求,独家实现覆盖高级语言层、虚拟机层、区块链层、业务逻辑层四个方面近两百项审计内容,全面保障智能合约安全。

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析

SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析 由www.b2bchain.cn 提供
文章整理自网络,只为个人学习与分享使用
链接地址https://www.b2bchain.cn/22550.html

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » SharkTeam独家分析 | 恶意初始化:Punk Protocol被黑事件分析
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们