CVE-2026-105767: Chainguard Academy (edu) integrate-platform-docs composite action interpolates inputs into shell commands
Improper Neutralization of Special Elements used in an OS Command in the integrate-platform-docs composite GitHub Action of Chainguard Academy (edu) from commit 7375a80caabcc31c33ec90f29687ed78c13d16ff before commit fb0efb2537d326ab18c07d620875b8ed2a4b39f3 allows an actor who controls the projectid or storagebucket inputs to execute arbitrary shell commands on the GitHub Actions runner, because the inputs are interpolated directly into Bash gcloud storage cp commands in several steps via ${{ inputs. }} expressions. The only in-repository caller passed repository secrets and ran only on trusted triggers, so no untrusted input was known to reach the vulnerable steps.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Chainguard Academy (edu) integrate-platform-docs composite GitHub Actionto a version that resolves this vulnerability.Patch fb0efb2537d326ab18c07d620875b8ed2a4b39f3
Event History
Frequently Asked Questions
Who is exposed to this issue?
Repositories or workflows that invoke the affected composite action and allow an untrusted party to control its project_id or storage_bucket inputs are exposed. The only identified in-repository caller used trusted triggers and passed repository secrets, so no untrusted input was known to reach the vulnerable commands there.
What does an attacker need to exploit it?
An attacker must be able to supply a crafted value for project_id or storage_bucket to the action. Those values are directly interpolated into Bash gcloud storage cp commands, allowing shell-command execution on the GitHub Actions runner.
Which versions are affected?
The issue affects the action from commit 7375a80caabcc31c33ec90f29687ed78c13d16ff up to, but not including, commit fb0efb2537d326ab18c07d620875b8ed2a4b39f3.
What can be done before updating?
Ensure project_id and storage_bucket are supplied only from trusted, fixed values and cannot be influenced by pull request data, workflow inputs, branch names, or other untrusted sources. Do not run workflows invoking the action on untrusted triggers when those inputs could be attacker-controlled.