@@ -15,6 +15,54 @@ timezone: UTC+8
1515## Notes
1616
1717<!-- Content_START -->
18+ # 2025-08-14
19+
20+ 今日学习了技术向的相关东西
21+ 具体如下:
22+ 2025-08-14
23+ Web3 审计课程总结:重要漏洞发现
24+ 以下是对Web3审计课程中讨论的三个关键漏洞(Incorrect Fee Structure、DoS Dividends、Swap Margin)的总结,基于讲者的思路,梳理问题本质、攻击路径、影响及解决方案。全程用中文,确保清晰易懂。
25+
26+ 1 . Incorrect Fee Structure(不正确的费用结构)
27+ 问题描述
28+ 在Key Finance协议中,奖励复合(reward compounding)机制存在漏洞,允许攻击者通过三明治攻击(sandwich attack)窃取质押奖励。核心问题是:
29+
30+ 无费用或锁定期:质押和取消质押无需成本或时间限制。
31+ 奖励分配基于瞬时快照:奖励通过updateAllRewards函数更新,分配按调用时的质押比例计算,不考虑质押时间。
32+ 攻击路径
33+ 攻击者(如Bob)监控mempool,在奖励更新前一刻质押大额资金(例如10000 GMX Key),获取奖励后立即取消质押并卖出。例如:
34+
35+ Alice质押100(持续一周),Bob质押10000(仅1秒)。
36+ 总质押10100,产生1%利润(101单位奖励)。
37+ Alice得:101 * (100/10100) ≈ 1单位;Bob得:101 * (10000/10100) ≈ 100单位。
38+ Bob贡献极少(仅1秒),却拿走99%奖励,严重稀释长期质押者(如Alice)的收益。
39+
40+ 影响
41+ 奖励稀释:长期质押者的收益被短期投机者抢夺,破坏激励机制。
42+ 无风险套利:攻击者无需承担资产价格风险,成本极低。
43+ 协议吸引力下降:用户因收益低而失去质押动力,可能导致流动性不足。
44+ 解决方案
45+ 锁定期:要求质押持续一定时间(如7天)。
46+ 收取费用:对质押/取消质押加费用,增加攻击成本。
47+ 时间加权奖励:奖励按质押时间* 金额分配,类似“points per share”模型。
48+ 平滑奖励更新:奖励随时间累积(如GMX的P&L计算),避免阶梯式更新。
49+ 2 . DoS Dividends(分红机制的DoS攻击)
50+ 问题描述
51+ 协议的distributeDividends函数使用无界for循环遍历users数组,为每个用户分配分红。攻击者可通过创建大量地址(每个mint 1 wei)无限膨胀users数组,导致分红函数gas超限,交易失败。
52+
53+ 攻击路径
54+ 添加用户:mint函数在余额为0时将地址push到users数组。
55+ 膨胀数组:攻击者创建数千地址,分别mint 1 wei,使数组巨大。
56+ 触发DoS:调用distributeDividends时,循环遍历所有用户,耗尽block gas limit。
57+ 影响
58+ 协议瘫痪:分红无法分发,影响正常用户。
59+ 用户信任下降:协议功能受阻,可能导致用户流失。
60+ 解决方案
61+ Points per Share模型:不逐个计算用户分红,用全局dividendPerToken记录每token分红。
62+ 计算公式:dividendPerToken = totalDividends / totalSupply。
63+ 用户领取:balance * (currentDividendPerToken - userLastDividendPerToken)。
64+ 优势:只需更新单一存储变量,适用于所有持有者,避免循环。
65+
1866# 2025-08-13
1967
2068今天学习了技术的相关内容,具体如下
0 commit comments