登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Morpheus 审计报告分享3:StETH 的精度丢失转账机制 ...
Morpheus 审计报告分享3:StETH 的精度丢失转账机制
[ 复制链接 ]
飧沾
2025-10-1 17:39:23
漏洞信息
漏洞报告
https://code4rena.com/audits/2025-08-morpheus/submissions/S-198
漏洞背景
https://docs.lido.fi/guides/lido-tokens-integration-guide#steth-internals-share-mechanics
StETH 是一种通过将 ETH 质押获取的 rebasing token,在用户持有的过程中余额会随着奖励的累加而自动增加。用户只需要持有 StETH 就可以获得 ETH 奖励,持有的 StETH 数量与可赎回的 ETH 数量是几乎相等的。
而实现这个 rebasing 功能依赖的是内部的 share 机制,share 的计算公式是
shares = ETHAmount * TotalPooledETH / TotalShares
复制代码
ETH → StETH 的代码实现是这样的
而 StETH 的余额也是通过 shares 来计算得到的。
精度丢失问题
在进行转账时,会经过 StETH amount → shares → transfer shares → update StETH balance 的过程
而由于 StETH amount → shares 的环节是向下取整的,所以可能会存在在进行 transfer 时,实际收到的 StETH 数量比传入的参数要小的情况。
举例说明:
假设此时 StETH 中 shares : ETH = 1000 : 1500,UserA 向 UserB 进行转账
UserA 持有 1500 StETH,对应 1000 shares
Transfer 1300 StETH → shares = 1300 * 1000 / 1500 = 866.66… = 866
UserB 收到 866 shares,对应 StETH = 866 * 1500 / 1000 = 1299
这就导致了 UserA 在调用 transfer 函数时传入的 amount 为 1300,而 UserB 实际上收到的代币数量为 1299。
漏洞案例
当合约对 AAVE 进行 supply 操作时,如果 token 为 StETH,可能会出现实际 supply 的 StETH 数量小于 amount_ 的值。而在后续的 deposited 和 lastUnderlyingBalance 变量计算中则是直接累加上了 amount_ 的值,使得它们的值比实际值要偏大。
而在后续的 distributeRewards() 函数中,首先会计算获得的 aToken 数量(等于所提供的 StETH 数量),随后用来减去 lastUnderlyingBalance。如果此时 StETH 的转账发生了精度丢失,且 aToken 的奖励还没开始累计,这个减法操作将会发生下溢出,导致操作回滚。
修复建议
其实 Morpheus 在 User 往 Morpheus 协议转账这个层面有考虑到这个问题,所以采用的是转账前后账户余额差值(实际到账金额)作为 amount_ 的值。而在 Morpheus 协议向 AAVE 转账这个环节没有采用这种实践。
补充材料
https://docs.lido.fi/guides/lido-tokens-integration-guide#wsteth
由于 StETH 的 rebasing 特性,在 DeFi 协议中使用起来可能会难以处理。所以为了解决这个问题,官方提供了 warp StETH 实现,也就是 WstETH。WstETH 的余额不会发生 rebasing,只能在转账、铸造和销毁时更改。
从代码实现来看,其实 WstETH 对应的就是 StETH 里面的 shares
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Morpheus
审计
报告
分享
StETH
相关帖子
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
解读 DZone 2025 数据工程趋势报告【附报告下载】
测试报告不会写?4个关键要素让你的报告清晰专业
软件开发实战经验分享(全过程版)一
计算机网络学习分享-0
Qwen2.5-VL技术报告
论文分享-ETEGRec:端到端可学习的物品分词与生成式推荐
实验报告1(switch语句,二维数组)
Qwen2.5技术报告
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
0
338
全愉婉
2025-10-01
业界
解读 DZone 2025 数据工程趋势报告【附报告下载】
0
615
少琼
2025-10-02
科技
测试报告不会写?4个关键要素让你的报告清晰专业
0
442
卢铃语
2025-10-05
安全
软件开发实战经验分享(全过程版)一
1
191
接快背
2025-10-07
安全
计算机网络学习分享-0
0
886
泻缥
2025-10-08
业界
Qwen2.5-VL技术报告
0
449
劝匠注
2025-10-10
业界
论文分享-ETEGRec:端到端可学习的物品分词与生成式推荐
0
430
雌鲳签
2025-10-11
安全
实验报告1(switch语句,二维数组)
0
953
这帜
2025-10-12
业界
Qwen2.5技术报告
0
451
精滂软
2025-10-13
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
科技
签约作者
程序园优秀签约作者
发帖
飧沾
2025-10-1 17:39:23
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
烯八
9972
8
匝抽
9986
9
筒濂
9977
10
孙淼淼
9983
查看更多