零时科技 || RareStaking 攻击事件分析

  • 事件概述:2025年7月28日,Ethereum上的RareStaking项目遭遇攻击,损失25.8k美元,攻击者通过漏洞修改了关键参数并盗取资金。

  • 攻击过程

    • 攻击者创建恶意合约,获取Staking Token后调用updateMerkleRoot函数,错误逻辑导致权限验证失效(原代码误用||而非&&)。
    • 修改Merkle Tree Root后,攻击者通过验证提取全部项目Token。
    • 项目方事后紧急修复代码,将权限校验逻辑修正为“非管理员且非指定地址时拒绝操作”。
  • 漏洞根源updateMerkleRoot函数的权限校验逻辑错误,开发者混淆了require条件中的逻辑运算符(||误用),使得非授权调用可通过验证。

  • 后续措施:项目方升级合约并修正代码,建议加强经济模型设计、多轮审计及交叉审计以避免类似问题。

总结

背景介绍

2025年7⽉28⽇,我们监控到 Ethereum 上针对RareStaking的攻击事件https://etherscan.io/tx/0xd813751bfb98a51912b8394b5856ae4515be6a9c6e5583e06b41d9255ba6e3c1,

攻击共造成25.8kUSD 的损失。

攻击及事件分析

⾸先,攻击者创建了⼀个攻击合约,并在攻击合约中获取了RareStaking对应的Staking Token。

零时科技 || RareStaking 攻击事件分析

随后,攻击者通过调⽤updateMerkleRoot更新了Merkle Tree Root。

零时科技 || RareStaking 攻击事件分析

让我们看⼀下 updateMerkleRoot 的代码:

function updateMerkleRoot(bytes32 newRoot) external override {

require((msg.sender != owner() || msg.sender !=

address(0xc2F394a45e994bc81EfF678bDE9172e10f7c8ddc)), "Not authorized to update merkle root");

if (newRoot == bytes32(0)) revert EmptyMerkleRoot();

currentClaimRoot = newRoot;

currentRound++;

emit NewClaimRootAdded(newRoot, currentRound, block.timestamp);

}

⼀般来说,更新 Merkle Tree Root 是敏感操作,通常需要管理员或者运营⼈员才可能更改。但是程序代码中的逻辑,不是 owner 且不是项⽬⽅地址的⼈才可以更改,显然,开发者把 require 的功能理解错了。在攻击者 updateMerkleRoot 后,便发起了 claim ,提取了项⽬中的所有 Token 。

零时科技 || RareStaking 攻击事件分析

由于MerkleRoot已经被攻击者修改,所以claim可以通过验证。在被攻击后,项⽬⽅在交易

https://etherscan.io/tx/0x65f37e4b1ec995adadd3f264a77f67b6bcbb52f16f29cf3302c9bf90396aa67e

中升级了实现合约,将 updateMerkleRoot 的代码修改为下⾯的代码:

function updateMerkleRoot(bytes32 newRoot) external override {

if (

(msg.sender != owner() &&

msg.sender !=

address(0xc2F394a45e994bc81EfF678bDE9172e10f7c8ddc))

) revert NotAuthorized();

if (newRoot == bytes32(0)) revert EmptyMerkleRoot();

currentClaimRoot = newRoot;

currentRound++;

emit NewClaimRootAdded(newRoot, currentRound, block.timestamp);

}

可以看到,修改后的逻辑才能正确验证调⽤者的权限。

总结

本次漏洞的成因是函数 updateMerkleRoot 函数在校验调⽤者权限时,没有正确理解 require 的作⽤,导致权限验证失效。最终,导致攻击者通过权限校验修改了 MerkleTreeRoot 后通过验证提取了项⽬所有资⾦。建议项⽬⽅在设计经济模型和代码运⾏逻辑时要多⽅验证,合约上线前审计时尽量选择多个审计公司交叉审计。

 

分享至:

作者:零时科技

本文为PANews入驻专栏作者的观点,不代表PANews立场,不承担法律责任。

文章及观点也不构成投资意见

图片来源:零时科技如有侵权,请联系作者删除。

关注PANews官方账号,一起穿越牛熊
推荐阅读
2025-12-07 06:24
2025-12-05 14:50
2025-12-05 14:15
2025-12-05 09:22
2025-12-03 13:00
2025-12-02 06:50

热门文章

行业要闻
市场热点
精选读物

精选专题

App内阅读