subprocess module call
Medium
- Category
- Dangerous Code Execution
- Content
script_path = os.path.join(get_skills_root(), skill_slug, "scripts", "main.py") if not os.path.isfile(script_path): return None proc = subprocess.run( [sys.executable, script_path, *args], capture_output=True, text=True,- Confidence
- 91% confidence
- Finding
- The code launches a sibling skill as a subprocess using a path built from the unvalidated `skill_slug` and forwards arbitrary `args` to that script. Although `subprocess.run` is invoked without a shell, this still enables execution of unintended local code if an attacker can influence `skill_slug` or arguments, especially because sibling skills are treated as executable trust boundaries.
