GivingThanks

First Flight #28
Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: high
Invalid

No Access Control on Registration in `CharityRegistry::registerCharity()` function

Description: The CharityRegistry::registerCharity() function lacks access controls, allowing any address to register any other address as a charity. This is a critical security flaw that could lead to widespread abuse.

function registerCharity(address charity) public {
registeredCharities[charity] = true;
}

Impact:

  • Malicious actors can register unlimited fake charities

  • No validation of charity legitimacy

  • Could lead to phishing attacks through fake charity registrations

  • Undermines the credibility of the entire registry

Proof of Concept:

function testUnauthorizedRegistration() public {
address malicious1 = address(0x1);
address malicious2 = address(0x2);
vm.prank(malicious1);
registry.registerCharity(malicious2);
assertTrue(registry.registeredCharities(malicious2));
}

Recommended Mitigation: Add appropriate access controls or requirements for registration

modifier onlyAdmin() {
require(msg.sender == admin, "Only admin can perform this action");
_;
}
function registerCharity(address charity) public onlyAdmin {
require(charity != address(0), "Invalid charity address");
registeredCharities[charity] = true;
emit CharityRegistered(charity);
}
Updates

Lead Judging Commences

n0kto Lead Judge about 1 year ago
Submission Judgement Published
Invalidated
Reason: Design choice

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.

Give us feedback!