fix: harden child-process argv and whisper path passing - #90
Merged
Merged
Conversation
|
Capy couldn't review this pull request because Max's workspace is out of credits, add credits or enable auto-reload to resume automatic reviews. |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_826a458d-b09f-4a16-bad3-3a9ab68f7a7c) |
|
Tick the box to add this pull request to the merge queue (same as
|
Pass the Telegram faster-whisper audio path as python argv[1] instead of interpolating it into python -c. Put `--` before dynamic-tool scripts and vibemania goals so a leading `-` cannot be a flag. Scrub secret env vars from those children. Log local message-bridge bind failures instead of unwrapping. Co-authored-by: Max Carter <undivisible@vk.com>
Keep children from leaking if the parent task is cancelled after spawn. Co-authored-by: Max Carter <undivisible@vk.com>
undivisible
force-pushed
the
fix/child-process-hardening
branch
from
September 16, 2026 05:32
a14d549 to
a63d4f0
Compare
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_5aea07cd-8297-47c5-b752-dd588af5b193) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
Closes leftover Jules injection/flag-confusion gaps without changing intended
sh -cskill/test semantics.python3 -cbody; audio path issys.argv[1], never interpolated (Jules 🔒 Fix Code Injection Vulnerability in Telegram Voice Transcription #55).--before python/bash script path; scrub secret env vars (Jules 🔒 Fix command injection vulnerability in dynamic tool execution #71).--+ goal; env scrub (Jules 🔒 Fix command injection and secret leak in vibemania tool #61).Tests
Unit coverage for whisper argv construction and dynamic-tool
--placement. Full--all-featuressuite did not finish in the orb (RocksDB compile).Review-only. Process-spawn / security boundary — do not auto-merge.
Note
Medium Risk
Touches security-sensitive process spawning and untrusted path/argument handling; changes are defensive but warrant careful review of argv ordering and env scrubbing on each spawn site.
Overview
Hardens several child-process spawn paths against injection and flag confusion without changing shell-based skill semantics elsewhere.
Telegram voice transcription now runs a fixed
python3 -cWhisper script and passes the temp audio file only assys.argv[1](not embedded in the script), withkill_on_dropandchild_proc::scrubon the Python process. A unit test locks in that behavior.Dynamic tools (
python3/bash) insert--before the script path so paths starting with-are not parsed as flags; execution is centralized viadynamic_tool_argv, with the same scrub/kill-on-drop treatment. Vibemania applies the same pattern: flags first, then--plus the user goal.The local Telegram message bridge logs bind/serve failures instead of panicking on
unwrap.New tests cover Whisper argv construction and dynamic-tool
--placement.Reviewed by Cursor Bugbot for commit a63d4f0. Configure here.