CertiK reviewed NuriFootBall (Nurifootball- Audit) on 14 Nov 2022: 5 findings, 0 critical; all acknowledged, none fixed.
Report hosted on skynet.certik.com.
Trustblock does not review code.
Statuses are the security firm’s own, from its report.
| Severity | Open | Acknowledged | Fixed |
|---|---|---|---|
| Critical | 0 | 0 | 0 |
| High | 0 | 2 | 0 |
| Medium | 0 | 0 | 0 |
| Low | 0 | 3 | 0 |
In the contract `NuriFootball` the role `owner` has authority over the functions shown in the diagram below. - `freezeAccount`: Freeze an arbitrary account. - `unfreezeAccount`: Unfreeze an account. - `burn`: Burn the specified value of the contract `NuriFootball`. - Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and can freeze or unfreeze an arbitrary address. In the contract `Ownable` the role `owner` has authority over the functions shown in the diagram below. - `transferOwnership`: Transfer the ownership to another address. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and transfer the ownership to an arbitrary address.
All tokens are sent to `msg.sender` when deploying the contract. This could be a centralization risk as the `msg.sender` can distribute tokens without obtaining the consensus of the community.
The input parameter `spender` for the function `approve()` should be different than the address(0). However, no check is implemented to ensure it is the case.
When a user calls `approve()` for a second time on a spender that has already been allowed, the spender could call `transferFrom()` to transfer the previous value and still receive the authorization to transfer the new value also known as [a known ERC20 race condition issue](https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729). Exploit scenario: 1. Alice calls `approve(Bob, 100)` to allow Bob to spend 100 tokens. 2. Alice changes her mind and calls `approve(Bob, 50)`. 3. Bob observes the second `approve(Bob, 50)` function call and calls `transferFrom(Alice, Bob, 100)` before the second `approve(Bob, 50)` call. 4. The above scenario can be achieved by front-running. In this case, Bob can transfer another 50 tokens from Alice and in total, he transferred 150 tokens from Alice.
The contract has unlocked compiler version. An unlocked compiler version in the source code of the contract permits the user to compile it at or above a particular version. This, in turn, leads to differences in the generated bytecode between compilations due to differing compiler version numbers. This can lead to an ambiguity when debugging as compiler specific bugs may occur in the codebase that would be hard to identify over a span of multiple compiler versions rather than a specific one.
The report names a repository or files. Open the report to see its scope.
Repository and files the report names (1)
1,044 projects reviewed · 1,375 reports · latest May 2025
See CertiK’s auditsSomething 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