GitHub CLI allows path traversal through unescaped request URL componentsGHSA-4fjg-2h4q-fwg3
Fix: cli/cli@0c2eea6GHSA-4fjg-2h4q-fwg3 is a Path Traversal vulnerability in github.com/cli/cli/v2. A fix is available for github.com/cli/cli/v2 — see the affected versions and patch details below.
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for GHSA-4fjg-2h4q-fwg3.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
Real-World Exposure
github.com/cli/cli/v2Real-time download stats are indexed for npm and PyPI packages. This vulnerability affects Go packages — download data is not available via public APIs for these ecosystems.
Description
Summary
A path traversal vulnerability has been identified in the GitHub CLI where some HTTP request URLs, REST API calls in particular, were built without properly escaping their variable path components. A value containing URL path metacharacters can alter the request path and cause gh to address a different resource than intended.
Details
Not all request URLs in the codebase were built with proper escaping of their variable path components. When a component is interpolated into the path without percent encoding, and that component contains URL path metacharacters, it breaks out of its intended segment and changes the effective request path.
In 2.97.0, request URLs are constructed in a safe manner, so a variable component can no longer escape its intended segment.
Impact
An attacker who can control a value that flows into a request path can cause gh to send the request to a different API endpoint than intended. This can lead the CLI to read or act on a resource other than the one the user meant to target.
Remediation and Mitigation
- Upgrade
ghto2.97.0. - Be cautious when running
ghagainst untrusted repositories or inputs whose names you do not control.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 🐹Go | github.com/cli/cli/v2 | all versions | 2.97.0go get github.com/cli/cli/v2@v2.97.0 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for github.com/cli/cli/v2, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update github.com/cli/cli/v2 to 2.97.0 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-4fjg-2h4q-fwg3 is resolved across your whole dependency graph.
Workarounds
Resolve every user-supplied path to its canonical form and reject anything that escapes the intended directory, and run the component under an account that has no read or write access outside the directory it legitimately serves.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
A flaw was found in GitHub CLI (gh). The tool fails to properly percent-encode variable path components in HTTP request URLs, allowing URL path metacharacters in attacker-controlled repository or resource values to redirect the CLI to a different API endpoint than intended. This could result in unintended actions or…
- Upgrade `gh` to version 2.97.0 or later. - Be cautious when running `gh` against untrusted repositories or inputs whose names you do not control.Source: Red Hat security advisory for GHSA-4fjg-2h4q-fwg3 (CC BY 4.0)
Frequently Asked Questions
Is GHSA-4fjg-2h4q-fwg3 in your dependencies?
Find it across Go, including transitive dependencies.