Description:
The mintProfile::soulboundNFT
function allows users to create multiple profiles by using different wallet addresses, with no mechanisms in place to verify unique human identity. While the 2-of-2 multisig protects against direct theft of matched funds, the ability to create multiple fake profiles enables social engineering attacks and denial of service of user funds. The only existing check require(profileToToken[msg.sender] == 0, "Profile already exists")
prevents the same wallet from creating multiple profiles but can be trivially bypassed by creating new wallets. This breaks the "soulbound" nature of the profile NFTs which are meant to represent unique individuals.
Impact:
The impact is HIGH due to:
Ability to lock user funds in dormant multisigs (1 ETH per incident)
Platform integrity compromise through fake profiles
Mass identity fraud potential
Enabling of sophisticated social engineering attacks
Degradation of user trust and platform value proposition
Proof of Concept:
Attack Path for Fund Locking:
Attacker creates multiple wallets and profiles with attractive characteristics
Genuine users discover these profiles and pay 1 ETH to "like" them
Attacker uses different fake profiles to create matches with victims
2-of-2 multisigs are created for each match
Attacker never signs transactions on the multisigs
Victims' funds (minus platform fee) remain locked indefinitely
This creates a "graveyard" of unusable multisigs containing victim funds
Proof of Code:
Recommended Mitigation:
Implement Sybil resistance:
Integrate proof-of-personhood protocols like BrightID or Proof of Humanity
Require verifiable social media account linking
Implement phone number verification with rate limiting
Consider KYC integration for identity verification
Add fund protection mechanisms:
Time-based fund return mechanism if multisig remains unused
Platform arbitration system for disputed/inactive matches
Gradual increase in "like" costs for new wallets
Cool-down periods between accepting matches
Enhance profile verification:
Add stake-to-create requirements
Implement reputation scoring
Add cooldown periods between profile creations from same IP
Require profile verification steps before accepting matches
Improve monitoring:
Track patterns of inactive multisigs
Monitor for coordinated profile creation
Flag suspicious matching patterns
Implement automated Sybil attack detection
The core focus should be on implementing strong identity verification before profile creation, combined with mechanisms to unlock funds from inactive matches.
Still have to pay to like anyone. No impact.
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.