🔍 Static Analysis Report - November 4, 2025 (Full Scan) #3168
Closed
Replies: 1 comment
-
|
This discussion was automatically closed because it was created by an agentic workflow more than 1 week 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 - November 4, 2025
Executive Summary
Completed comprehensive static analysis of 66 agentic workflows using three security tools: zizmor, poutine, and actionlint. All workflows were successfully compiled and scanned for security vulnerabilities and code quality issues.
Key Findings:
smoke-detectorworkflow (dangerous workflow trigger)Urgency: The High severity
dangerous-triggersfinding insmoke-detectorrequires immediate attention as it represents a known attack vector for GitHub Actions workflows.Analysis Summary
Findings by Tool
Findings Distribution by Severity
Detailed Findings by Tool
🔴 Zizmor Security Findings (10 total)
1. Dangerous Triggers (HIGH SEVERITY)⚠️
Severity: High | Count: 1 occurrence | Rule:
dangerous-triggersAffected Workflow:
smoke-detector.lock.yml(line 54)Description:
The workflow uses
workflow_runtrigger with wildcard branch patterns (copilot/*), which is fundamentally insecure. This trigger allows workflows to run in a privileged context (base branch) even when triggered by potentially untrusted code from pull requests or feature branches.Security Impact:
Location:
Reference: (redacted)#dangerous-triggers
2. Template Injection (LOW SEVERITY)
Severity: Low | Count: 9 occurrences | Rule:
template-injectionAffected Workflows:
duplicate-code-detectormcp-inspectorsmoke-codexDescription:
Template expressions in MCP setup steps could allow code injection if user-controlled data flows into these expressions. While marked as Low severity, this can escalate if attackers can control issue titles, PR names, or workflow inputs that feed into these templates.
Pattern Identified:
All occurrences are in "Setup MCPs" steps where MCP (Model Context Protocol) servers are configured. The template expressions likely involve dynamic configuration that could be influenced by external inputs.
Example Location:
Reference: (redacted)#template-injection
🟢 Poutine Supply Chain Security (0 findings)
Excellent News! Poutine detected zero supply chain security issues across all 66 workflows.
This indicates:
🔵 Actionlint Linting (0 errors in compilation output)
No actionlint errors were reported in the compilation output. This represents a significant improvement from previous scans which detected shellcheck issues (SC2086, SC2012, etc.).
Note: Previous scans detected 141 actionlint findings, primarily shellcheck warnings. The absence of these in the current output may indicate either:
⚙️ Permission Configuration Issues (3 workflows)
example-permissions-warning.mdpython-data-charts.mdtest-secret-masking.mdImpact: These workflows will fail at runtime when attempting to access GitHub APIs without proper permissions.
Fix: Add missing permissions to workflow frontmatter:
Compilation Warnings (15 total)
These are non-security warnings but indicate potential configuration or compatibility issues:
By Type
Note: These warnings don't represent security vulnerabilities but should be addressed for workflow reliability.
Priority Issues & Recommendations
🔴 URGENT (Fix Immediately)
1. Fix dangerous-triggers in smoke-detector (HIGH SEVERITY)
Risk Level: HIGH - CVE-level vulnerability
Affected: smoke-detector.lock.yml
Recommended Fix: Replace
workflow_runtrigger withworkflow_callpatternDetailed Fix Instructions
Current (Insecure):
Recommended Fix:
Then modify smoke test workflows to call this workflow:
Why this is safer:
workflow_calldoesn't expose elevated privileges to untrusted codeReference: See
/tmp/gh-aw/cache-memory/fix-templates/zizmor-dangerous-triggers.mdfor complete fix guide🟡 HIGH PRIORITY (Fix Soon)
2. Review and mitigate template-injection warnings (LOW SEVERITY)
Risk Level: LOW (can escalate to HIGH if user input flows into templates)
Affected: 3 workflows, 9 occurrences
Recommended Fix: Move template expressions to environment variables
Fix Pattern for Template Injection
Current Pattern (Potentially Vulnerable):
Recommended Fix:
Key Principles:
${{ }}expressions fromrun:toenv:Apply to:
Reference: See
/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.mdfor complete fix guide🟢 MEDIUM PRIORITY (Address This Week)
3. Add missing permissions to 3 workflows
Risk Level: MEDIUM (workflows will fail at runtime)
Affected: example-permissions-warning, python-data-charts, test-secret-masking
Recommended Fix: Add permission blocks to workflow frontmatter
Fix Instructions
Add the following to each workflow's frontmatter:
For example-permissions-warning.md:
For python-data-charts.md and test-secret-masking.md:
Why this matters:
Historical Comparison
Comparing with previous scan (2025-11-04 09:10 AM):
Key Trends:
Recommendations Summary
Immediate Actions (This Week)
✅ Fix dangerous-triggers in smoke-detector (HIGH SEVERITY)
workflow_runwithworkflow_callpattern/tmp/gh-aw/cache-memory/fix-templates/zizmor-dangerous-triggers.md✅ Review template-injection in MCP setup steps (9 occurrences)
/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.md✅ Add missing permissions to 3 workflows
Process Improvements (This Month)
🔄 Add zizmor to CI/CD pipeline
🔄 Create workflow templates with secure defaults
🔄 Review wildcard branch patterns in workflow triggers
workflow_runtrigger🔄 Address compilation warnings
Testing & Verification
After applying fixes:
✅ Re-compile workflows with static analysis:
✅ Verify zizmor no longer reports dangerous-triggers:
✅ Test workflow with safe inputs to ensure functionality preserved
✅ Update this report with "FIXED" status for resolved issues
Resources & References
Fix Templates (in cache memory)
/tmp/gh-aw/cache-memory/fix-templates/zizmor-dangerous-triggers.md/tmp/gh-aw/cache-memory/fix-templates/zizmor-template-injection.mdDocumentation
Scan Data
/tmp/gh-aw/cache-memory/security-scans/2025-11-04-full-scan.json/tmp/gh-aw/cache-memory/security-scans/index.jsonNext Steps
Scan Information:
🤖 This report was automatically generated by the Static Analysis Report Agent using the gh-aw MCP server.
Beta Was this translation helpful? Give feedback.
All reactions