This is the report from a security audit performed on AsureToken by MrCrambo.
The audit focused primarily on the security of AsureToken smart contracts.
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/test/TestAsureBonusesCrowdsale.sol
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/test/TestToken.sol
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/AsureBonusesCrowdsale.sol
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/AsureCrowdsale.sol
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/AsureCrowdsaleDeployer.sol
- https://github.com/AsureNetwork/crowdsale/blob/master/packages/crowdsale/contracts/AsureToken.sol
In total, 4 issues were reported including:
-
0 high severity issues.
-
2 medium severity issues.
-
1 owner privilegies issues.
-
1 low severity issues.
Using function updateRates
owner can change rates.
In function drop
there is possiblity that arrays size will not be equal.
Add checking, that arrays size are equal
require(recipients.length == values.length);
In functions drop
, airdrop
and mint
there are possibilty of going out of gas in case the array will have long length.
- It is possible to double withdrawal attack. More details here
- Lack of transaction handling mechanism issue. More details here
Add into a function transfer(address _to, ... )
following code:
require( _to != address(this) );
Smart contract contains medium severity issues.