-
Notifications
You must be signed in to change notification settings - Fork 0
Signatures can be misused to reverify #323
Copy link
Copy link
Closed
Labels
2 (Med Risk)Assets not at direct risk, but function/availability of the protocol could be impacted or leak valueAssets not at direct risk, but function/availability of the protocol could be impacted or leak valuebugSomething isn't workingSomething isn't workingduplicate-187satisfactorysatisfies C4 submission criteria; eligible for awardssatisfies C4 submission criteria; eligible for awards
Metadata
Metadata
Assignees
Labels
2 (Med Risk)Assets not at direct risk, but function/availability of the protocol could be impacted or leak valueAssets not at direct risk, but function/availability of the protocol could be impacted or leak valuebugSomething isn't workingSomething isn't workingduplicate-187satisfactorysatisfies C4 submission criteria; eligible for awardssatisfies C4 submission criteria; eligible for awards
Type
Fields
Give feedbackNo fields configured for issues without a type.
Lines of code
https://github.com/code-423n4/2023-01-ondo/blob/main/contracts/cash/kyc/KYCRegistry.sol#L79
Vulnerability details
Impact
It is possible to remove the KYC status of any user by using the
removeKYCAddressesfunction. This could be easily overridden by user using theaddKYCAddressViaSignaturefunction as shown belowProof of Concept
User KYC is approved and he is provided with a signature signed by an address with the role kycGroupRoles[kycRequirementGroup]
User claims his KYC approved status using
addKYCAddressViaSignaturefunction which marks himkycState[kycRequirementGroup][user] = trueOne of KYC group role realizes that User KYC was not actually proper and decides to remove his KYC status using
removeKYCAddressesfunctionThis sets
kycState[kycRequirementGroup][user] = falseaddKYCAddressViaSignaturefunction to again setkycState[kycRequirementGroup][user] = trueRecommended Mitigation Steps
Mark the signature as used