【漏洞分析】Vestra DAO 攻击事件:这个质押项目它取款不核销呀

背景信息

攻击交易:https://app.blocksec.com/explorer/tx/eth/0x9a1d02a7cb9fef11fcec2727b1f9e0b01bc6bcf5542f5b656c84d6400a1b4604

漏洞合约:https://etherscan.io/address/0x8a30d684b1d3f8f36b36887a3deca0ef2a36a8e3#code

LockedStaking 合约提供质押功能,用户调用 stake 函数质押时会根据质押时长立即计算收益 yield,并且记录在用户的收益 user.yield 上。等到该笔质押的时间过后,用户可以调用 unStake 函数取回本金和收益。

Trace 分析

攻击者不断用同一笔资金进行 startunStake 操作,攻击者创建新合约 strat 存入 500000 VSTR,然后通过 0x1f2c 合约 调用 unStake 取回 520000 VSTR。

start 操作就是通过新创建的合约进行 stake

漏洞分析

问题出在 LockedStaking 合约的 unStake 函数,unStake 函数对质押的状态检查与更新存在问题,导致在用户的质押到期后,可以无限次进行取款。

  1. require 检查的 user.stakeAmount 参数,在 unstake 操作后不更新
  2. unstake 操作后更新的 user.isActive 参数,却不检查。

那么攻击者可以无限次 unstake 来获取 VSTR,为什么还需要创建新合约进行 stake 操作呢?

因为在 unstake 的时候会更新 data.totalStaked -= stakeAmount; ,如果不创建新合约进行 stake 操作增加 data.totalStaked 的值,就会发生下溢出。

相关推荐
阿菜ACai8 天前
20250918 - NGP Token 攻击事件:价格维持机制为攻击者做了嫁衣
漏洞分析
阿菜ACai10 天前
20250917 - WETToken 攻击事件:价格操控产生的套利空间
漏洞分析
阿菜ACai11 天前
Morpheus 审计报告分享3:StETH 的精度丢失转账机制
漏洞分析
阿菜ACai13 天前
Morpheus 审计报告分享2:ChianLink 数据源有着不同的“心跳”
漏洞分析
阿菜ACai18 天前
Morpheus 审计报告分享:AAVE 项目 Pool 合约地址更新导致的组合性风险
漏洞分析
墨染 殇雪22 天前
文件上传漏洞基础及挖掘流程
网络安全·漏洞分析·漏洞挖掘·安全机制
阿菜ACai2 个月前
20250730 - AnyswapV4Router 授权漏洞: 绕过了不存在的 permit 函数
漏洞分析
阿菜ACai2 个月前
20250709 - GMX V1 攻击事件: 重入漏洞导致的总体仓位价值操纵
漏洞分析·defi
阿菜ACai3 个月前
20250620 - Bonding 攻击事件: 项目方不创建的池子由我攻击者来创建
漏洞分析
阿菜ACai4 个月前
20250528 - Usual 攻击事件: 价差兑换与请君入瓮
漏洞分析·defi