feat: add sandboxing for activation scripts #1156
Open
+341
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR tries to add the sandbox functionality to the activation process, enhancing the by restricting what activation scripts can access on the filesystem.
I don't know whether it's the right approach or not, would need suggestions from the team here, but I have used a dual-approach here - a
Production Mode
for which is the implementation part is given below, and aTest Mode
which bypasses the sandbox for testing in CI environments.Implementation Details:
rattler_sandbox
to create a secure sandbox environment with defined exceptions.run_in_sandbox
function that:Activator::run_activation
to use the sandbox when sandbox_mode is enabled.lib.rs
using thector
crate that callsrattler_sandbox::init_sandbox()
when the crate is loaded in test mode.I know the code and may be the approach is far from perfection so would love to get the feedback from the team and I will be more than happy to make the requested code changes!