$JAY重入攻击追踪分析
消息来源:X 上的 BlockSec:“1/ The @jaypeggerz project was attacked and the loss is around 15.32 Ether. It is a contract-level reentrancy attack that successfully manipulates the price of the JAY token. https://t.co/E8z1rMM2Dg https://t.co/Ndo75Fpmqe” / X (twitter.com)
记录:SunWeb3Sec/DeFiHackLabs: Reproduce DeFi hacked incidents using Foundry. (github.com)
JAY token合约代码https://etherscan.io/address/0xf2919d1d80aff2940274014bef534f7791906ff2#code#L1
链上数据分析首先确定代币token:0xf2919d1d80aff2940274014bef5 ...
ReentrancyAttack
合约重入攻击概念在以太坊中,智能合约能够调用其他外部合约的代码,由于智能合约可以调用外部合约或者发送以太币,这些操作需要合约提交外部的调用,所以这些合约外部的调用就可以被攻击者利用造成攻击劫持,使得被攻击合约在任意位置重新执行,绕过原代码中的限制条件,从而发生重入攻击。重入攻击本质上与编程里的递归调用类似,所以当合约将以太币发送到未知地址时就可能会发生。
漏洞原理概述合约重入攻击是代码中对用户(attacker)的合约请求进行调用,没有进行二次验证,然后可以使attacker修改合约状态,改变账本.从而实现多重提币操作。
简例代码对于A,B账户
12345withdraw(){ check balance >0 send Ether balance=0}
123456fallback(){ A.withdrwa()} attack(){ A.withdraw()}
attack()调用A中withdraw() 进行检查 发送
A合约向B合约发送ETH时,出发B合约fallback()函数,那么重新调用取款 ...