improper validation of the last_profit_update
timestamp parameter
valid_params = [
50 * 10**18, # total_debt (50)
50 * 10**18, # total_idle (50)
100 * 10**18, # total_supply (100)
initial_ts + 7*86400, # full_profit_unlock_date
0, # profit_unlocking_rate
2**256 - 1, # last_profit_update - overflow
0 # balance_of_self
]
Price Manipulation:
Underflows in time delta calculations (ts - last_profit_update
)
Incorrect unlocked_shares
leading to distorted pricePerShare
Protocol Insolvency Risk:
Artificial inflation/deflation of scrvUSD value
Enables draining liquidity pools through arbitrage
Permanent Corruption:
Once invalid parameters are accepted, price calculations remain broken until manual intervention
Attack Scenario:
Attacker submits last_profit_update = 2^256-1
(max uint256
)
Oracle accepts this due to missing upper bound checks
Future calculations using ts - last_profit_update
underflow (since last_profit_update > ts
)
unlocked_shares
calculation returns garbage values
Manual Review
This issues and duplicates are very similar to reasonings highlighted in issue #11. The timestamp variables are extracted and verified via the OOS `StateProofVerifier` contract inherited as `Verifier`. There is simply no concrete proof that the verifier allowed such an underflow to occur, representing stale price value updates.
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.