Skip to content

Comments

πŸ›‘οΈ Sentinel: [CRITICAL] Fix command injection in slatron-node#36

Closed
JustinWoodring wants to merge 1 commit intomainfrom
sentinel/fix-node-rce-2193104580598987903
Closed

πŸ›‘οΈ Sentinel: [CRITICAL] Fix command injection in slatron-node#36
JustinWoodring wants to merge 1 commit intomainfrom
sentinel/fix-node-rce-2193104580598987903

Conversation

@JustinWoodring
Copy link
Owner

This PR addresses a critical command injection vulnerability in slatron-node's shell_execute Rhai function.

Previously, shell_execute passed the user-provided command string directly to sh -c, allowing arbitrary command execution via shell operators (e.g., ;, |, $()).

The fix:

  1. Removes sh -c usage: Commands are now executed directly using std::process::Command, preventing shell interpretation.
  2. Implements Strict Allowlist: Only yt-dlp, ffmpeg, ffprobe, and echo are allowed to run.
  3. Adds Custom Tokenizer: A helper function tokenize_command splits the command string into executable and arguments while respecting quotes, ensuring arguments are passed correctly without shell expansion.
  4. Blocks Dangerous Arguments: Explicitly checks for and blocks --exec in yt-dlp to prevent application-level RCE.
  5. Adds Verification Tests: A new test module security_test.rs verifies that injection attempts fail and valid commands work as expected.

PR created automatically by Jules for task 2193104580598987903 started by @JustinWoodring

🚨 Severity: CRITICAL
πŸ’‘ Vulnerability: Command Injection in `shell_execute` via `sh -c`
🎯 Impact: RCE on display nodes
πŸ”§ Fix: Replaced `sh -c` with `Command::new` using custom tokenizer and strict allowlist.
βœ… Verification: `cargo test -p slatron-node` passes. New security tests added.

Co-authored-by: JustinWoodring <41842051+JustinWoodring@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

πŸ‘‹ Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a πŸ‘€ emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant