Omniscia Native Audit
PeripheryValidation Manual Review Findings
PeripheryValidation Manual Review Findings
PVN-01M: Redundant ABI Coder Specification
Type | Severity | Location |
---|---|---|
Language Specific | PeripheryValidation.sol:L3 |
Description:
The PeripheryValidation
contract does not use any complex ABI instructions and as such does not require the abicoder
enabled.
Example:
1// SPDX-License-Identifier: GPL-2.0-or-later2pragma solidity ^0.8.17;3pragma abicoder v2;4
5abstract contract PeripheryValidation {6 /// @dev Method that exists purely to be overridden for tests7 /// @return The current block timestamp8 function _blockTimestamp() internal view virtual returns (uint256) {9 return block.timestamp;10 }11
12 modifier checkDeadline(uint256 deadline) {13 require(_blockTimestamp() <= deadline, "Transaction too old");14 _;15 }16 17 modifier checkPreviousBlockhash(bytes32 previousBlockhash) {18 require(blockhash(block.number - 1) == previousBlockhash, "Blockhash");19 _;20 }21}
Recommendation:
We advise it to be omitted, reducing the potential compiler-related bug surface of the contract.
Alleviation:
The abicoder
statement is no longer present in the codebase as advised.
PVN-02M: Potentially Insecure Hash Evaluation
Type | Severity | Location |
---|---|---|
Language Specific | PeripheryValidation.sol:L18 |
Description:
The blockhash
of the previous block is an ill-advised security mechanism as blockchains that have transitioned to a PoS system have a significantly small block-time and are susceptible to blockhash
manipulations as well as transaction re-ordering.
Impact:
In an actual deployment scenario on a PoS chain, the checkPreviousBlockhash
security mechanism will hinder usage of functions and require an abnormally high fee to ensure that the transaction gets executed in time.
Example:
17modifier checkPreviousBlockhash(bytes32 previousBlockhash) {18 require(blockhash(block.number - 1) == previousBlockhash, "Blockhash");19 _;20}
Recommendation:
We advise the checkPreviousBlockhash
protection mechanism to be revisited and potentially omitted as the value acquired from it appears inexistent and could potentially hinder the usage of the system.
Alleviation:
The blockhash
based validation system has been removed from the codebase thereby alleviating this exhibit in full.