REWARD:慢雾:pGALA 事件根本原因系私钥明文在 GitHub 泄露

据慢雾区情报,11月4日,一个BNBChain上地址凭空铸造了超10亿美元的pGALA代币,并通过PancakeSwap售出获利,导致此前GALA短时下跌超20%。慢雾分析结果如下:

1.在pGALA合约使用了透明代理模型,其存在三个特权角色,分别是Admin、DEFAULT_ADMIN_ROLE与MINTER_ROLE。

慢雾:6月24日至28日Web3生态因安全问题损失近1.5亿美元:7月3日消息,慢雾发推称,自6月24日至6月28日,Web3生态因安全问题遭遇攻击损失149,658,500美元,包括Shido、Ichioka Ventures、Blockchain for dog nose wrinkles、Chibi Finance、Biswap、Themis等。[2023/7/3 22:14:33]

2.Admin角色用于管理代理合约的升级以及更改代理合约Admin地址,DEFAULT_ADMIN_ROLE角色用于管理逻辑中各特权角色,MINTER_ROLE角色管理pGALA代币铸造权限。

慢雾:Cover协议被黑问题出在rewardWriteoff具体计算参数变化导致差值:2020年12月29日,慢雾安全团队对整个Cover协议被攻击流程进行了简要分析。

1.在Cover协议的Blacksmith合约中,用户可以通过deposit函数抵押BPT代币;

2.攻击者在第一次进行deposit-withdraw后将通过updatePool函数来更新池子,并使用accRewardsPerToken来记录累计奖励;

3.之后将通过_claimCoverRewards函数来分配奖励并使用rewardWriteoff参数进行记录;

4.在攻击者第一次withdraw后还留有一小部分的BPT进行抵押;

5.此时攻击者将第二次进行deposit,并通过claimRewards提取奖励;

6.问题出在rewardWriteoff的具体计算,在攻击者第二次进行deposit-claimRewards时取的Pool值定义为memory,此时memory中获取的Pool是攻击者第一次withdraw进行updatePool时更新的值;

7.由于memory中获取的Pool值是旧的,其对应记录的accRewardsPerToken也是旧的会赋值到miner;

8.之后再进行新的一次updatePool时,由于攻击者在第一次进行withdraw后池子中的lpTotal已经变小,所以最后获得的accRewardsPerToken将变大;

9.此时攻击者被赋值的accRewardsPerToken是旧的是一个较小值,在进行rewardWriteoff计算时获得的值也将偏小,但攻击者在进行claimRewards时用的却是池子更新后的accRewardsPerToken值;

10.因此在进行具体奖励计算时由于这个新旧参数之前差值,会导致计算出一个偏大的数值;

11.所以最后在根据计算结果给攻击者铸造奖励时就会额外铸造出更多的COVER代币,导致COVER代币增发。具体accRewardsPerToken参数差值变化如图所示。[2020/12/29 15:58:07]

3.在此事件中,pGALA代理合约的Admin角色在合约部署时被指定为透明代理的proxyAdmin合约地址,DEFAULT_ADMIN_ROLE与MINTER_ROLE角色在初始化时指定由pNetwork控制。proxyAdmin合约还存在owner角色,owner角色为EOA地址,且owner可以通过proxyAdmin升级pGALA合约。

声音 | 慢雾:采用链上随机数方案的 DApp 需紧急暂停:根据近期针对EOS DApp遭遇“交易排挤攻击”的持续性威胁情报监测:EOS.WIN、FarmEOS、影骰、LuckBet、GameBet、Fishing、EOSDice、STACK DICE、ggeos等知名DAPP陆续被攻破,该攻击团伙(floatingsnow等)的攻击行为还在持续。在EOS主网从根本上解决这类缺陷之前,慢雾建议所有采用链上随机数方案的DAPP紧急暂停并做好风控机制升级。为了安全起见,强烈建议所有竞技类DAPP采用EOS官方很早就推荐的链下随机种子的随机数生成方案[2019/1/16]

4.但慢雾安全团队发现proxyAdmin合约的owner地址的私钥明文在Github泄漏了,因此任何获得此私钥的用户都可以控制proxyAdmin合约随时升级pGALA合约。

5.proxyAdmin合约的owner地址已经在70天前被替换了,且由其管理的另一个项目pLOTTO疑似已被攻击。

6.由于透明代理的架构设计,pGALA代理合约的Admin角色更换也只能由proxyAdmin合约发起。因此在proxyAdmin合约的owner权限丢失后pGALA合约已处于随时可被攻击的风险中。

综上所述,pGALA事件的根本原因在于pGALA代理合约的Admin角色的owner私钥在Github泄漏,且其owner地址已在70天前被恶意替换,导致pGALA合约处于随时可被攻击的风险中。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金星链

[0:0ms0-0:801ms