The normal behavior is that the owner registers users for the pizza slice airdrop and assigns each user a claimable slice amount stored in a table. The user later claims this slice amount. Each user should have one assigned slice amount.
The specific issue is that the register_pizza_lover
function uses table::add
without checking if the user is already registered. Since table::add
overwrites existing keys, a user can be registered multiple times, causing their slice amount to be overwritten or assigned multiple times. This bypasses intended uniqueness and can lead to abuse.
Likelihood:
Whenever the owner calls register_pizza_lover
for the same user multiple times, whether accidentally or maliciously.
This can occur during bulk registrations or due to lack of validation.
Impact:
A user can have their claimable slice amount overwritten or manipulated, potentially giving unfair advantages or causing accounting inconsistencies.
The contract’s internal state may become inconsistent, leading to confusion and potential loss of funds.
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.