engineering-advanced-skills
Audited by Socket on Sep 12, 2026
4 alerts found:
Securityx3AnomalyNo clear evidence of stealthy malware (exfiltration/persistence) is visible in the fragment. However, the code contains a significant and concrete security risk: it executes a user-provided evaluation command with `subprocess.run(..., shell=True)` directly from the CLI argument --eval, enabling arbitrary command execution. Optional evaluator copying and branch creation further expand supply-chain/code-introduction risk, but their safety cannot be confirmed from this snippet.
SUSPICIOUS: the skill's capabilities largely match its stated purpose, and I found no clear credential harvesting or off-purpose exfiltration. The main concerns are autonomous indefinite modification/command execution and medium install-trust issues from unpinned same-org distribution paths.
This module itself is not visibly malicious or obfuscated, but it contains a high-impact security design flaw: it executes a user/config-provided eval_cmd via subprocess.run(..., shell=True) with cwd set to a git worktree path. If an attacker can influence --eval-cmd or the per-session config.yaml content, this becomes a straightforward arbitrary command execution vector. Additionally, config.yaml is read from a path constructed using an unvalidated session_id, which can pose an unintended file read/path traversal risk depending on caller constraints.
No direct evidence of embedded malware (e.g., exfiltration, backdoors, persistence) or intentional obfuscation is present in this module’s logic. However, it has a critical supply-chain/sandbox-break risk: it executes a shell-interpreted command (shell=True) taken directly from experiment_dir/config.cfg (evaluate_cmd). If config.cfg (or experiment_dir contents) can be influenced by an attacker, this becomes arbitrary command execution in the project directory. The script also performs destructive git resets on failure/timeout, increasing operational impact. Recommend strict validation/whitelisting of evaluate_cmd, avoiding shell=True (use argv lists), and running evaluations in a heavily restricted environment (e.g., container/sandbox) with immutable configs.