Open hats-bug-reporter[bot] opened 1 month ago
If the user withdraws the request, funders can get they money back. Users necessarily need to trust people they fund requests for (as those could be malicious leading to a loss of their deposit). If the user withdraws the request, contributors can be refunded. This is the expected behaviour.
@clesaege ,Thank you for your response. While I understand that funders can get their money back if the user withdraws the request, I would like to elaborate on why this issue should still be considered valid.
Summery
Yes, I agree that if the users withdraw the request, the funders can withdraw their money back. However, as there is no authorization, or we can say that anyone can create a request free of cost, many users can create numerous requests. This can end up with the funders' money being trapped (for a period of time, like until All the requests are fully funded and users call the withdrawRequest). In this scenario, some legitimate users may face long waiting periods as the crowdfund is invested in these trap profiles.
Creating a Request Without Cost:
Multiple Requests by Malicious Users:
Funders Contribute:
Money Gets Trapped:
Withdrawal by Malicious Users:
Impact on Legitimate Users:
as the crowdfund is invested in these trap profile
If you fund a "trap" (malicious) profile, your money could be lost (as they can lose their disputes). You should only fund legitimate people you can trust. This is the expected behaviour.
Other users, who are funders, see these requests and start contributing money to them.
While would they do that? Users should not crowdfund random profiles.
Hey @clesaege,
As there is no authorization, or we can say that anyone can create a request free of cost, many users can create numerous requests.
Here I am assuming that users who have the intention to DoS (the legit users), I mean here users are alive and as expected but they can simply DoS while creating requests with 0 msg.value.
If you fund a "trap" (malicious) profile, your money could be lost (as they can lose their disputes). You should only fund legitimate people you can trust.
As I mentioned, here users will not be bots or AI as it will be easily detected. I am assuming the users who are alive, they just need to create a request and withdraw when fully funded.
Why would they do that? Users should not crowdfund random profiles.
Again, here as the users are alive and as expected, and the users have only the intention to create a request and withdraw when fully funded. Here, as the users follow the guidelines, the users are expected to fund the profile, right?
@clesaege does this make sense to you now? Please let me know.
Here, as the users follow the guidelines, the users are expected to fund the profile, right?
No, you should only fund people you know and trust, not random profiles you see on the front.
Github username: -- Twitter username: -- Submission hash (on-chain): 0xb7eb0b6a9766c91347bcecb409bc9245f99c7d2b8ab468c5c018b0c56a7d0946 Severity: medium
Description: Description\ The current implementation of the
claimHumanity
andwithdrawRequest
functions in theProofOfHumanityExtended.sol
contract allows a user to exploit the system by creating a request with zeromsg.value
and then withdrawing the request after it has been fully funded by other contributors. This can lead to frustration among genuine contributors who have funded the request in good faith with other impactsAttack Scenario\
User Calls claimHumanity with Zero msg.value:
_requestHumanity Function:
Crowdfunding by Other Contributors:
User Calls withdrawRequest:
Attachments
Proof of Concept (PoC) File
Revised Code File (Optional)