In the contradiction to the documentation and comments, which state that only Santa
can check the list once, anyone is able to call the SantasList::checkList()
method due to the missing access control check.
The SantasList::checkList()
looks as follows:
The onlySanta
modifier is missing from the function. Therefore anyone will be able to call it.
The impact of this vulnerability is quire severe, as the attacker can block anyone from claiming their rewards. In order to claim the rewards, one has to be checked twice and receive the NICE
or EXTRA_NICE
status. The attacker can simply override the contents of s_theListCheckedOnce
for a particular address, changing their status to NAUGHTY
or NOT_CHECKED_TWICE
, effectively blocking them from claiming any rewards.
Users can be blocked from claiming rewards.
Manual review
Add the onlySanta
modifier to the SantasList::checkList()
:
Anyone is able to call checkList() changing the status of a provided address. This is not intended functionality and is meant to be callable by only Santa.
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.