GivingThanks

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

Logic Error in Verification Check found in `CharityRegistry.sol`

Description: The CharityRegistry::isVerified() function returns the registration status instead of the verification status of a charity. This is a critical logical error that undermines the entire verification system.

function isVerified(address charity) public view returns (bool) {
return registeredCharities[charity]; // Should be verifiedCharities[charity]
}

Impact:

  • Any registered charity appears as verified without admin verification

  • Bypasses the entire verification process

  • Defeats the purpose of having a two-step verification system

  • Could lead to users trusting unverified charities

Proof of Concept:

function testLogicErrorInIsVerified() public {
vm.prank(user1);
registry.registerCharity(maliciousCharity);
// A charity that was never verified returns true
assertTrue(registry.isVerified(maliciousCharity));
}

Recommended Mitigation: Modify the isVerified function to check the verifiedCharities mapping instead of registeredCharities.

Corrected Code:

function isVerified(address charity) public view returns (bool) {
return verifiedCharities[charity];
}

This change ensures that the function accurately reflects the verification status of a charity.

Updates

Lead Judging Commences

n0kto Lead Judge about 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

finding-isVerified-return-registered-charities

Likelyhood: High, the function returns registered charities instead of verified ones. Impact: High, Any charities can be registered by anyone and will be declared as verified by this function bypassing verification.

Support

FAQs

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

Give us feedback!