背景

造成本次攻击的原因是关键函数的鉴权不当,使得任意用户可以设置关键的变量值,从而导致攻击的发生。

被攻击合约:https://www.bscscan.com/address/0xe9bc03ef08e991a99f1bd095a8590499931dcc30

合约目录:

contract
├─autocompound
│ AutocompundStaking.sol

├─base
│ BaseStaking.sol // stake 和 withdraw
│ MintableSupplyStaking.sol
│ TaxedStaking.sol

├─lib
│ StakingUtils.sol

├─presets
│ MintableAutoCompundRelockBonus.sol // 被攻击合约

└─timelock
FixedTimeLockStaking.sol
RelockBonusStaking.sol
StaticFixedTimeLockStaking.sol

更多信息: DeFi Hacks Analysis@Sun @XREX security team

漏洞分析

MintableAutoCompundRelockBonus.setToken 函数功能权限设置不当,任意用户可以修改结构体 configuration 中的 stakingTokenrewardsToken 参数。

struct StakingConfiguration {
uint256 rewardRate;
uint256 startTime;
uint256 minStake;
uint256 maxStake;
ERC20 stakingToken;
ERC20 rewardsToken;
}

攻击过程

  1. 创建一个 fakeToken

  2. 调用 setToken 函数将 stakingTokenrewardsToken 设为攻击者创建的 fakeToken

  3. 调用 stake 函数,向 MintableAutoCompundRelockBonus 合约转入 fakeToken;。此时 _balances[msg.sender] 将会记录攻击者存入的 fakeToken 数量;

  4. 调用 setToken 函数将 stakingTokenrewardsToken 设为 HPAY

  5. 调用 withdraw 函数,从 MintableAutoCompundRelockBonus 合约转出 HPAY 。此时合约根据先前步骤 3 中存入 fakeToken 所记录的 _balances[msg.sender] 进行提款操作,实际提出的是 HPAY

后记

好了,漏洞很简单是吧。那不重要,随它吧。最近这段时间没什么干劲,十一月中旬了,还没拿到 offer,还没拿到 offer,还没拿到 offer。什么都没确定,什么都说不准。寒气元年的应届毕业生,躺在砧板上。

【漏洞分析】HPAY 攻击事件分析的更多相关文章

  1. 【漏洞复现】Paraluni 安全事件分析及复现

    Paraluni 被黑分析 前言 Paraluni (平行宇宙)是新加坡 Parallel Universe 基金会发布的一个 基于币安智能链的 DeFi 项目,更多相关内容见此处.在 2022 年 ...

  2. 【漏洞分析】KaoyaSwap 安全事件分析

    相关信息 KaoyaSwap 是 BSC 链上的一个自动做市商 AMM.然后,现在他们的官网 https://www.kaoyaswap.com/ 已经打不开了(如果我打开方式没错的话).所以就直接进 ...

  3. 007_ip统计及攻击ip分析

    线上经常有被扫描的DDoS攻击事件,需要集合日志进行分析,这里有两种方法,分别是通过shell和python的方式. 一.shell '''<1>shell一句命令分析 http://bl ...

  4. Log4shell漏洞研究及其挖矿案例分析

    本文首发于云影实验室,为本人创作,现转载到个人博客,记录一下. 原文链接:https://mp.weixin.qq.com/s/O2xHr2OEHiga-qTnbWTxQg Apache Log4j是 ...

  5. 【APT】Hades APT组织针对乌克兰发起网络攻击事件分析

    背景 Hades一个充满神秘色彩的APT组织,该组织因为2017年12月22日针对韩国平昌冬奥会的攻击活动被首次发现,后来卡巴斯基将该次事件的攻击组织命名为Hades.但是该攻击组织的归属问题却一直未 ...

  6. 从源码的角度分析ViewGruop的事件分发

    从源码的角度分析ViewGruop的事件分发. 首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View ...

  7. OneAlert 入门(三)——事件分析

    OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...

  8. OneAlert 入门(二)——事件分析

    OneAlert 是国内首个 SaaS 模式的云告警平台,集成国内外主流监控/支撑系统,实现一个平台上集中处理所有 IT 事件,提升 IT 可靠性.有了 OneAlert,你可以更快更合理地为事件划分 ...

  9. 跨浏览器resize事件分析

    resize事件 原生事件分析 window一次resize事件: IE7 触发3次, IE8 触发2次, IE9 触发1次, IE10 触发1次 Chrome 触发1次 FF 触发2次 Opera ...

  10. GridView事件分析

    GridView事件分析 (转) P1默认数据绑定过程 编号 事件名称 作用 E1 DataBinding 数据绑定之前触发,在这个事件之前(第一次生成GridView),GridView不存在行数据 ...

随机推荐

  1. Scala选择分支if else

    1 package com.atguigu.chapter03 2 3 import scala.io.StdIn 4 5 /** 6 * Scala 中 if else 表达式其实是有返回值的,具体 ...

  2. FreeSql生产环境自动升级数据库解决方案

    项目场景: 使用FreeSql,包含所有的ORM数据库,都会存在这样的问题.在codefirst模式下,根据代码自动更新数据库,都建议不要在生产环境使用.为什么呢? 其实不建议使用,主要是根据代码自动 ...

  3. 学习Source Generators之输出生成的文件

    上一篇文章学习了通过获取和解析swagger.json的内容,来生成API的请求响应类. 但是其中无法移动与编辑. 那么本文将介绍如何输出生成的文件. EmitCompilerGeneratedFil ...

  4. #Tarjan#洛谷 5676 [GZOI2017]小z玩游戏

    题目 分析 可能玩两次也就是形成环即是Tarjan缩点后在同一个强连通分量 如果按照游戏连边数量将达到\(O(n^2)\),当中其实有很多边可以共用, 考虑\(i\)连向\(i\)的倍数,以及有趣程度 ...

  5. OpenHarmony技术日全面解读3.1 Release版本,系统基础能力再升级

    4 月 25 日,OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日在深圳举办,对 OpenHarmony 3.1 Release 版本核心技术进 ...

  6. 帕鲁重大更新!macOS 竟然也能玩了

    近日,<幻兽帕鲁>迎来了 v0.2.1.0 大版本的更新. 本次更新的最大亮点是新实装的突袭头目系统.玩家可以在 "召唤祭坛" 献祭石板,从而召唤强大的突袭头目.其中, ...

  7. Linux 编译 libjpeg-9e

    jpeg的库有两个:一个是官方的 libjpeg  还有一个是 libjpeg-turbo JPEG库(libjpeg-turbo):https://libjpeg-turbo.org/ Libjpe ...

  8. Python操作临时文件---tempfile

    # 使用标准库中 tempfile 下的 TemporaryFile,NamedTemporaryFile # TemporaryFile(mode='w+b', bufsize=1, suffix= ...

  9. CentOS 9 Basic Developing environment and IDEs installing guide

    I . Install Google Chrome browser Check the installed chrome and related packages with the command & ...

  10. 如何快速实现Prometheus监控Kubernetes集群

    Prometheus K8S集群中常见的监控工具有哪些: Kubernetes Dashboard Kube-monkey K8s-testsuite Kubespray Minikube Prome ...