The updateReferrerInfo
function in the SystemConfig
contract unintentionally allows the creation of new referrals in addition to updating existing ones. This can lead to unexpected behaviors and data integrity issues.
The updateReferrerInfo
function doesn't verify if the referral already exists before updating the information. If called with a non-existent referral address, it creates a new entry in the map.
Security: Malicious users could create unauthorized referral relationships.
Data Integrity: May create unintended or invalid referral records.
Business Logic: May interfere with the intended referral system logic, potentially affecting reward distribution.
Manual code analysis.
Modify the updateReferrerInfo
function to prevent creation of new referrals:
Add a check to ensure the referral exists before updating.
If the referral doesn't exist, the function should revert.
Create a separate function for adding new referrals, if needed.
Implement proper access controls for both update and creation functions.
Update code documentation to clearly reflect the purpose and behavior of each function.
Valid high severity. There are two impacts here due to the wrong setting of the `refferalInfoMap` mapping. 1. Wrong refferal info is always set, so the refferal will always be delegated to the refferer address instead of the caller 2. Anybody can arbitrarily change the referrer and referrer rate of any user, resulting in gaming of the refferal system I prefer #1500 description the most, be cause it seems to be the only issue although without a poc to fully describe all of the possible impacts
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.