Skip to content

Latest commit

 

History

History
44 lines (33 loc) · 4.59 KB

README.md

File metadata and controls

44 lines (33 loc) · 4.59 KB

了解智能合约审计和最佳实践请点击查看文档

智能合约漏洞,Dyna 事件分析

1. 漏洞简介

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

2. 相关地址或交易

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

3. 获利分析

4. 攻击过程&漏洞原因

整个攻击过程分为两部分:

  1. 准备阶段: 0x7fa89d869fd1b89ee07c206c3c89d6169317b7de8b020edd42402d9895f0819e 攻击者准备大量账号,调用 StakingDYNA. deposit 存入少量 DYNA 代币。

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