Omniscia Native Audit
Manual Review
Manual Review
A thorough line-by-line review was conducted on the codebase to identify potential malfunctions and vulnerabilities in Native's novel exchange implementation.
As the project at hand implements an EIP-20 exchange, intricate care was put into ensuring that the flow of funds within the system conforms to the specifications and restrictions laid forth within the protocol's specification.
We validated that all state transitions of the system occur within sane criteria and that all rudimentary formulas within the system execute as expected. We pinpointed multiple significant vulnerabilities within the system which could have had moderate-to-severe ramifications to its overall operation. Additionally, we identified certain design flaws in relation to the output mechanism of the router that we advise the Native team to revisit.
Additionally, the system was investigated for any other commonly present attack vectors such as re-entrancy attacks, mathematical truncations, logical flaws and ERC / EIP standard inconsistencies. The documentation of the project was inadequate and we strongly advise the Native team to expand their documentation across the board and to strictly define how their codebase behaves.
A total of 59 findings were identified over the course of the manual review of which 19 findings concerned the behaviour and security of the system. The non-security related findings, such as optimizations, are included in the separate Code Style chapter.
The finding table below enumerates all these security / behavioural findings:
ID | Severity | Addressed | Title |
---|---|---|---|
CSP-01M | Unfair Market Dynamics | ||
FMH-01M | Unsafe Migration of Pragma Version | ||
LGS-01M | Incorrect Restriction of Pragma Version | ||
PPS-01M | Improper Payable Attribute of Functions | ||
PPS-02M | Inexistent Evaluation of Payer | ||
PVN-01M | Redundant ABI Coder Specification | ||
PVN-02M | Potentially Insecure Hash Evaluation | ||
PLO-01M | Arbitrary Unique ID | ||
PLO-02M | Inexplicable Loop Iteration | ||
PLO-03M | Inexistent Limitation of Fee | ||
PLO-04M | Inexplicable Payable Function Attribute | ||
PLO-05M | Unsafe Casting Operations | ||
PFY-01M | Inexistent Protection of Pause State | ||
PFY-02M | Unutilized Registry Address | ||
PFY-03M | Inexistent Exposure of Pause Functionality | ||
RRE-01M | Overly Strict Evaluation of Output | ||
RRE-02M | Incorrect Payable Function Attributes | ||
RRE-03M | Inexistent Protection Against Multi-Order Invocation | ||
RRE-04M | Inoperable Output Swap Mechanism |