BurnedFi security record

BNB Chainburnedfi.app

As of 20 Oct 2026, BurnedFi has 2 audit reports by 1 security firm on Trustblock; the latest is by CertiK, dated 29 Mar 2024. Those reports list no open critical findings. It also holds 2 deployed contracts on 1 chain.

Critical findings
No open critical findings
Across 2 reports.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits and findings, contracts and incidents up to Oct 2026. Trustblock does not review code.

Audits2

Newest first

AuditSecurity firmDateScopeCritical findingsReport
BurnedFi new smart contract audit (addendum)Security firm: CertiKDate: Scope: 2 addresses on BNB ChainNo open critical findingsOriginal removed
BurnedfiSecurity firm: CertiKDate: Scope: 2 addresses on BNB ChainNo open critical findingsOriginal removed

Findings24

Statuses are the security firm’s own, from each report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium600
Low1800
MediumLocked Native tokenBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

If the `msg.value` does not strictly equal to 0.002 or the `burnedfi` has already launched, BNBs sent to the airdrop contract will be locked forever. ```solidity=918 function _drop() internal { address _msgSender = msg.sender; if(msg.value == _value && !_burnedFi.launch() && _msgSender != address(this)){ require(_msgSender == tx.origin, "Only EOA"); if(_countBlock <10){ ++_countBlock; ++totalDroped; ++threshold; if (totalDroped == 1 || totalDroped % 300 == 0) { _deployLiquidity(); } IERC20 token = IERC20(address(_burnedFi)); require(token.balanceOf(address(this)) >= _singleAmount, "Droped out"); token.transfer( _msgSender, _singleAmount); }else if(_block != block.number){ _block = block.number; _countBlock=0; } if(totalDroped>= 150000 ){ _burnedFi.setLaunch(true); uint256 amount = payable(address(this)).balance; payable(address(_burnedFi)).transfer(amount); } } } ``` Here is an example transaction that leads to locked BNBs: https://bscscan.com/tx/0x42894dc3129aa4bc3754d3159656dc976024b8ce893207caefebaf65885bb5b6

Open the report
MediumPotential Flashloan AttackBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The contract's reliance on a single Dex pair for price feeds in the `burnToHolder` function exposes it to flashloan attack risks. An attacker can use a flashloan as the initial funds for an exploit to enlarge the profit or manipulate the `burnfi` token price in decentralized exchanges. ```solidity=1341 deserved = uniswapRouter.getAmountsOut(amount, path)[path.length - 1]; ``` The `burnToHolder()` function relies on price calculations that are based on-chain, meaning they are susceptible to flash-loan attacks by manipulating the price of given pairs to the attacker's benefit. In this case, the attacker could pump the `burnfi` token price to get more `burnbuild` tokens as returns in this function call.

Open the report
MediumPotential Reentrancy Risk Due to Violation of CheBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The native token is transferred to the `receiver` (interaction) in line 1313 before the state variables are updated in lines 1315-1316 (effects), which deviates from the checks-effects-interaction pattern. This could lead to potential re-entrancy risks. Sending native tokens will trigger the `receive()` functions in the receiver contract. An attacker can make a recursive call back to the original function. During such a reentrant call, the state variables are not yet updated (the caller still holds `burnfi` token), enabling the attacker to re-enter the original contract and claim rewards multiple times. However, the `to.transfer()` call has a strict gas limit of 2300, which is typically insufficient for any significant computations or state changes in the called contract. This restriction constrains the actions an attacker can perform in the receiver's contract, thereby reducing the potential impact of the reentrancy attack, but the risk still exists. ```solidity=1306 function receiveRewards(address payable to) external { address addr = msg.sender; uint256 balance = balanceOf(addr); uint256 amount = balance.sub(burnAmount[addr]); //.sub(Rewards[addr]); require(amount > 0 ); Rewards[addr] = Rewards[addr].add(amount); historyRewards[addr] = historyRewards[addr].add(amount); to.transfer(amount.mul(10**9)); _transfer(addr, address(this), balance); burnAmount[addr]=0; totalReceive = totalReceive.add(amount); emit ReceiveReward(addr, amount, totalReceive); } ```

Open the report
MediumLocked Native tokenBurnedfi · CertiK · 28 Dec 2023Open

If the `msg.value` does not strictly equal to 0.002 or the `burnedfi` has already launched, BNBs sent to the airdrop contract will be locked forever. ```solidity=918 function _drop() internal { address _msgSender = msg.sender; if(msg.value == _value && !_burnedFi.launch() && _msgSender != address(this)){ require(_msgSender == tx.origin, "Only EOA"); if(_countBlock <10){ ++_countBlock; ++totalDroped; ++threshold; if (totalDroped == 1 || totalDroped % 300 == 0) { _deployLiquidity(); } IERC20 token = IERC20(address(_burnedFi)); require(token.balanceOf(address(this)) >= _singleAmount, "Droped out"); token.transfer( _msgSender, _singleAmount); }else if(_block != block.number){ _block = block.number; _countBlock=0; } if(totalDroped>= 150000 ){ _burnedFi.setLaunch(true); uint256 amount = payable(address(this)).balance; payable(address(_burnedFi)).transfer(amount); } } } ``` Here is an example transaction that leads to locked BNBs: https://bscscan.com/tx/0x42894dc3129aa4bc3754d3159656dc976024b8ce893207caefebaf65885bb5b6

Open the report
MediumPotential Flashloan AttackBurnedfi · CertiK · 28 Dec 2023Open

The contract's reliance on a single Dex pair for price feeds in the `burnToHolder` function exposes it to flashloan attack risks. An attacker can use a flashloan as the initial funds for an exploit to enlarge the profit or manipulate the `burnfi` token price in decentralized exchanges. ```solidity=1341 deserved = uniswapRouter.getAmountsOut(amount, path)[path.length - 1]; ``` The `burnToHolder()` function relies on price calculations that are based on-chain, meaning they are susceptible to flash-loan attacks by manipulating the price of given pairs to the attacker's benefit. In this case, the attacker could pump the `burnfi` token price to get more `burnbuild` tokens as returns in this function call.

Open the report
MediumPotential Reentrancy Risk Due to Violation of CheBurnedfi · CertiK · 28 Dec 2023Open

The native token is transferred to the `receiver` (interaction) in line 1313 before the state variables are updated in lines 1315-1316 (effects), which deviates from the checks-effects-interaction pattern. This could lead to potential re-entrancy risks. Sending native tokens will trigger the `receive()` functions in the receiver contract. An attacker can make a recursive call back to the original function. During such a reentrant call, the state variables are not yet updated (the caller still holds `burnfi` token), enabling the attacker to re-enter the original contract and claim rewards multiple times. However, the `to.transfer()` call has a strict gas limit of 2300, which is typically insufficient for any significant computations or state changes in the called contract. This restriction constrains the actions an attacker can perform in the receiver's contract, thereby reducing the potential impact of the reentrancy attack, but the risk still exists. ```solidity=1306 function receiveRewards(address payable to) external { address addr = msg.sender; uint256 balance = balanceOf(addr); uint256 amount = balance.sub(burnAmount[addr]); //.sub(Rewards[addr]); require(amount > 0 ); Rewards[addr] = Rewards[addr].add(amount); historyRewards[addr] = historyRewards[addr].add(amount); to.transfer(amount.mul(10**9)); _transfer(addr, address(this), balance); burnAmount[addr]=0; totalReceive = totalReceive.add(amount); emit ReceiveReward(addr, amount, totalReceive); } ```

Open the report
LowIncorrect Event EmissionBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The event `OwnershipTransferred` has two parameters that demonstrate the ownership transfer between the `previousOwner` address and `newOwner` address. In the function `Lock()`, the `_owner` is changed to `address(0)` at Line 259, so the emitted `_owner` is the same as `address(0)` in the event which may contradict the purpose of this event.

Open the report
LowPotential Sandwich AttacksBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

A sandwich attack might happen when an attacker observes a transaction swapping tokens or adding liquidity without setting restrictions on slippage or minimum output amount. The attacker can manipulate the exchange rate by frontrunning (before the transaction being attacked) a transaction to purchase one of the assets and make profits by backrunning (after the transaction being attacked) a transaction to sell the asset. The following functions are called without setting restrictions on slippage or minimum output amount, so transactions triggering these functions are vulnerable to sandwich attacks, especially when the input amount is large: ```solidity=1101 function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } ```

Open the report
LowRisk of Airdrop Failure Due to Gas ExhaustionBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

```solidity=925 if (totalDroped == 1 || totalDroped % 300 == 0) { _deployLiquidity(); } ``` Users have to pay for the gas of adding liquidity if the condition `totalDroped % 300 == 0` is met. If the user fails to set enough gas limit for this transaction, calls to the `_drop()` will revert and therefore block the airdrop process. Here is an example of a blocked transaction: https://bscscan.com/tx/0x06343bc779f0ce427f7005ae0d8305d0cbe712eb85db4ba35a4310b810ee4a17

Open the report
LowState Variable Should Be Declared ConstantBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

State variables that never change should be declared as `constant` to save gas. ```solidity=981 uint256 public burnFee = 1; ``` - `burnFee` should be declared `constant`.

Open the report
Show 10 more
LowThird Party DependenciesBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The `burnedFi` contract is serving as the underlying entity to interact with third party Automated Market Maker protocols PancakeSwap. The scope of the audit treats 3rd party entities as black boxes and assume their functional correctness. However, in the real world, 3rd parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of 3rd parties can possibly create severe impacts, such as increasing fees of 3rd parties, migrating to new LP pools, etc.

Open the report
LowUnnecessary Use of SafeMathBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow. --- ```solidity=757 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnBuild` contract. --- ```solidity=898 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnAirdrop` contract. --- ```solidity=978 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnedFi` contract.

Open the report
LowUnused Return ValueBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The smart contract does not check or store the return value of an external call in a local or state variable, which may introduce vulnerabilities due to the unhandled outcome. --- ```solidity=958 uniswapRouter.addLiquidityETH{value: ethAmount}( address(_burnedFi), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); ```

Open the report
LowUsage of `transfer`/`send` for Sending Native TokBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

It is not recommended to use Solidity's `transfer()` and `send()` functions for transferring native tokens, since some contracts may not be able to receive the funds. Those functions forward only a fixed amount of gas (2300 specifically) and the receiving contracts may run out of gas before finishing the transfer. Also, EVM instructions' gas costs may increase in the future. Thus, some contracts that can receive now may stop working in the future due to the gas limitation. ```solidity=939 payable(address(_burnedFi)).transfer(amount); ``` - `burnAirdrop._drop` uses `transfer()`. --- ```solidity=1146 payable(address(burnHolder)).transfer(balance); ``` - `burnedFi.burnToholder` uses `transfer()`.

Open the report
LowUser-Defined GettersBurnedFi new smart contract audit (addendum) · CertiK · 29 Mar 2024Open

The linked functions are equivalent to the compiler-generated getter functions for the respective variables.

Open the report
LowIncorrect Event EmissionBurnedfi · CertiK · 28 Dec 2023Open

The event `OwnershipTransferred` has two parameters that demonstrate the ownership transfer between the `previousOwner` address and `newOwner` address. In the function `Lock()`, the `_owner` is changed to `address(0)` at Line 259, so the emitted `_owner` is the same as `address(0)` in the event which may contradict the purpose of this event.

Open the report
LowPotential Sandwich AttacksBurnedfi · CertiK · 28 Dec 2023Open

A sandwich attack might happen when an attacker observes a transaction swapping tokens or adding liquidity without setting restrictions on slippage or minimum output amount. The attacker can manipulate the exchange rate by frontrunning (before the transaction being attacked) a transaction to purchase one of the assets and make profits by backrunning (after the transaction being attacked) a transaction to sell the asset. The following functions are called without setting restrictions on slippage or minimum output amount, so transactions triggering these functions are vulnerable to sandwich attacks, especially when the input amount is large: ```solidity=1101 function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapRouter.WETH(); _approve(address(this), address(uniswapRouter), tokenAmount); // make the swap uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } ```

Open the report
LowRisk of Airdrop Failure Due to Gas ExhaustionBurnedfi · CertiK · 28 Dec 2023Open

```solidity=925 if (totalDroped == 1 || totalDroped % 300 == 0) { _deployLiquidity(); } ``` Users have to pay for the gas of adding liquidity if the condition `totalDroped % 300 == 0` is met. If the user fails to set enough gas limit for this transaction, calls to the `_drop()` will revert and therefore block the airdrop process. Here is an example of a blocked transaction: https://bscscan.com/tx/0x06343bc779f0ce427f7005ae0d8305d0cbe712eb85db4ba35a4310b810ee4a17

Open the report
LowState Variable Should Be Declared ConstantBurnedfi · CertiK · 28 Dec 2023Open

State variables that never change should be declared as `constant` to save gas. ```solidity=981 uint256 public burnFee = 1; ``` - `burnFee` should be declared `constant`.

Open the report
LowThird Party DependenciesBurnedfi · CertiK · 28 Dec 2023Open

The `burnedFi` contract is serving as the underlying entity to interact with third party Automated Market Maker protocols PancakeSwap. The scope of the audit treats 3rd party entities as black boxes and assume their functional correctness. However, in the real world, 3rd parties can be compromised and this may lead to lost or stolen assets. In addition, upgrades of 3rd parties can possibly create severe impacts, such as increasing fees of 3rd parties, migrating to new LP pools, etc.

Open the report
Show 4 more
LowUnnecessary Use of SafeMathBurnedfi · CertiK · 28 Dec 2023Open

The `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow. --- ```solidity=757 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnBuild` contract. --- ```solidity=898 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnAirdrop` contract. --- ```solidity=978 using SafeMath for uint256; ``` - `SafeMath` library is used for `uint256` type in `burnedFi` contract.

Open the report
LowUnused Return ValueBurnedfi · CertiK · 28 Dec 2023Open

The smart contract does not check or store the return value of an external call in a local or state variable, which may introduce vulnerabilities due to the unhandled outcome. --- ```solidity=958 uniswapRouter.addLiquidityETH{value: ethAmount}( address(_burnedFi), tokenAmount, 0, // slippage is unavoidable 0, // slippage is unavoidable address(0xdead), block.timestamp ); ```

Open the report
LowUsage of `transfer`/`send` for Sending Native TokBurnedfi · CertiK · 28 Dec 2023Open

It is not recommended to use Solidity's `transfer()` and `send()` functions for transferring native tokens, since some contracts may not be able to receive the funds. Those functions forward only a fixed amount of gas (2300 specifically) and the receiving contracts may run out of gas before finishing the transfer. Also, EVM instructions' gas costs may increase in the future. Thus, some contracts that can receive now may stop working in the future due to the gas limitation. ```solidity=939 payable(address(_burnedFi)).transfer(amount); ``` - `burnAirdrop._drop` uses `transfer()`. --- ```solidity=1146 payable(address(burnHolder)).transfer(balance); ``` - `burnedFi.burnToholder` uses `transfer()`.

Open the report
LowUser-Defined GettersBurnedfi · CertiK · 28 Dec 2023Open

The linked functions are equivalent to the compiler-generated getter functions for the respective variables.

Open the report

Contracts2

AddressChainSource code
0x19c018e13cff682e729cc7b5fb68c8a641bf98a4Chain: BNB ChainSource code: Verified source
0xb47174c19a9761eee0c3ae85ef189bf3fd329c7fChain: BNB ChainSource code: Verified source

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="burnedfi"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us