Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hardening of Vulcan #31

Open
pquerna opened this issue Dec 23, 2013 · 1 comment
Open

Hardening of Vulcan #31

pquerna opened this issue Dec 23, 2013 · 1 comment

Comments

@pquerna
Copy link
Contributor

pquerna commented Dec 23, 2013

Right now Vulcan probably isn't that awesome to expose to the general internet.

We need to add many limits and hardening of what is accepted from clients, and better understand abusive upstreams.

For example:

  • Request bodies are not limited in any way, and may consume all memory.
  • Response Bodies are not streamed, and are buffered completely in memory.
  • Add or improve timeouts of clients, upstreams, etc.
  • Improve limits on number of headers, size of headers, etc.
@klizhentas
Copy link
Contributor

Some notes from conversation with @pquerna:

  • Check for multipliers, cases when user sent one byte to the server and it uses 10 bytes. These are opening doors for attacks.
  • Introduce hard limits on request body size
  • Limits on header size and count
  • Introduce bandwidth limiting algorithms (use token bucket for request bodies)
  • if streaming use TCP to make a back pressure
  • content-length header, something to check
  • cookie size limits (subset of header size limit)
  • Deflate attacks?
  • Don't close the socket if someone hit the limit, just half close for read.
  • Add support for TLS

Examples of tests

  • Proxy a hundred gig file and it does not increase memory usage on vulcan

Feel free to add more if something else comes to mind, we'll start working on this.

Thanks,
Sasha

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants