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

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

时间:2024-12-05 15:20:58浏览次数:5  
标签:stake unstake 质押 Vestra 核销 DAO unStake 攻击者 合约

背景信息

攻击交易: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。

image

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

image

漏洞分析

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

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

image

那么攻击者可以无限次 unstake 来获取 VSTR,为什么还需要创建新合约进行 stake 操作呢?
因为在 unstake 的时候会更新 data.totalStaked -= stakeAmount; ,如果不创建新合约进行 stake 操作增加 data.totalStaked 的值,就会发生下溢出。

image

image

标签:stake,unstake,质押,Vestra,核销,DAO,unStake,攻击者,合约
From: https://www.cnblogs.com/ACaiGarden/p/18588685

相关文章

  • JavaApi.Dao模式
    Dao模式回顾增删改连接对象执行对象查连接对象执行对象结果集项目结构---包命名的规范com.zking.util:提供工具类和辅助方法,增强代码的复用性和可维护性。(帮助类)com.zking.pojo:存放实体类,表示业务对象,确保数据的一致性和完整性。com.zking.dao:负责数据访......
  • Day06-核销主题开发
    文章目录Day06-核销主题开发一、DWD层表处理门店销售明细表三个事实表处理门店销售明细表门店销售支付表三张门店销售表关联关联五个维度表线上余额表商城订单表商城订单明细表商城核销明细表门店库调表其他表二、DWM层开发2-1DWM层建表2-2DWM层表处理商品销售明细......
  • 2017 ACM/ICPC Asia Regional Qingdao Online(SDKD 2024 Summer Training Contest J2)
    C-TheDominatorofStrings题意给定n个串,问是否有一个串包含其他所有串,有就输出这个串。思路如果有解,答案必定是最长串,一一比较即可。(没想到.find()就能过......
  • P9891 [ICPC2018 Qingdao R] Repair the Artwork 题解
    所求即为选择的区间恰好包含所有\(a_i=2\)的位置的方案数。设所有\(a_i=2\)的位置\(i\)组成集合\(S\),考虑容斥被选中的位置是\(S\)的子集的方案数\(g(S)\)。设\(T\)为\(S\)的子集,\(T\)的贡献\(f(T)\)为:选中的位置都在\(T\)的子集中的方案数乘容斥系数\(......
  • 2016 ACM/ICPC Asia Regional Qingdao Online(SDKD 2024 Summer Training Contest H2)
    A-ICountTwoThree题意给定n,求第一个\(\ge\)n的数k,且k=\(2^a3^b5^c7^d\)。思路考虑到样例很多,直接打表存入set省去数组排序操作,由于n$\le$1e9,所以只需要打到1e9后二分即可。(记得加上快读快写,T得饱饱的......
  • 高级java每日一道面试题-2024年9月06日-基础篇-Java中的PO、VO、BO、DO、DAO、DTO、PO
    如果有遗漏,评论区告诉我进行补充面试官:Java中的PO、VO、BO、DO、DAO、DTO、POJO是什么意思?我回答:PO持久化对象(PersistentObject)PO是持久化对象,用于表示数据库中的实体或表的映射通常与数据库表的结构和字段对应PO的属性对应数据库表的字段,可以进行持久化操作(新......
  • jdbc-day02-dao
    dao_impl_EmployeeDaoImplpackagecom.youcai.emp.dao.impl;importcom.youcai.emp.dao.EmployeeDao;importcom.youcai.emp.util.DruidUtil;importcom.youcai.emp.vo.Employee;importjava.sql.Connection;importjava.sql.Date;importjava.sql.PreparedStatement......
  • 影刀RPA实战:美团平台与旺店通ERP订单同步核销及物流单号用户通知(一)
    介绍本文旨在操作如何高效地在美团平台和旺店通ERP之间进行订单同步,实现订单核销和物流单号实时通知用户。我们将详细介绍从导出美团平台的核销订单到通知用户发货物流单号的完整流程,包括注意事项和准备工作。本篇文章主要阐述下开发前的准备工作,讲述下开发流程步骤。准备工......
  • springboot项目中mybatis的dao接口实现类是如何添加到spring容器中的
    一、@Mapper注解在springboot+mybatis的工程中,如果不做特殊配置,mybatis会查找有@Mapper的接口创建其代理对象添加到spring容器中,接下来就来分析下这个是如何实现的。关键点就在MybatisAutoConfiguration这个自动配置类中publicclassMybatisAutoConfiguration{//这个配......
  • 【IDEA飘红】Could not autowire. No beans of 'OrderDao' type found.
     问题背景:SpringBoot框架下,MyBatis-Generator的插件生成了Dao.java、Bean.java、Mapper.xml,并且通过MapperScans注解把Dao层注入到Spring中。但是Dao层本身没有添加@Mapper注解或者@Component注解,导致IDEA无法识别Dao层为JavaBean,于是报错:Couldnotautowire.Nobeansof'O......