Dyna事件 漏洞分析

  • Archime
  • 更新于 2023-03-07 16:48
  • 阅读 3222

1.漏洞简介https://twitter.com/BlockSecTeam/status/1628319536117153794https://twitter.com/BeosinAlert/status/16283016358344867842.相关地址或交易攻击交易1:http

1. 漏洞简介

https://twitter.com/BlockSecTeam/status/1628319536117153794 https://twitter.com/BeosinAlert/status/1628301635834486784

1.png

2. 相关地址或交易

攻击交易1: https://bscscan.com/tx/0x7fa89d869fd1b89ee07c206c3c89d6169317b7de8b020edd42402d9895f0819e 攻击交易2: https://bscscan.com/tx/0xc09678fec49c643a30fc8e4dec36d0507dae7e9123c270e1f073d335deab6cf0 攻击合约:0xd360b416ce273ab2358419b1015acf476a3b30d9 攻击账号:0x0c925a25fdaac4460cab0cc7abc90ff71f410094 被攻击合约:StakingDYNA 0xa7b5eabc3ee82c585f5f4ccc26b81c3bd62ff3a9

3. 获利分析

2.png

4. 攻击过程&漏洞原因

整个攻击过程分为两部分: 1) 准备阶段: 0x7fa89d869fd1b89ee07c206c3c89d6169317b7de8b020edd42402d9895f0819e 攻击者准备大量账号,调用StakingDYNA. deposit存入少量 DYNA代币。

3.png 在deposit函数中,初次deposit的账号将会记录下当前block.timestamp,存储在stakeDetail.lastProcessAt中:

4.png 2) 攻击阶段: 0xc09678fec49c643a30fc8e4dec36d0507dae7e9123c270e1f073d335deab6cf0 攻击者通过闪电贷获取大量dyna代币,先通过上一步的合约调用StakingDYNA. deposit将代币存储在StakingDYNA合约中,再直接调用StakingDYNA. redeem取回利息。 在攻击者第二次deposit时,StakingDYNA合约并未更新时间戳,计算利息的时间差错误计算为redeem – deposit1,而实际上应该为 redeem – deposit2。因为攻击时deposit2与redeem在同一tx中,interest应该为0:

5.png

6.png 攻击准备tx时间:

7.png 实际攻击tx时间:

8.png

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Archime
Archime
0x96C4...508C
江湖只有他的大名,没有他的介绍。