[sighthound] Security findings in github/gh-aw

Sighthound Security Scan · issue · closed

Filter2mode:review mode:live
All recorded Export JSON
github-actions[bot]

published Aug 26, 2026, 5:29 AM · updated Aug 26, 2026, 1:58 PM

Sighthound security scan flagged 170 findings (38 Critical, 13 High, 77 Medium) in github/gh-aw. Below are the 5 highest-severity findings outside test/testdata paths for triage.

  1. pkg/workflow/pip_validation.go:239 — Critical, Command Injection (CWE-78)
    exec.Command(uvPath, "pip", "show", pkgName, "--no-cache")
    pkgName may originate from workflow/user input. Validate/allowlist the package name format (e.g. regex for valid PyPI package names) before passing it to exec.Command.

  2. pkg/workflow/dependabot_manifests.go:282 — Critical, Command Injection (CWE-78)
    exec.Command(npmPath, "install", "--package-lock-only", "--ignore-scripts")
    Confirm working directory and any interpolated paths/args are validated; ensure no untrusted manifest data reaches the command arguments.

  3. pkg/cli/grype.go:361 — Critical, Command Injection (CWE-78)
    exec.Command(dockerPath, dockerArgs...)
    dockerArgs is built dynamically — verify all elements (image refs, volume mounts) are derived from trusted/validated sources, not directly from user-supplied strings.

  4. pkg/cli/poutine.go:132,256 — Critical, Command Injection (CWE-78)
    exec.Command(dockerPath, "run", "--rm", "-v", volumeMount, "-w", "/workdir", poutineImageRef, "analyze_local", ".", "--format", "json", "--quiet")
    volumeMount is constructed from a path; ensure it's sanitized/filepath.Clean-ed and confined to expected directories before use in the docker invocation.

  5. pkg/cli/upgrade_command.go:507 — Critical, Command Injection (CWE-78)
    exec.Command(exe, newArgs...)
    Re-exec of the binary with newArgs — confirm newArgs cannot be influenced by untrusted input (e.g. env vars, config files) to inject unintended flags/commands.

General remediation guidance: For all exec.Command sinks, pass arguments as a fixed slice (never build via sh -c or string concatenation), validate/allowlist any user-influenced values (package names, paths, image refs) before use, and use filepath.Clean + base-directory confinement for path inputs.

Full details available in the Sighthound scan artifacts (actionable.json, 170 findings across the repo, majority Medium severity YAML Unmarshal findings in pkg/parser and pkg/workflow recommending strict struct types over interface{}).

Generated by 🛡️ Sighthound Security Scan · copilot · auto · 15.8 AIC · ⌖ 6.98 AIC · ⊞ 6.9K ·