{"id":"CVE-2026-64653","kind":"vulnerability","aliases":["CVE-2026-64653","GHSA-4fjg-2h4q-fwg3","GO-2026-6765"],"related":[],"title":"GitHub CLI allows path traversal through unescaped request URL components in github.com/cli/cli","description":"GitHub CLI (gh) is GitHub’s official command line tool. Prior to 2.97.0, some HTTP request URLs interpolate variable path components without percent encoding, allowing URL path metacharacters in attacker-controlled repository or resource values to make gh address a different API endpoint or resource than the user intended. This issue is fixed in version 2.97.0.","summary":"GitHub CLI (gh) builds some API request URLs by inserting repository or resource names without percent-encoding them. An attacker who controls those values can redirect gh to a different GitHub API endpoint or resource than the user meant to reach.","severity":"medium","cvss":5.1,"epss":0.00511,"exploited":false,"exploited_at":null,"products":[{"name":"github.com/cli/cli","fixed":[],"affected":"all versions","ecosystem":"go"},{"name":"github.com/cli/cli/v2","fixed":["2.97.0"],"affected":"< 2.97.0","ecosystem":"go"}],"ecosystems":["go"],"tags":["ci-scripts","github-cli","go","package"],"not_affected_if":["no-untrusted-repo-or-resource-input","version-2.97.0-or-later"],"how_to_check":"Run gh --version and check whether the version is earlier than 2.97.0.\nFor Go projects, run go list -m github.com/cli/cli/v2 and check for a version below v2.97.0.","fix":"Upgrade GitHub CLI to 2.97.0 or later.\nRebuild any Go binaries that embed github.com/cli/cli/v2 against 2.97.0 or later.","status":"open","published_at":"2026-08-06T22:18:13+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T21:49:05+00:00","updated_at":"2026-10-23T21:49:05+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-23T21:49:05Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade GitHub CLI to 2.97.0 or later.\nRebuild any Go binaries that embed github.com/cli/cli/v2 against 2.97.0 or later.","reach":"internet","impact":"medium","summary":"GitHub CLI (gh) builds some API request URLs by inserting repository or resource names without percent-encoding them. An attacker who controls those values can redirect gh to a different GitHub API endpoint or resource than the user meant to reach.","category":"package","who_cares":["github-cli","go","ci-scripts"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Commands act on an unintended GitHub API endpoint or resource chosen by the attacker.","analyst_note":"","how_to_check":"Run gh --version and check whether the version is earlier than 2.97.0.\nFor Go projects, run go list -m github.com/cli/cli/v2 and check for a version below v2.97.0.\nunknown","needs_analyst":false,"not_affected_if":["version-2.97.0-or-later","no-untrusted-repo-or-resource-input"],"user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000507,"input_tokens":2959,"output_tokens":422,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':16A,24A,27A '-64653':17A,28A '-6765':25A '/cli/cli':14A,31A '/cli/cli/v2':34A '2.97.0':97C,141C '2h4q':21A '4fjg':20A 'address':124C 'allow':3A,109C 'api':48B,75B,127C 'attack':63B,115C 'attacker-control':114C 'build':46B 'ci':36B 'ci-script':35B 'cli':2A,40B,44B,86C 'command':92C 'compon':10A,105C 'control':65B,116C 'cve':15A,26A 'differ':73B,126C 'encod':60B,108C 'endpoint':76B,128C 'fix':138C 'fwg3':22A 'gh':45B,70B,87C,123C 'ghsa':19A 'ghsa-4fjg-2h4q-fwg3':18A 'github':1A,39B,43B,74B,85C,89C 'github-c':38B 'github.com':13A,30A,33A 'github.com/cli/cli':12A,29A 'github.com/cli/cli/v2':32A 'go':23A,41B 'http':99C 'insert':52B 'intend':134C 'interpol':102C 'issu':136C 'line':93C 'make':122C 'meant':82B 'metacharact':112C 'name':56B 'offici':91C 'packag':42B 'path':4A,104C,111C 'percent':59B,107C 'percent-encod':58B 'prior':95C 'reach':84B 'redirect':69B 'repositori':53B,117C 'request':8A,49B,100C 'resourc':55B,78B,119C,130C 'script':37B 'tool':94C 'travers':5A 'unescap':7A 'url':9A,50B,101C,110C 'user':81B,133C 'valu':67B,120C 'variabl':103C 'version':140C 'without':57B,106C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-08-06T22:18:13+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6765","url":"https://pkg.go.dev/vuln/GO-2026-6765","severity":null,"published_at":"2026-10-19T21:08:35+00:00","modified_at":"2026-10-19T21:08:35+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-64653","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-64653","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-64653","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-64653","severity":null,"published_at":"2026-08-06T22:18:13+00:00","modified_at":"2026-09-10T20:36:14+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}