Skip to content

Instantly share code, notes, and snippets.

@gorbunovperm
Last active July 17, 2019 14:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save gorbunovperm/966d1eb8edf74a0cc540ef9a8750b274 to your computer and use it in GitHub Desktop.
Save gorbunovperm/966d1eb8edf74a0cc540ef9a8750b274 to your computer and use it in GitHub Desktop.
Maximine Coin (MXM) security audit report

Maximine Coin (MXM) security audit report

Summary

This is the report from a security audit performed on Maximine Coin (MXM) by gorbunovperm.

Audit Top 200 CoinMarketCap tokens.

Maximine Coin (MXM)

https://maximine.io/

In scope

  1. MXM.sol

Findings

In total, 5 issues were reported including:

  • 0 high severity issue.

  • 0 medium severity issues.

  • 4 low severity issues.

  • 1 owner privileges.

  • 0 note.

Security issues

1. Known vulnerabilities of ERC-20 token

Severity: low

Description

  • It is possible to double withdrawal attack. More details here

  • Lack of transaction handling mechanism issue. WARNING! This is a very common issue and it already caused millions of dollars losses for lots of token users! More details here

Recommendation

Add into a function transfer(address _to, ... ) following code:

require( _to != address(this) );

2. ERC20 Compliance — event missing

Severity: low

Description

According to ERC20 standard when coins are minted(or burned) a Transfer event should be emitted.

Code snippet

  • Line 41, 163, 181.

3. ERC20 Compliance — transfer returns

Severity: low

Description

According EIP20 Standard the transfer function should returns boolean value function transfer(address _to, uint256 _value) public returns (bool success). But here it is not implemented.

Code snippet

  • Line 76.

4. ERC20 Compliance: zero-value transfers rejecting

Severity: low

Description

EIP20 says that:

Transfers of 0 values MUST be treated as normal transfers and fire the Transfer event. But in this contract, function transfer has a condition:

require(balanceOf[_to] + _value > balanceOf[_to]);

Code snippet

  • Line 56.

5. Owner Privileges

Severity: owner privileges

Description

The contract owner allowed to pause transfer functions for certain user.

Code snippet

  • Line 86, 77, 111, 128.

Conclusion

There are no serious vulnerabilities were discovered here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment