The setChoosingRamContract(address)
function allows an event organizer to freely update the address of the choosingRamContract
variable. The organizer could intentionally or unintentionally set a new address to a choosingRamContract
variable by calling setChoosingRamContract(address)
. In this case, users who would call ChoosingRam::increaseValuesOfParticipants
will not be able to update the properties of their NFTs. Due to the logic of ChoosingRam::increaseValuesOfParticipants
it makes an external call to RamNFT::updateCharacteristics
. However the access to RamNFT::updateCharacteristics
is protected with an onlyChoosingRamContract
modifier. If the organizer has updated the address of the choosingRamContract
variable, the call to RamNFT::updateCharacteristics
as well as to ChoosingRam::increaseValuesOfParticipants
will revert, leading to a potential denial-of-service (DoS) vulnerability.
Organizer can update the address of the choosingRamContract
variable, resulting in users not being able to update the characteristics of their NFTs via ChoosingRam::increaseValuesOfParticipants
. This would break one of the core invariants of the protocol.
manual review, VSC
Consider deleting RamNFT::setChoosingRamContract
function and making the following changes to RamNFT.sol
:
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.