🔍 Static Analysis Report - December 1, 2025 #5202
Closed
Replies: 2 comments 1 reply
-
|
/plan |
Beta Was this translation helpful? Give feedback.
1 reply
-
|
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.
-
🔍 Static Analysis Report - December 1, 2025
Comprehensive security and code quality analysis of all agentic workflows using zizmor, poutine, and actionlint static analysis tools.
Executive Summary
Analysis completed successfully on 87 compiled workflows out of 91 total workflows. The scan identified 27 total findings across security vulnerabilities and code quality issues, with 6 High-severity security findings requiring immediate attention.
Key Findings
Most Critical Issues
Analysis Statistics
Findings by Severity
Findings by Tool
Detailed Findings
Zizmor Security Findings
1. Template Injection (High Priority)
Count: 6 occurrences
Severity: High (2), Low (1), Informational (3)
Reference: (redacted)#template-injection
Code injection vulnerability via template expansion in GitHub Actions expressions.
Security Impact: Attackers could inject malicious code through issue titles, PR descriptions, or workflow inputs that gets executed with workflow permissions.
Fix Required: Move all
${{ github.event.* }}expressions to environment variables instead of direct interpolation in shell scripts.2. Cache Poisoning (High Priority)
Count: 2 occurrences
Severity: High
Reference: (redacted)#cache-poisoning
Runtime artifacts potentially vulnerable to cache poisoning attacks.
Security Impact: Attackers could poison the build cache, leading to compromised build artifacts or supply chain attacks.
Fix Required: Implement cache key validation and restrict cache access scope.
3. Unpinned Actions (High Priority)
Count: 1 occurrence
Severity: High
Reference: (redacted)#unpinned-uses
Unpinned action reference allows potential supply chain attacks.
Security Impact: Using floating tags like
@v2instead of commit SHAs allows actions to be updated maliciously without detection.Fix Required: Pin all actions to specific commit SHAs (e.g.,
@abc123def456...).4. Credential Persistence (Medium Priority)
Count: 1 occurrence
Severity: Medium
Reference: (redacted)#artipacked
Security Impact: Credentials could be inadvertently stored in workflow artifacts, leading to exposure.
Fix Required: Ensure artifacts don't contain secrets or credentials.
5. Excessive Permissions (High Priority)
Count: 1 occurrence
Severity: High
Reference: (redacted)#excessive-permissions
Security Impact: Overly broad permissions increase attack surface if workflow is compromised.
Fix Required: Follow principle of least privilege - reduce to minimum required permissions.
Actionlint Code Quality Findings
1. Shellcheck SC2086 - Missing Quotes (Most Common)
Count: 13 occurrences
Issue: Double quote to prevent globbing and word splitting
Pattern:
$PR_NUMBERused without quotes ingh apicommandAffected Workflows:
Common Code Pattern:
Fix: Add quotes around variable:
2. Syntax Check Error
Count: 1 occurrence
Workflow: cloclo.lock.yml (Line 370)
Error: Unexpected key "names" for "issues" section. Expected one of "branches", "branches-ignore", "paths", "paths-ignore", "tags", "tags-ignore", "types", "workflows"
Fix Required: Remove invalid "names" key from issues trigger configuration.
3. Expression Error
Count: 1 occurrence
Workflow: close-old-discussions.lock.yml (Line 547)
Error: Property "aw" is not defined in object type (github context)
Issue: Code references
${{ github.aw.inputs.count }}butawis not a valid property of thegithubcontext.Fix Required: Correct the expression to use valid GitHub context properties.
Poutine Supply Chain Findings
No supply chain security issues detected by poutine scanner.
All workflows appear to follow supply chain security best practices for the checks performed by poutine.
Top Priority Fixes
Priority 1: High Severity Security Issues (6 findings)
Immediate action required on these workflows:
release.lock.yml (4 High findings)
ci-doctor.lock.yml (1 High finding)
close-old-discussions.lock.yml (1 High finding)
test-firewall-escape.lock.yml (1 High finding)
Priority 2: Systematic Code Quality Issues
Shellcheck SC2086 affects 9 workflows with 13 total occurrences. This is a systematic issue that should be fixed across all workflows using a consistent pattern.
Recommended Approach: Create a PR that fixes all SC2086 issues by adding proper quoting to the common pattern in the PR reviewer request step.
Priority 3: Workflow Syntax Errors
Fix syntax errors in:
Fix Suggestions
Template Injection Fix Guide
I've created a comprehensive fix guide for the most critical issue - template injection vulnerabilities.
Issue: Template injection via unsafe use of GitHub Actions expressions
Affected: 6 workflows (2 at High severity)
Tool: zizmor
Fix Strategy: Move all external/untrusted data to environment variables
Example Fix:
❌ Before (Vulnerable):
✅ After (Secure):
Why This Works: Environment variables prevent code injection because the value is treated as a literal string rather than being evaluated as code.
Detailed Fix Guide: See
/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.mdin workflow artifacts for complete instructions.Workflows Without Issues
72 workflows compiled successfully with no findings:
These workflows passed all static analysis checks from zizmor, poutine, and actionlint. Examples include:
Recommendations
Immediate Actions
Critical Security Fixes:
Systematic Code Quality:
Short-Term Actions
Pin All Actions:
Permission Review:
Long-Term Actions
Automated Static Analysis:
Security Guidelines:
Regular Audits:
Historical Context
This is the first comprehensive static analysis scan using all three tools (zizmor, poutine, actionlint). Baseline established on 2025-12-01.
Baseline Metrics:
Future scans will track:
Next Steps
Analysis Artifacts
Scan results and analysis artifacts stored in workflow cache:
/tmp/gh-aw/cache-memory/security-scans/2025-12-01.json/tmp/gh-aw/cache-memory/vulnerabilities/by-tool.json/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.md/tmp/gh-aw/cache-memory/security-scans/index.jsonAnalysis completed: 2025-12-01
Tools: zizmor (security), poutine (supply chain), actionlint (linting)
Workflows scanned: 91 total, 87 compiled
Total findings: 27 (6 High, 1 Medium, 20 Low/Info)
Beta Was this translation helpful? Give feedback.
All reactions