Skip to content

Conversation

@owen-mc
Copy link
Contributor

@owen-mcowen-mc commented Dec 5, 2025

This has low precision but can catch serious issues. However, because of its low precision, it won't be included in any of our query suites. I'm not sure what to do about that.

The allowlist of actions whose outputs are not user-controlled was generated by copilot, using results from running this query on many repos using MRVA. I do not have the expertise to be sure that it is correct, so please check this. I am also interested in any other actions to add to the allowlist. Possibly we could allow users to add safe actions using data extensions, if there is demand.

@owen-mcowen-mc requested a review from a team as a code ownerDecember 5, 2025 16:52
CopilotAI review requested due to automatic review settings December 5, 2025 16:52
@github-actionsgithub-actionsbot added documentation Actions Analysis of GitHub Actions labels Dec 5, 2025
Copy link
Contributor

CopilotAI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a new low-precision code injection query for GitHub Actions that detects potential vulnerabilities when step outputs flow to code injection sinks. Additionally, it refactors the StepsExpression class to StepOutputExpression for better naming clarity.

  • Introduces actions/code-injection/low query to detect code injection via step outputs with an allowlist of known-safe actions
  • Renames StepsExpression to StepOutputExpression throughout the codebase with proper deprecation
  • Adds comprehensive documentation and examples for the new query

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
actions/ql/src/Security/CWE-094/CodeInjectionLow.qlNew query implementation for low-precision code injection detection from step outputs
actions/ql/src/Security/CWE-094/CodeInjectionLow.mdDocumentation explaining the vulnerability, recommendations, and usage examples
actions/ql/lib/codeql/actions/security/CodeInjectionQuery.qllAdds new data flow configuration, allowlist of safe actions, and lowSeverityCodeInjection predicate
actions/ql/lib/codeql/actions/Ast.qllDeprecates StepsExpression and introduces StepOutputExpression as replacement
actions/ql/lib/codeql/actions/security/UntrustedCheckoutQuery.qllUpdates references from StepsExpression to StepOutputExpression
actions/ql/lib/codeql/actions/dataflow/internal/DataFlowPrivate.qllUpdates references from StepsExpression to StepOutputExpression
actions/ql/lib/codeql/actions/dataflow/TaintSteps.qllUpdates references from StepsExpression to StepOutputExpression
actions/ql/test/query-tests/Security/CWE-094/CodeInjectionLow.qlrefTest reference file for the new query
actions/ql/test/query-tests/Security/CWE-094/CodeInjectionLow.expectedExpected test results for the new query
actions/ql/src/change-notes/2025-12-05-add-code-injection-low-query.mdChange note documenting the new query
actions/ql/lib/change-notes/2025-12-05-rename-steps-expression.mdChange note documenting the deprecation of StepsExpression

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@@ -0,0 +1 @@
Security/CWE-094/CodeInjectionLow.ql

Check warning

Code scanning / CodeQL

Query test without inline test expectations Warning test

Query test does not use inline test expectations.
@owen-mcowen-mcforce-pushed the actions/code-injection-step-outputs-as-sources branch from 8f37f9a to 87ad7c7CompareDecember 13, 2025 21:32
@owen-mc
Copy link
ContributorAuthor

@adityasharad Are you able to review this? CI was failing but rebasing has resolved it.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ActionsAnalysis of GitHub Actionsdocumentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@owen-mc