{"id":"CVE-2026-68939","aliases":["DEBIAN-CVE-2026-68939","EUVD-2026-60955","GHSA-g478-f579-9vp9","UBUNTU-CVE-2026-68939","openSUSE-SU-2026:11613-1","openSUSE-SU-2026:21664-1"],"status":"published","title":"Pyenv: Glob/wildcard metacharacters bypass is_version_safe(), causing silent version/interpreter substitution via unquoted expansion (CVE-2022-35861 residual)","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","severity":{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00173,"percentile":0.06808,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-155","CWE-78","CWE-88"],"published":"2026-08-18T15:11:10Z","modified":"2026-10-28T02:30:57Z","fixes":[{"ecosystem":"openSUSE:Tumbleweed","package":"pyenv","fixed_in":["2.8.4-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 16.0","package":"pyenv","fixed_in":["2.4.14-bp160.2.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:13","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5.4-1","2.5.5-1","2.5.5-2","2.6.27-1","2.6.28-1","2.6.8-1","2.7.1-1"]},{"source":"osv","ecosystem":"Debian:14","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5.4-1","2.5.5-1","2.5.5-2","2.6.27-1","2.6.28-1","2.6.8-1","2.7.1-1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.6.8-1","2.6.28-1","2.7.1-1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["2.5.4-1build1","2.6.8-1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.8.4-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 16.0","package":"pyenv","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"2.4.14-bp160.2.1"}]}]}],"products":[{"vendor":"pyenv","product":"pyenv"}],"references":[{"url":"https://github.com/pyenv/pyenv/security/advisories/GHSA-g478-f579-9vp9","tags":["x_refsource_CONFIRM","exploit","advisory"]},{"url":"https://github.com/pyenv/pyenv/commit/95df7dbc7b34595b47c9b922de198547effda819","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/pyenv/pyenv/releases/tag/v2.8.0","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/68xxx/CVE-2026-68939.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-68939","tags":["advisory"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-68939","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-68939","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-68939","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-68939","tags":["web"]},{"url":"https://bugzilla.suse.com/1275661","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-68939","title":"Pyenv: Glob/wildcard metacharacters bypass is_version_safe(), causing silent version/interpreter substitution via unquoted expansion (CVE-2022-35861 residual)","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:11:10.331Z","modified":"2026-08-18T18:46:12.465Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","level":"low","assessor":"cna"}],"cwes":["CWE-78","CWE-88","CWE-155"],"updated_at":"2026-11-02T13:45:59.110885Z"}],"euvd":[{"id":"EUVD-2026-60955","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:11:10Z","modified":"2026-08-18T18:46:12Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","level":"low"}],"updated_at":"2026-11-02T18:01:46.060074Z"}],"nvd":[{"id":"CVE-2026-68939","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:17:00.79Z","modified":"2026-09-18T20:05:53.723Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/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","level":"low","assessor":"secondary"}],"cwes":["CWE-78","CWE-88","CWE-155"],"updated_at":"2026-11-02T14:12:38.976695Z"}],"osv":[{"id":"CVE-2026-68939","title":"Pyenv: Glob/wildcard metacharacters bypass is_version_safe(), causing silent version/interpreter substitution via unquoted expansion (CVE-2022-35861 residual)","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:11:10.331Z","modified":"2026-10-28T02:30:57.498179767Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","level":"low"}],"cwes":["CWE-155","CWE-78","CWE-88"],"updated_at":"2026-11-02T15:45:15.164658Z"},{"id":"DEBIAN-CVE-2026-68939","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:17:00.79Z","modified":"2026-10-01T03:02:56.637495303Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/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","level":"low"}],"updated_at":"2026-11-02T15:46:02.094661Z"},{"id":"UBUNTU-CVE-2026-68939","description":"Pyenv provides simple Python version management. Prior to 2.8.0, is_version_safe() in libexec/pyenv-version-file-read accepts shell glob metacharacters in .python-version values, and unquoted PYENV_VERSION expansion in libexec/pyenv-version-name, libexec/pyenv-which, libexec/pyenv-prefix, libexec/pyenv-local, libexec/pyenv-global, libexec/pyenv-version, and libexec/pyenv-versions pathname-expands the value against the current directory, allowing a matching attacker-controlled file to silently select a different installed interpreter or version. This issue is fixed in version 2.8.0.","status":"published","published":"2026-08-18T15:17:00Z","modified":"2026-10-17T12:59:23.794334425Z","cvss":[{"version":"4.0","score":2,"vector":"CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N","level":"low"}],"updated_at":"2026-11-02T16:56:57.159276Z"},{"id":"openSUSE-SU-2026:11613-1","title":"pyenv-2.8.4-1.1 on GA media","description":"These are all security issues fixed in the pyenv-2.8.4-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-08-26T00:00:00Z","modified":"2026-08-27T11:01:51.61314265Z","updated_at":"2026-11-02T16:58:39.516824Z"},{"id":"openSUSE-SU-2026:21664-1","title":"Security update for pyenv","description":"This update for pyenv fixes the following issues:\n\nChanges in pyenv:\n\n- CVE-2026-68939: a matching attacker-controlled file can silently\n  select a different installed interpreter or version (bsc#1275661)\n","status":"published","published":"2026-08-26T15:47:04Z","modified":"2026-08-27T17:30:03.68845716Z","updated_at":"2026-11-02T16:58:41.885092Z"}]}}
