RamNFT::getCharacteristics accepts any token in parameters. Since there is no check to assess the token exists, any user can ask the caracteristics of an non-minted token and will get an answer.
It will lead to confusion or unexpected behavior if this function is used in an other contract.
Especially in this contract it is called by ChoosingRam::increaseValuesOfParticipants and is one of the two root cause allowing a big impact:
People can fight against a non-existant player.
Likelyhood: High
Anyone can call getCharacteristics and increaseValuesOfParticipants with a non-existing tokenIdOfAnyPerticipent.
Impact: High
Low: return incorrect data for non-existing tokens.
High, combined with the bug in if (tokenIdOfAnyPerticipent > ramNFT.tokenCounter()) because it permits to fight a non-existing token and increase its values.
getCharacteristics must check if the token is valid or exists before returning any data, and revert instead.
Since the Characteristics mapping is public, the same will happen reading it directly: make the mapping private.
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.