该合约管理超过 $10亿美元 资产,存在严重安全漏洞!
审计地址:0x173e314c7635b45322cd8cb14f44b312e079f3af
| 项目 | 详情 |
|---|---|
| 合约名称 | StakingRewards (Synthetix Fork) |
| 管理资产 | $1,064,935,106.51 |
| 风险等级 | 🔴🔴🔴 极度危险 |
| 关键漏洞 | 2个 |
| 高危漏洞 | 2个 |
| 中危漏洞 | 3个 |
- 问题:
withdraw()函数缺少whenNotPaused修饰符 - 影响:Owner暂停合约后,$1,062,689,241 的 USDS 将被永久锁定
- 严重性:🔴 关键
- 修复优先级:P0 - 立即
- 问题:
recoverERC20()未阻止提取奖励代币 - 影响:价值 $2,245,864 的 SPK 代币可被Owner转走
- 严重性:🔴 关键
- 修复优先级:P0 - 立即
staking-rewards-audit/
├── README.md # 本文件
├── contracts/
│ ├── StakingRewards.sol # 原始合约代码
│ └── StakingRewardsFixed.sol # 修复版本
├── tests/
│ ├── security_test.sol # 安全测试用例
│ └── poc_exploit.sol # 漏洞概念验证
├── reports/
│ ├── full_audit_report.md # 完整审计报告
│ └── executive_summary.md # 执行摘要
└── recommendations/
├── immediate_fixes.md # 紧急修复方案
└── long_term_improvements.md # 长期改进建议
// 1. 添加紧急提取功能
function emergencyWithdraw() external nonReentrant {
uint256 amount = _balances[msg.sender];
require(amount > 0, "Nothing to withdraw");
_balances[msg.sender] = 0;
totalSupply = totalSupply.sub(amount);
stakingToken.safeTransfer(msg.sender, amount);
emit Withdrawn(msg.sender, amount);
}
// 2. 保护奖励代币不被提取
function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner {
require(
tokenAddress != address(stakingToken) &&
tokenAddress != address(rewardsToken), // 添加此行
"Cannot withdraw staking/reward tokens"
);
IERC20(tokenAddress).safeTransfer(owner, tokenAmount);
emit Recovered(tokenAddress, tokenAmount);
}| 漏洞 | 影响资金 | 影响用户 | 利用难度 |
|---|---|---|---|
| 资金锁定 | $1,062,689,241 | 所有用户 | 简单 |
| 奖励窃取 | $2,245,864 | 所有质押者 | 简单 |
| 所有权转移 | 全部控制权 | 所有用户 | 中等 |
| 中心化风险 | 全部资产 | 所有用户 | - |
影响程度
↑
高 │ [1][2] [3]
│
中 │ [4][5]
│
低 │ [6][7]
└───────────────→
低 中 高
可能性
- [1] 资金锁定漏洞
- [2] 奖励代币窃取
- [3] 所有权转移风险
- [4] 中心化风险
- [5] 奖励计算溢出
- [6] 前端运行攻击
- [7] 零供应量奖励丢失
- ✅ 修复资金锁定漏洞
- ✅ 保护奖励代币
- ✅ 部署紧急提取功能
- 🔄 实施两步所有权转移
- 🔄 添加多签钱包
- 🔄 引入时间锁机制
- 📋 专业第三方审计
- 📋 实施去中心化治理
- 📋 添加监控和预警系统
在修复完成前:
- 🚫 避免大额质押
⚠️ 已质押用户密切关注合约状态- 📢 及时关注官方公告
如有疑问或需要技术支持,请通过以下方式联系:
- GitHub Issues: [本仓库Issues页面]
- 安全漏洞报告: security@[project].com
本审计报告基于公开可见的合约代码和链上数据。审计结果仅供参考,不构成投资建议。用户应自行评估风险。
审计日期:2025-09-25 审计团队:独立安全研究员 审计工具:Claude Code EVM Contract Audit Agent