-
Notifications
You must be signed in to change notification settings - Fork 0
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
noob/direction/scope questions #7
Comments
Hey there, @abathur! Thanks for the kind words and questions. ❤️ I'm pleasantly surprised anyone is looking at this repo at all. Your project sounds really interesting, since dynamic detection of unsatisfied dependencies for programs using a sandbox and syscall tracing is something that I've been curious about for a while as well. I'd be interested to follow your own progress too, if you don't mind! With that said, I would like to disclaim that this project is a personal experiment and learning exercise to create a cross-platform sandboxing abstraction which works on Linux and macOS first, and maybe support OpenBSD, FreeBSD and their related derivatives down the line. I think if you check the partially complete FEATURES.md table, you will see that feature-parity between even the first two platforms is all over the place. Linux appears to be the best supported platform for your use case by far, and it is the only platform that I know of capable of full container-like isolation without explicitly requiring dangerous levels of The main purpose of Bastille, at this stage, is to research the overall sandboxing landscape, determine what features each platform offers, and evaluate the possibility of creating a common abstraction between them. The projected outcome currently seems grim, but I'm still looking into it. I would like to make these caveats very clear before you choose to adopt Bastille for use in your own project. With that out of the way, in response to your questions:
|
Thanks for the quick response. The perspective on your goals is helpful. My main project is focused on using a parser to do as much of it statically as possible, but I think it's still worth exploring fuzzier approaches to the problem. If nothing else, it'll still help me validate the static approach, focus my effort on the most-valuable improvements, and understand if/when it outstrips what a dynamic approach can deliver. I can use the static approach to object to many dynamic statements that seem like they may be commands, but I also have to strike a balance between making the user/packager verify a great many innocuous dynamic statements manually, and allowing some dependencies in dynamic statements to go unnoticed. I don't have specifics worked out in my head, but I am curious if I can combine the two--let the static approach strictly object to the dynamic statements, and then use the dynamic approach to help the user triage statements that do indeed appear capable of executing external dependencies.
|
Stumbled on this last night while surveying nix files that use osxfuse. I don't have any first-hand rust experience, but I fumbled around until I figured out how to build and get the bash example working.
Cool stuff :)
As part of a larger project focused on resolving external dependencies in shell scripts (with a focus on Nix/nixpkgs), I'm taking a little time to evaluate the feasibility of ~fuzzing scripts to search for external dependencies that haven't been resolved. I'm not sure what if any role this will play in the long-term project--it'll depend on how effective it is. If it's good enough, it'll probably be part of a validation/hardening mode that a user can run for a while.
I've got a decent bash implementation of this concept that I have made fairly safe, but there's still a risk of redirects in the file spewing unanticipated output into weird places and overwriting or appending something. So I've been looking for a good cross-platform sandbox that doesn't require me going too far down a rabbit-hole for a proof-of-concept. From what I've seen so far, bastille fits the bill. I've been using the Nix build sandbox for now to fill this need for now, but non-NixOS users don't have sandboxed builds by default, so it isn't a good "release" solution.
I'm also looking for the ability to log/track paths that the sandboxed script tries to read (and maybe write). It doesn't look like bastille or sandboxfs do this out-of-the-box.
The text was updated successfully, but these errors were encountered: