🔍 Static Analysis Report - November 15, 2025 #4035
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 15, 2025
Executive Summary
Daily static analysis scan completed on 73 agentic workflow files using zizmor (security scanner) and actionlint (linting tool). The scan identified 4 total issues across 3 workflows, including 2 High severity security vulnerabilities and 1 syntax error requiring immediate attention.
Key Findings:
workflow_runtriggers (High severity)Tools Status:
Full Analysis Details
Findings by Tool and Severity
Zizmor Security Findings
Actionlint Linting Findings
Statistics Summary
Detailed Findings by Issue Type
1. Dangerous Triggers (workflow_run) - HIGH SEVERITY⚠️
Issue:
dangerous-triggersSeverity: High (Medium confidence)
Count: 2 occurrences
Affected Workflows:
ci-doctor,dev-hawkReference: (redacted)#dangerous-triggers
Description:
The
workflow_runtrigger is flagged as "almost always used insecurely" because it runs in the context of the default branch (typicallymain), but receives information about the triggering workflow from a potentially untrusted branch.Security Impact:
Affected Locations:
ci-doctor.lock.yml (lines 48-56):
dev-hawk.lock.yml (lines 38-45):
2. Template Injection - LOW SEVERITY
Issue:
template-injectionSeverity: Low (High confidence)
Count: 1 occurrence
Affected Workflow:
mcp-inspectorReference: (redacted)#template-injection
Description:
Code injection via template expansion detected. The workflow uses
${{ env.SENTRY_HOST }}in a bash script context which could potentially be exploited if the environment variable contains attacker-controlled data.Affected Location:
mcp-inspector.lock.yml (line 1381):
The issue occurs in the "Setup MCPs" step where
${{ env.SENTRY_HOST }}is expanded directly into a bash heredoc containing MCP server configuration. While this is likely low risk sinceSENTRY_HOSTis defined in the workflow itself, it's flagged as a potential code injection vector.Risk Level: Low - The environment variable appears to be controlled by the workflow definition, not external input.
3. YAML Syntax Error - ERROR
Issue:
syntax-checkSeverity: Error
Count: 1 occurrence
Affected Workflow:
typistDescription:
The workflow file contains control characters that prevent it from being parsed as valid YAML.
Error Message:
Impact: This workflow cannot be executed until the syntax error is fixed.
Fix Recommendations
Priority 1: Fix High Severity Issues (dangerous-triggers)
The
dangerous-triggersfinding requires immediate attention. Three remediation options:Option 1: Use Artifact-Based Approach (Recommended)
github.event.workflow_run.*data directly in bash commandsOption 2: Eliminate workflow_run Trigger
scheduletrigger for periodic checksworkflow_dispatchfor manual triggersrepository_dispatchfor external triggers with validationOption 3: Add Strict Validation
github.event.workflow_run.*Detailed fix template with code examples:
/tmp/gh-aw/cache-memory/fix-templates/zizmor-dangerous-triggers.mdPriority 2: Fix Syntax Error (typist)
The
typistworkflow has a YAML syntax error due to control characters. Actions needed:.github/workflows/typist.lock.yml.mdfilePriority 3: Review Template Injection (mcp-inspector)
While low severity, the template injection finding should be reviewed:
env.SENTRY_HOSTis only set from trusted sourcesFix Suggestion: Dangerous Triggers (workflow_run)
Below is a ready-to-use prompt for a Copilot agent to fix the high-severity dangerous-triggers issue:
Copilot Agent Fix Prompt
After (Option 1 - Safer with validation):
After (Option 2 - Eliminate workflow_run, use schedule):
Action Items:
Please apply the appropriate fix to these workflows:
.github/workflows/ci-doctor.md.github/workflows/dev-hawk.mdChoose the fix option that best fits each workflow's purpose. Document your choice and reasoning in the commit message.
Beta Was this translation helpful? Give feedback.
All reactions