4 ms·
You are correct that a script could create new users at machine speed. Rate limiting is typically done outside of the app server stack, but the FaunaDB dynamic
by jchanimal 9y ago
You are correct that a script could create new users at machine speed. Rate limiting is typically done outside of the app server stack, but the FaunaDB dynamic schedule, QoS, and quota system have the potentially to mitigate this kind of attack. For instance, as we add support for per-key quotas etc, the publicly exposed key can be provisioned with the limits you describe.
The use case we're illustrating here is support for the early stages of experimental apps. In the case of a successful app needing to patch this vulnerability in realtime, the sensible thing to do may be to put the user creation function behind a Lambda-like endpoint or a smart proxy that can apply non-application logic to manage resource attacks.
You can learn about the object-level security model here: https://fauna.com/documentation/security https://fauna.com/documentation/security
- jitl 9y agoGiven your response here, I think using the word "secure" in your article title is disingenuous. You shouldn't promote a practice or technique as "secure", but then when asked about security, tell me that the sensible thing to do is to implement security myself. You should discuss the limitations of your actor-based security model frankly in your documentation and promotional tutorials. Even more so because you plan more security features like "key-based quotas", indicating y'all are well aware of these limitations, and foresee the need for more mitigations! As it is, I think FaunaDB is an interesting product, but because of the approach to security related messaging, I view the whole system with distrust. What other "lies of omission" would I find if I actually started using this product?
- le-mark 9y agoHow is this different than someone attacking a contact form on a wordpress site? In your mind what would be a sufficient mitigation for a service like this? A one time use token for example? Captcha on the signup form?
- jitl 9y agoYeah, I think your suggested mitigations sound reasonable. Everything in this space is going to be only partial mitigations, but it should still be discussed, especially if "secure" is a selling point and given that the FaunaDB service is billed based on usage. What I would do: - one-time use token for the creation form, a la CSRF tokens and nonces; Although that just doubles the number of requests needed to perform a submission - rate-limit all endpoints based on IP, user agent, etc - Captcha on creation form