🔍 Static Analysis Report - December 3, 2025 #5395
Closed
Replies: 2 comments
-
|
/plan |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
This discussion was automatically closed because it was created by an agentic workflow more than 3 days ago. |
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
Comprehensive static analysis scan completed on 93 workflows using three security and code quality tools: zizmor (security), poutine (supply chain security), and actionlint (linting).
Key Findings:
The analysis reveals that most workflows follow security best practices, with findings concentrated in CI/CD workflows (ci.yml, codeql.yml) and utility workflows that handle external inputs.
Full Report Details
Tools Used
Findings by Tool
Zizmor Security Findings
Zizmor identified 4 distinct issue types across 64 occurrences affecting 13 workflows.
High Severity Issues
1. Unpinned Action Reference (1 occurrence)
Severity: High
Workflow: ci.yml
Description: Workflow uses an action without pinning it to a specific commit SHA
Risk: Malicious updates to the action could compromise the workflow
Reference: (redacted)#unpinned-uses
Recommendation: Pin all action references to full commit SHAs instead of tags or branches:
2. Excessive Permissions (2 occurrences)
Severity: High
Workflow: docs.yml
Description: Workflow has overly broad permissions that exceed what's necessary
Risk: Compromised workflow could abuse excess permissions
Reference: (redacted)#excessive-permissions
Recommendation: Apply principle of least privilege - grant only the specific permissions needed:
Medium Severity Issues
3. Artipacked - Credential Persistence (14 occurrences)
Severity: Medium
Affected Workflows: ci, codeql, copilot-setup-steps, docs, format-and-commit, integration-agentics, smoke-isolated-srt
Description: Workflows upload artifacts that may contain credentials or secrets
Risk: Secrets could be exposed through artifact downloads
Reference: (redacted)#artipacked
Affected Files:
Recommendation:
.gitignore-style exclusions to artifact uploadsInformational Issues
4. Template Injection (47 occurrences)
Severity: Informational (can escalate to High)
Affected Workflows: breaking-change-checker, changeset, ci, duplicate-code-detector, mcp-inspector, release, stale-repo-identifier
Description: GitHub Actions expressions used directly in scripts where they could expand into attacker-controllable code
Risk: Potential code injection if external inputs are used without sanitization
Reference: (redacted)#template-injection
Example Pattern:
Poutine Supply Chain Findings
No findings - All workflows passed poutine's supply chain security checks.
This indicates:
Actionlint Linting Issues
Actionlint identified 1 issue type with 6 occurrences in 1 workflow.
Issue: Undefined Property Access
Workflow: issue-monster.lock.yml
Count: 6 occurrences
Description: Workflow references
needs.search_issues.*outputs, butsearch_issuesjob is not defined in the workflow dependency graph.Lines Affected: 2396, 2397, 2398, 2637, 2638, 2639
Example:
Fix Required: Either add
search_issuesto the job'sneeds:array or remove these environment variable references if they're no longer needed.Top Priority Issues
Priority 1: High Severity Security Issues (3 findings)
Estimated Effort: 30 minutes
Recommended Action: Create a PR to fix both issues immediately
Priority 2: Medium Severity - Artipacked (14 findings)
Artipacked issues in 7 workflows where artifacts might contain credentials.
Estimated Effort: 2-3 hours
Recommended Action: Audit each workflow's artifacts and implement sanitization
Priority 3: Template Injection (47 findings)
While marked "Informational", template injection can escalate to High severity if exploited.
Estimated Effort: 4-6 hours
Recommended Action: Systematically refactor to use environment variables
Priority 4: Actionlint Errors (6 findings)
Configuration error in issue-monster workflow.
Estimated Effort: 15 minutes
Recommended Action: Fix undefined job reference
Fix Suggestion: Template Injection
Issue: template-injection
Severity: Informational (can escalate)
Affected: 47 occurrences across 7 workflows
Understanding the Issue
Template injection occurs when GitHub Actions expressions like
${{ ... }}are embedded directly in scripts where they expand before execution. If these expressions contain user-controlled data (issue titles, PR descriptions, comments), attackers can inject malicious code.Attack Example:
When expanded in a script:
The Fix: Use Environment Variables
Step 1: Move expressions from scripts to
env:blocksStep 2: Reference via environment variables in the script
Step 3: Validate with zizmor
Fix Examples
JavaScript/TypeScript (actions/github-script)
Before (Vulnerable):
After (Secure):
Shell Scripts
Before (Vulnerable):
After (Secure):
Workflows Requiring Fixes
Automated Fix Prompt
For Copilot or another AI agent to fix these issues:
Apply this fix to all occurrences in: breaking-change-checker.md, changeset.md, ci.yml, duplicate-code-detector.md, mcp-inspector.md, release.md, stale-repo-identifier.md
Beta Was this translation helpful? Give feedback.
All reactions