algorand / go-algorand

Algorand's official implementation in Go.
https://developer.algorand.org/
Other
1.35k stars 470 forks source link

Prevent abuse of the dispenser #1913

Closed fabrice102 closed 3 years ago

fabrice102 commented 3 years ago

Summary

Recently, the following addresses:

have been abusing the dispenser on TestNet and have withdrawn more than 1M (TestNet/fake) Algos from the official dispenser and another dispenser.

Scope/Requirements

Scope for this issue:

Out of scope (for now) To prevent such abuse, we may consider the following counter-measures:

Urgency/Relative Priority

Quite urgent to implement one countermeasure to prevent all funds of the dispenser to be leaked.

onetechnical commented 3 years ago

We could also add internal tracking of dispenser addresses, such that if you get transferred more than, say, 10,000 algos, you have to contact us. You would be able to just spin up multiple accounts.

Blacklisting addresses who abuse the system automatically might be a good idea too; perhaps > 1,000 algos in a single day puts you on an automatic 7 day wait / contact us list.

Probably a combination of harder captcha, reduced algo dispensed, and appeal to kindness are easy. Adding per-account or IP limits is trickier and will result in false positives and add infrastructure.

mxmauro commented 3 years ago

Hi guys, we are trying to solve the same issue. Despite headers can be fake, because the periodicity of the data logged in our servers, seems the abuser was using, in our case, Firefox and controlling it programmatically with an external tool like AutoIt.

reCaptcha seems too weak. No way to enforce the 3x3 grid popup and the checkbox too easy to click.

@onetechnical , we were also thinking in limiting per-ip / per-address but, in my opinion, I don't think a honest user would need too much funds that might trigger the limit or 100/1000 algos.

egieseke commented 3 years ago

Added appeal for kindness message. Verified that captcha is set to highest security.