Static Analysis Report - 2026-04-02 #24166
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Static Analysis Report. A newer discussion is available at Discussion #24358. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Analysis Summary
Daily static analysis scan of all agentic workflows using zizmor, poutine, and actionlint. Total findings decreased marginally by 1 versus the previous scan (8601 → 8600), though the composition shifted: zizmor findings dropped by 230 while actionlint findings grew by 229, reflecting new workflow additions and incremental shellcheck growth.
Findings by Tool
Clustered Findings by Tool and Type
Zizmor Security Findings
secrets-outside-envtemplate-injectionobfuscationunpinned-usesgithub-envartipackedsecrets-inheritPoutine Supply Chain Findings
untrusted_checkout_execpr_runs_on_self_hostedgithub_action_from_unverified_creator_usedunverified_script_execunpinnable_actionActionlint Linting Issues
shellcheck SC2086shellcheck SC2129permissionscopilot-requests: writeexpressionrunner-labelshellcheck SC2012Top Priority Issues
1. Template Injection (High Severity — 47 Workflows)
audit-workflows,copilot-pr-nlp-analysis,copilot-session-insights,daily-code-metrics,daily-firewall-report,daily-news,issue-monster,poem-bot,scout,q, and 37 more$\{\{ github.event.* }}expressions directly interpolated intorun:shell scripts, enabling shell command injection via crafted issue titles, comment bodies, or PR branch names2. Unknown Permission Scope
copilot-requests(74 Occurrences — ~41 Workflows)copilot-requests: writewhich is not a recognized GitHub Actions permission scope3. Expression Property Undefined (13 Occurrences — ~10 Workflows)
runner.imageid,activation.outputs.activated,activation.outputs.artifact_prefix4. Untrusted Checkout Exec — Poutine (6 Occurrences — 2 Workflows)
smoke-workflow-call,smoke-workflow-call-with-inputsbashscripts executed from checkout in workflows triggered by PRs — arbitrary code execution risk from untrusted contributors# poutine:ignore untrusted_checkout_execbut findings still surfaceFix Suggestion for Template Injection
Issue: template-injection — Code Injection via Template Expansion
Severity: High
Affected Workflows: 47 workflows (24 with High severity)
Reference: (docs.zizmor.sh/redacted)
Prompt to Copilot Agent:
All Findings Details by Category
Zizmor: secrets-outside-env (Medium — 3,627 occurrences)
All 179 workflows are flagged because secrets are referenced in jobs that do not use a named GitHub environment (
environment:). This is a widespread structural pattern in the gh-aw harness. zizmor recommends using named environments to constrain secret access, but this would require significant harness-level changes.Zizmor: unpinned-uses (High — 5 occurrences in daily-fact)
daily-factusesgithub/gh-aw-actions/setup@v0(a mutable tag). This should be pinned to a specific SHA for supply chain security.Zizmor: github-env (High — 1 occurrence in dev-hawk)
dev-hawkwrites untrusted data to$GITHUB_ENV, which can set environment variables for subsequent steps — potential environment injection vector.Actionlint: expression undefined properties
runner.imageid— used in 10 workflows viaqmdexperimental featureactivation.outputs.activated— used inace-editoractivation.outputs.artifact_prefix— used insmoke-claudeThese likely reflect schema drift between the workflow compiler's output type definitions and actual field names.
Poutine: github_action_from_unverified_creator_used (Note)
Third-party actions from unverified publishers:
actions-ecosystem/action-add-labels(smoke-codex)astral-sh/setup-uv(mcp-inspector, copilot-setup-steps, daily-copilot-token-report)gaurav-nelson/github-action-markdown-link-check(link-check)super-linter/super-linter(super-linter)All are pinned to commit SHAs, which mitigates the risk.
Historical Trends
Changes vs. yesterday (2026-04-01):
secrets-outside-envdecreased from 3,861 → 3,627)New Issues (vs. 2026-04-01)
Resolved Issues
Recommendations
github-envin dev-hawk: Audit what is written to$GITHUB_ENVand sanitize or remove it.daily-factaction: Replace@v0with a specific commit SHA forgithub/gh-aw-actions/setup.runner.imageid(qmd experimental feature),activation.outputs.activated(ace-editor schema), andactivation.outputs.artifact_prefix(smoke-claude).proxy.golang.org/sum.golang.orgfirewall domains with thegoecosystem identifier inissue-triage-agent.bash \$\{RUNNER_TEMP}/...extensively with unquoted\$\{}. While low-risk (RUNNER_TEMP is system-controlled), quoting would clean up the noise.Next Steps
github-envwrite indev-hawkdaily-factaction reference to a SHAsmoke-workflow-calluntrusted_checkout_exec — determine ifpoutine:ignoresuppression is appropriateReferences:
Beta Was this translation helpful? Give feedback.
All reactions