Skip to content

Actions: Improve actions/cache-poisoning/poisonable-step and actions/untrusted-checkout/critical path UI - #22243

Open
JarLob wants to merge 4 commits into
github:mainfrom
JarLob:improve/actions-untrusted-checkout-source-link
Open

Actions: Improve actions/cache-poisoning/poisonable-step and actions/untrusted-checkout/critical path UI#22243
JarLob wants to merge 4 commits into
github:mainfrom
JarLob:improve/actions-untrusted-checkout-source-link

Conversation

@JarLob

@JarLob JarLob commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

No description provided.

JarLob added 4 commits July 28, 2026 09:21
Start critical untrusted-checkout paths at the expression controlling the
checkout, and share the provenance helpers with the cache-poisoning query.
@JarLob
JarLob requested a review from a team as a code owner July 28, 2026 13:11
Copilot AI review requested due to automatic review settings July 28, 2026 13:11
@github-actions github-actions Bot added documentation Actions Analysis of GitHub Actions labels Jul 28, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Improves alert provenance for two GitHub Actions security queries by highlighting the expression controlling an untrusted checkout.

Changes:

  • Adds checkout-reference path edges and display labels.
  • Updates query paths, messages, tests, and expected results.
  • Adds a change note.
Show a summary per file
File Description
actions/ql/lib/codeql/actions/security/UntrustedCheckoutQuery.qll Adds checkout-reference helpers.
actions/ql/src/Security/CWE-829/UntrustedCheckoutCritical.ql Uses reference-based path origins.
actions/ql/src/Security/CWE-349/CachePoisoningViaPoisonableStep.ql Links alerts to untrusted inputs.
actions/ql/test/query-tests/Security/CWE-349/.github/workflows/cache_write_capable_workflow_dispatch.yml Adds a workflow fixture.
actions/ql/test/query-tests/Security/CWE-829/UntrustedCheckoutCritical.expected Updates expected paths and alerts.
actions/ql/test/query-tests/Security/CWE-349/CachePoisoningViaPoisonableStep.expected Updates expected paths and alerts.
actions/ql/test/query-tests/Security/CWE-349/CachePoisoningViaDirectCache.expected Records fixture-related path edges.
actions/ql/src/change-notes/2026-07-28-checkout-provenance.md Documents the UI improvement.

Review details

  • Files reviewed: 8/8 changed files
  • Comments generated: 0
  • Review effort level: Medium

)
)
or
exists(string variable | isRunCheckoutReference(checkout, result, variable))
or
checkout instanceof Run and
result = checkout and
not exists(Expression reference, string variable |
or
checkout instanceof Run and
result = checkout and
not exists(Expression reference, string variable |
path = source.(PRHeadCheckoutStep).getPath()
message = "due to privilege checkout of untrusted code from" and
path = source.(PRHeadCheckoutStep).getPath() and
untrustedInput = getCheckoutReference(source.(PRHeadCheckoutStep)) and
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Actions Analysis of GitHub Actions documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants