[sighthound] Security findings in github/gh-aw
- Dominant language
- Go
- Stars
- 5.1k
- Forks
- 541
- Avg merge
- 5h 48m
- Merged PRs (30d)
- 773
Description
Top 5 highest-severity findings from Sighthound actionable results:
- `actions/setup/js/update_release.test.cjs` — **Critical** (CWE-94, Code Injection) at line 195: tainted `params` reaches `eval`. **Remediation:** eliminate `eval`; use explicit parsing/dispatch logic (e.g., strict JSON parsing and allowlisted operations) and reject unexpected input.
- `actions/setup/js/update_release.test.cjs` — **Critical** (CWE-94, Code Injection) at line 222: tainted `params` reaches `eval`. **Remediation:** same fix pattern—remove dynamic code execution and enforce strict input validation with safe non-eval execution paths.
- `pkg/workflow/config_helpers.go` — **Medium** (CWE-502, Unsafe Deserialization) at line 198: `yaml.Unmarshal(yamlBytes, target)`. **Remediation:** unmarshal into strict typed structs only, disallow unknown fields, and validate decoded content before use.
- `pkg/workflow/known_action_credentials.go` — **Medium** (CWE-502, Unsafe Deserialization) at line 186: `yaml.Unmarshal([]byte(stepsYAML), &steps)`. **Remediation:** use concrete schemas for workflow steps and apply structural validation/allowlists post-unmarshal.
- `pkg/workflow/known_action_credentials.go` — **Medium** (CWE-502, Unsafe Deserialization) at line 176: `yaml.Unmarshal([]byte(stepsYAML), &wrapped)`. **Remediation:** decode into minimal strongly typed wrappers, reject unexpected keys/types, and validate all nested fields.
> [!WARNING]
>
> Firewall blocked 1 domain
>
> The following domain was blocked by the firewall during workflow execution:
>
> - `ab.chatgpt.com`
>
> To allow these domains, add them to the `network.allowed` list in your workflow frontmatter:
>
> ```yaml
> network:
> allowed:
> - defaults
> - "ab.chatgpt.com"
> ```
>
> See [Network Configuration](https://github.github.com/gh-aw/reference/network/) for more information.
>
>
> Generated by [🛡️ Sighthound Security Scan](https://github.com/github/gh-aw/actions/runs/34932403389) · codex · gpt53codex · 6.16 AIC · ⌖ 2.66 AIC · ⊞ 18.6K · [◷](https://github.com/search?q=repo%3Agithub%2Fgh-aw+is%3Aissue+%22gh-aw-workflow-call-id%3A+github%2Fgh-aw%2Fsighthound-security-scan%22&type=issues)
Contributor guide
Research direction
Review the two eval sites in actions/setup/js/update_release.test.cjs at lines 195 and 222, then inspect the yaml.Unmarshal calls in pkg/workflow/config_helpers.go and pkg/workflow/known_action_credentials.go. Done means dynamic evaluation is removed and the YAML inputs use typed schemas with unknown-key rejection and validation, as described by the findings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, go, javascript
- Domain
- backend, security
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100