-
Notifications
You must be signed in to change notification settings - Fork 8.2k
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
Compartmentalized privileges #90691
Comments
Pinging @elastic/kibana-core (Team:Core) |
Pinging @elastic/kibana-security (Team:Security) |
/cc @alexh97 @scunningham |
I could envision the It wouldn't prevent an RCE from reading |
I'm not up to date with node's security sandboxing. Would that forces us to run all plugins in distinct processes (I don't need to explain the technical implications of implementation that), or can the sandboxing be controlled at a more granular intra-process level? (Can I add that I really miss Java's security manager / isolated class loaders for such issues?) |
As far as I'm aware, Node.js doesn't currently have any method of sandboxing code. However, operating systems themselves provide various facilities that apply to an entire process, for example: https://en.wikipedia.org/wiki/Seccomp |
That is true. NodeJS provides a VM API to compile/execute isolated scripts BUT they are not intended for security purposes. IMO Managing system level priviledges inside an application is just as troublesome as not having any sandboxing between modules. |
Have you tried using Compartments with SES shim? https://github.com/LavaMoat/LavaMoat/ |
The following is super hand-wavey and inspired largely by Chrome's approach to Linux Sandboxing: https://chromium.googlesource.com/chromium/src/+/master/docs/linux/sandboxing.md
Currently, Kibana runs as a single process and all code has the same privileges to the filesystem, Elasticsearch, network, etc. As a result, we continue to run into security concerns from granting Kibana privileges when it would dramatically increase the actions that an attacker would be able to perform if they found an RCE.
For example, we currently require user intervention for Ingest Manager packages to be updated because we're concerned about giving the
kibana_system
user too many privileges. This comes at a detriment to our end-users because they have to wait for an adequately privileged user to come around and update the packages. These inconveniences are expanding over time, and are being tracked by #89827If we weren't worried about all of Kibana's code having the same privileges, and could for example drop privileges after initial startup, or run different plugins with different privileges, it seems like this would largely mitigate against these concerns.
The text was updated successfully, but these errors were encountered: