CVE-2026-44723
Received Received - Intake
Vulnerable Command Injection in Vowpal Wabbit Workflow

Publication date: 2026-05-26

Last updated on: 2026-05-26

Assigner: GitHub, Inc.

Description
Vowpal Wabbit is a machine learning system. The workflow .github/workflows/python_checks.yml embeds ${{ github.event.pull_request.title }} directly inside double-quoted bash strings in four separate steps across four jobs, each passing it as a CLI argument to the Python test script run_tests_model_gen_and_load.py. The shell interprets the expanded string before invoking Python, allowing an attacker to break out of the quotes and execute arbitrary commands on the runner. The pull_request trigger fires on PRs targeting any branch (branches: ['*']), with no additional access gate. This vulnerability is fixed by the 998e390e80a7e8192d7849b7784bc113dbd190ad commit.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-05-26
Last Modified
2026-05-26
Generated
2026-05-26
AI Q&A
2026-05-26
EPSS Evaluated
N/A
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
vowpalwabbit vowpal_wabbit to 998e390e80a7e8192d7849b7784bc113dbd190ad (inc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-78 The product constructs all or part of an OS command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended OS command when it is sent to a downstream component.
CWE-1336 The product uses a template engine to insert or process externally-influenced input, but it does not neutralize or incorrectly neutralizes special elements or syntax that can be interpreted as template expressions or other code directives when processed by the engine.
Attack-Flow Graph
AI Powered Q&A
How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

The vulnerability allows arbitrary command execution on the CI runner with root privileges by exploiting unsanitized pull request titles in GitHub Actions workflows.

This could potentially lead to unauthorized access to sensitive data or systems if exploited, which may impact compliance with standards like GDPR or HIPAA that require protection of personal or sensitive information.

However, the vulnerability specifically affects the CI environment and does not directly expose repository secrets for forked pull requests, somewhat limiting the scope of data exposure.

Organizations using this system should consider the risk of arbitrary code execution in their CI pipelines as a factor in their overall security posture and compliance efforts.


Can you explain this vulnerability to me?

CVE-2026-44723 is a shell injection vulnerability in the GitHub Actions workflow file of the Vowpal Wabbit repository. The vulnerability occurs because the pull request title is directly embedded into bash command strings without proper sanitization. This allows an attacker to craft a malicious PR title that breaks out of quoted strings and executes arbitrary commands on the CI runner.

The workflow triggers on pull requests targeting any branch, with no additional access restrictions, so any GitHub user opening a PR can exploit this. The malicious PR title is passed as a CLI argument to a Python test script, but since the shell interprets the expanded string first, arbitrary shell commands can be executed with root privileges on the runner.

The root cause is improper handling of untrusted input in shell commands, treating data as code. The vulnerability affects four separate jobs in the workflow, each passing the PR title unsafely. The issue was fixed by assigning the PR title to an environment variable and referencing it safely, preventing command injection.


How can this vulnerability impact me? :

This vulnerability allows an attacker to execute arbitrary shell commands on the CI runner with root privileges by crafting a malicious pull request title.

  • Arbitrary command execution on the CI runner.
  • Potential access to the GITHUB_TOKEN, which could be used to interact with the repository or GitHub API.
  • Outbound network access from the runner, which could be used to exfiltrate data or perform further attacks.

However, repository secrets remain protected for pull requests from forks, limiting some impact.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by examining the GitHub Actions workflow file `.github/workflows/python_checks.yml` for unsafe usage of the pull request title variable `${{ github.event.pull_request.title }}` directly embedded inside double-quoted bash strings without sanitization.

Specifically, look for steps in the workflow that pass the PR title as a CLI argument to the Python script `run_tests_model_gen_and_load.py` without proper escaping or environment variable usage.

To detect exploitation attempts on your CI runner, you can check the logs for unusual shell commands or command injection patterns, such as unexpected shell operators (e.g., `" && echo "PWNED=$(id)`) appearing in the command execution.

Suggested commands to help detect the vulnerability or exploitation attempts include:

  • Review the workflow file for unsafe interpolation: `grep -n '\${{ github.event.pull_request.title }}' .github/workflows/python_checks.yml`
  • Search CI logs for suspicious command injection patterns: `grep -E '" && echo|\$\(id\)' /path/to/ci/logs/*`
  • Check recent commits for the fix commit `998e390e80a7e8192d7849b7784bc113dbd190ad` to verify if the vulnerability has been patched.

What immediate steps should I take to mitigate this vulnerability?

The immediate mitigation step is to update the GitHub Actions workflow file `.github/workflows/python_checks.yml` to the fixed version that binds the pull request title to an environment variable (e.g., `PR_TITLE`) and references it safely in bash commands.

This prevents the shell from interpreting the PR title as code, treating it instead as data, thereby eliminating the command injection risk.

Specifically, apply the changes introduced in commit `998e390e80a7e8192d7849b7784bc113dbd190ad` which modify four steps across four jobs to use the environment variable approach.

Additionally, consider restricting the branches on which the workflow runs or adding access controls to limit who can open pull requests triggering this workflow.

Finally, review CI runner logs for any signs of exploitation and rotate any potentially compromised credentials or tokens.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart