Static Analysis Report - 2026-02-21 #17412
Replies: 1 comment
-
|
/plan |
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 156 agentic workflows completed using actionlint, zizmor, and poutine. This is the first scan — no historical baseline exists yet.
Findings by Tool
Clustered Findings
Zizmor Security Findings
pr_runs_on_self_hostedsmoke-copilot-armunverified_script_execcopilot-setup-steps,daily-copilot-token-reportgithub_action_from_unverified_creator_usedunpinnable_actiondaily-perf-improver/build-steps,daily-test-improver/coverage-stepsPoutine Supply Chain Findings
No findings reported by poutine on this scan.
Actionlint Linting Issues
Expression errors (267 total):
pre_activationundefined in needsmatched_commandundefined in pre_activation outputsprecomputeundefinedcheck_ci_statusundefinedreleaseundefinedoutputproperty undefinedShellCheck warnings (452 total):
{ cmd1; cmd2; } >> fileinstead of individual redirectsCompiler Warnings (25 total)
safe-inputsfeaturerate-limitfeatureTop Priority Issues
1. PR Runs on Self-Hosted Runner (zizmor)
smoke-copilot-arm.lock.yml(line 349,runs-on: ubuntu-24.04-arm)2. Unverified Script Execution (zizmor)
copilot-setup-steps.yml(lines 17, 42),daily-copilot-token-report.lock.yml(lines 366, 378)curl | bashandcurl | shpatterns execute remote scripts without integrity checks. A compromised CDN or MITM attack could inject malicious code.3. Expression:
pre_activationUndefined (actionlint).lock.ymlfiles referenceneeds.pre_activation.outputs.activatedandneeds.pre_activation.outputs.matched_command, but actionlint cannot verify these output properties exist in thepre_activationjob's type definition.pre_activationjob changes its output schema, dependent jobs silently break at runtime.4. SC2086 – Unquoted Variable Expansion (shellcheck)
echo "has_content=true" >> $GITHUB_OUTPUT→echo "has_content=true" >> "$GITHUB_OUTPUT"Fix Suggestion: Expression -
pre_activationUndefinedIssue: actionlint expression type error — job output properties undefined
Severity: Error (linting)
Affected Workflows: 104 workflows, 208 occurrences
Prompt to Copilot Agent:
View All Zizmor Findings
smoke-copilot-arm.lock.yml— pr_runs_on_self_hostedruns-on: ubuntu-24.04-arm— pull request workflow runs on self-hosted runnercopilot-setup-steps.yml— unverified_script_exec (×2)curl -fsSL https://raw.githubusercontent.com/github/gh-aw/refs/heads/main/install-gh-aw.sh | bashcurl -LsSf (astral.sh/redacted) | shdaily-copilot-token-report.lock.yml— unverified_script_exec (×2)curl -fsSL ... install-gh-aw.sh | bashcurl -LsSf (astral.sh/redacted) | shUnpinnable Actions
.github/actions/daily-perf-improver/build-steps/action.yml— unpinnable_action (info).github/actions/daily-test-improver/coverage-steps/action.yml— unpinnable_action (info)Unverified Creator Actions (×4)
View Top Affected Workflows (expression errors)
pre_activationundefined (104 workflows, first 20):artifacts-summary,audit-workflows,blog-auditor,bot-detection,chroma-issue-indexer,ci-coach,claude-code-user-docs-review,cli-consistency-checker,cli-version-checker,codex-github-remote-mcp-test,commit-changes-analyzer,contribution-check,copilot-agent-analysis,copilot-cli-deep-research,copilot-pr-merged-report,copilot-pr-nlp-analysis,copilot-pr-prompt-analysis,copilot-session-insights,daily-assign-issue-to-user,daily-choice-test… and 84 more.matched_commandundefined (37 workflows):agent-performance-analyzer,agent-persona-explorer,ai-moderator,auto-triage-issues,breaking-change-checker,changeset,ci-doctor,code-scanning-fixer,code-simplifier,daily-file-diet,daily-issues-report,daily-observability-report,daily-safe-output-optimizer,daily-team-status,daily-testify-uber-super-expert,dependabot-burner,dev-hawk,example-custom-error-patterns,firewall-escape,issue-monster… and 17 more.View Compiler Warnings Detail
Fixed schedule warnings — 8 workflows with fixed cron times should use fuzzy schedules:
*/6h→every 6h*/4h→every 4h9:00 UTC→daily7:00 UTC→daily6:00 UTC→weekly on sunday7:00 UTC→weekly on monday15:00 UTC→weekly on mondayAction version warnings — hardcoded pins used for:
actions/github-script@v7→ pinned to v7.1.0actions/setup-node@v6→ pinned to v6.2.0actions/setup-go@v6→ pinned to v6.2.0actions/setup-go@v5→ pinned to v5.6.0actions/checkout@v6→ pinned to v6.0.2docker/setup-buildx-action@v3→ pinned to v3.12.0docker/build-push-action@v6→ pinned to v6.19.2Permission warning —
example-permissions-warning.mdmissing required permissions forcontents: write,issues: write,pull-requests: write.Historical Trends
This is the first scan — no prior data available for comparison. Results have been stored in cache memory at
/tmp/gh-aw/cache-memory/security-scans/2026-02-21.jsonto establish a baseline for future trend analysis.Recommendations
smoke-copilot-arm— the sole zizmor warning (pr_runs_on_self_hosted) is the highest-severity finding. Evaluate whether PR triggers on self-hosted ARM runner are necessary.unverified_script_execincopilot-setup-steps.yml— either pin the install scripts to SHA-verified versions or use checksums.pre_activationexpression errors in the compiler output — these likely indicate missingoutputs:declarations in generated YAML.$GITHUB_OUTPUTand other variable expansions in shell scripts.Next Steps
pr_runs_on_self_hostedinsmoke-copilot-armworkflowcurl | bashpatterns incopilot-setup-steps.ymlpre_activationjoboutputs:declarationsReferences:
Beta Was this translation helpful? Give feedback.
All reactions