The LLMOracleRegistry contract uses an unsafe token approval pattern for unregistering oracles, potentially allowing users to reclaim their stake multiple times and drain the contract.
Attack Path:
Attacker registers as oracle with stake
Calls unregister
Contract approves tokens to attacker
Attacker can transferFrom multiple times
Registration is already deleted, no state check prevents multiple withdrawals
Attack Code:
Multiple withdrawals of same stake
Contract can be drained
Protocol funds at risk
Oracle stake system compromised
Economic guarantees broken
Slitherin - unsafe_token.py detector
Manual review
Use direct transfer instead of approval:
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.