The constructors in both ScrvusdVerifierV1.sol
and its child contract ScrvusdVerifierV2.sol
do not validate that the provided oracle addresses are non-zero. This could lead to the deployment of non-functional contracts if zero addresses are accidentally provided.
In ScrvusdVerifierV1.sol
, the constructor accepts two address parameters and assigns them to immutable variables without verifying that they are not the zero address:
If either _block_hash_oracle
or _scrvusd_oracle
is the zero address (0x0), the contract will be deployed with permanently invalid references, requiring redeployment.
Since ScrvusdVerifierV2.sol
inherits from ScrvusdVerifierV1.sol
and uses its constructor, it is also affected by this issue.
If deployed with a zero address for either oracle:
The contract would be non-functional from the start
Since the addresses are immutable, the contract would need to be redeployed
This would cause operational delay but no direct fund loss
The practical impact is limited since this issue would be detected immediately during deployment testing before the contract interacts with real assets.
Manual code review
Add zero address validation in the constructor:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.