币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】

  • A+
所属分类:币安BSC
摘要

代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案


chatGPT账号

币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】

一、说明

最近收到一客户troubshooting协助排查请求,在bsc币安链上部署的合约通证被增发,直接砸穿usdt的资金池,套走所有USDT。关于这类问题其实算是比较常见的,主要原因还是在合约本身的漏洞上。最终导致代币被越权增发,直接在资金池不限滑点交易,置换出资金池所有的USDT或者BNB。这类问题概括起来主要由以下几个原因造成。

  1. 合约本身开发有问题,属于合约开发错误,都算不上bug,是比较浅显的错误导致的。比如在涉及到转载的函数方法中中本来应该设置为from的地址错误的设置成了balance[to],把应该设置成to的变量设置成了balance[from],这样用户只有调用该方法就会越转账越多,这种情况出现在自定义合约中的部分dapp的“提现”功能模块中。
  2. 合约的所有全丢失了,持有合约所有权的钱包地址私钥泄露往往会导致次问题。
  3. 合约中预留了隐藏权限,攻击者绕过合约主权限直接提权到了合约owner。通过合约中的相关address变量的set接口,把相关地址设置成了指定的合约或者钱包地址,比如把黑洞地址设置成指定的合约或者钱包地址,调用相关方法函数,把本来应该转账到黑洞的代币转移到了指定的目标地址,然后在流动性资金池抛售,套取USDT或者BNB

二、以下以最近的合约代码说明代币被增发过程

1、攻击者通过以下方法提权到owner

function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

在获得合约owner所有权后设置相关变量的值,主要针对address类型变量,设置为指定的目标合约地址或者钱包地址

2、通过如下方法设置address地址为指定的目标地址

function setBlackHoleAddr(address _address) public  onlyOwner{     
        blackHoleAddr = _address;
    }

本来黑洞地址应该是0x000000000000000000000000000Dead,结果被修改成了攻击者指定的地址。

3、设置transfer方法的sender和to地址

通过如下方法设置sender地址

function setXXXXXAddr(address _address) public  onlyOwner{     
        XXXXAddr = _address;
    }

将sender地址设置成资金池地址,直接从资金池增发一倍的代币。

4、调用涉及到sender和to地址的固定方法,实现转账

本案例是调用了以下方法:

function xxxxToBlack(uint256 amount, uint256 bamount, address _address) public returns (bool) {
        super._transfer(XXXXXAddr, blackHoleAddr, amount);
        .......
        .......
        .......
        return true;
    }   

这样直接就可以把资金池里的代币转移到指定的合约地址或者钱包地址。

然后,把代币在资金池里无限制滑点交易,就可以全部掏空资金池里的USDT或者BNB。

三、修复该漏洞的方法

1、Ownable合约中,删除函数 transferOwnership,避免权限越级调用

2、xxxxxxxxxxx合约中,删除setBlackHoleAddr函数,避免地址越权跳转

3、xxxxxxxxxxx合约中,删除函数setXXXXXAddr,避免合约间跨域变量重载

4、xxxxxxxxxxx合约中,XXXXXToBlack函数添加权限访问控制 onlyOwner,函数整体调整为如下代码格式:

function XXXXXXToBlack(uint256 amount, uint256 bamount, address _address) public returns (bool) onlyOwner {
super._transfer(XXXXXXAddr, blackHoleAddr, amount);
......
......
return true;
}

至此,完成代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案所有操作流程。

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载:

币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】

多模式(燃烧、回流指定营销地址、分红本币及任意币种,邀请推广八代收益,LP加池分红、交易分红、复利分红、NFT分红、自动筑池、动态手续费、定时开盘、回购)组合合约源代码下载:

币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】

pdf+视频币安智能链BSC发币教程及多模式组合合约源代码下载地址:

此处为隐藏的内容!
登录后才能查看!

添加VX或者telegram获取全程线上免费指导

币安智能链BSC发币教程——代币被越权增发总量增加一倍,资金池被掏空合约漏洞攻击案例分析及漏洞修复方案【pdf+视频币安链BSC发币教程下载】
免责声明

免责声明:

本文不代表知点网立场,且不构成投资建议,请谨慎对待。用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点网不对网站所发布内容的准确性,真实性等任何方面做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网对项目的真实性,准确性等任何方面均不做任何形式的承诺和保障;

网站内所有涉及到的区块链(衍生)项目,知点网不对其构成任何投资建议,用户由此造成的损失由用户自行承担,与知点网没有任何关系;

知点区块链研究院声明:知点区块链研究院内容由知点网发布,部分来源于互联网和行业分析师投稿收录,内容为知点区块链研究院加盟专职分析师独立观点,不代表知点网立场。

 

 

本文是全系列中第80 / 237篇:通证发行

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的电报
  • 这是我的电报扫一扫
  • weinxin
chatGPT账号

发表评论

您必须登录才能发表评论!