{"schemaVersion":3,"id":"CVE-2026-22702","aliases":["SUSE-SU-2026:0233-1","SUSE-SU-2026:20129-1","GHSA-597g-3phw-6986","BIT-virtualenv-2026-22702","PYSEC-2026-2009","UBUNTU-CVE-2026-22702","DEBIAN-CVE-2026-22702","CGA-2wv4-rq96-vf4q","CGA-v645-67w5-g4vh","openSUSE-SU-2026:20086-1","CGA-cc8h-fw79-4vq7","CGA-vwf5-jvhc-hcfm"],"status":"published","duplicateOf":null,"title":null,"description":"virtualenv is a tool for creating isolated virtual python environments. Prior to version 20.36.1, TOCTOU (Time-of-Check-Time-of-Use) vulnerabilities in virtualenv allow local attackers to perform symlink-based attacks on directory creation operations. An attacker with local access can exploit a race condition between directory existence checks and creation to redirect virtualenv's app_data and lock file operations to attacker-controlled locations. This issue has been patched in version 20.36.1.","dates":{"published":"2026-01-10T06:05:53.281Z","modified":"2026-01-12T16:44:12.734Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":4.5,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Pypi","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":2.6,"impact":5.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Ubuntu","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":2.6,"impact":5.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Debian","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":2.6,"impact":5.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Wolfi","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":2.6,"impact":5.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"OSV · Chainguard","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":2.6,"impact":5.7,"computed":true},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":4.5,"severity":"medium","vector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:L","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.001,"percentile":0.00834,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":0.0020000000000000052,"baselineDate":"2026-09-19T00:00:00.000Z","baselineScore":0.00098},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.001,"percentile":0.00834}],"last30":[{"date":"2026-09-19T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00098,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.001,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.001,"percentile":0.00834}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-59","name":"Improper Link Resolution Before File Access ('Link Following')","description":"The product attempts to access a file based on the filename, but it does not properly prevent that filename from identifying a link or shortcut that resolves to an unintended resource.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/59.html"},{"id":"CWE-362","name":"Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition')","description":"The product contains a concurrent code sequence that requires temporary, exclusive access to a shared resource, but a timing window exists in which the shared resource can be modified by another code sequence operating concurrently.","type":"weakness","status":"Draft","abstraction":"Class","likelihoodOfExploit":"Medium","url":"https://cwe.mitre.org/data/definitions/362.html"}],"affected":[{"vendor":"chainguard","product":"py3-cassandra-medusa","name":"py3-cassandra-medusa","label":"py3-cassandra-medusa","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/py3-cassandra-medusa","purlType":"apk","versions":[{"text":"< 0.27.0-r2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.27.0-r2","eol":null,"hubHref":null},{"vendor":"chainguard","product":"request-1276","name":"request-1276","label":"request-1276","ecosystem":"Chainguard","cpePart":null,"purl":"pkg:apk/chainguard/request-1276","purlType":"apk","versions":[{"text":"< 0.27.0-r4","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.27.0-r4","eol":null,"hubHref":null},{"vendor":"wolfi","product":"py3-cassandra-medusa","name":"py3-cassandra-medusa","label":"py3-cassandra-medusa","ecosystem":"Wolfi","cpePart":null,"purl":"pkg:apk/wolfi/py3-cassandra-medusa","purlType":"apk","versions":[{"text":"< 0.27.0-r2","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 0.27.0-r2","eol":null,"hubHref":null},{"vendor":"debian","product":"python-virtualenv","name":"python-virtualenv","label":"python-virtualenv","ecosystem":"Debian","cpePart":null,"purl":"pkg:deb/debian/python-virtualenv","purlType":"deb","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null},{"text":"< 20.31.2+ds-1+deb13u1","noFixRecorded":false,"fixedIn":null},{"text":"< 20.36.1+ds-1","noFixRecorded":false,"fixedIn":null}],"versionsText":"All versions (No fix recorded) | < 20.31.2+ds-1+deb13u1 | < 20.36.1+ds-1","eol":null,"hubHref":null},{"vendor":"ubuntu","product":"python-virtualenv","name":"python-virtualenv","label":"python-virtualenv","ecosystem":"Ubuntu","cpePart":null,"purl":"pkg:deb/ubuntu/python-virtualenv","purlType":"deb","versions":[{"text":"All versions","noFixRecorded":true,"fixedIn":null}],"versionsText":"All versions (No fix recorded)","eol":null,"hubHref":null},{"vendor":"pypa","product":"virtualenv","name":"virtualenv","label":"virtualenv","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 20.36.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.36.1","eol":null,"hubHref":"/vendor/pypa/virtualenv"},{"vendor":"PyPI","product":"virtualenv","name":"virtualenv","label":"virtualenv","ecosystem":"PyPI","cpePart":null,"purl":"pkg:pypi/virtualenv","purlType":"pypi","versions":[{"text":"< 20.36.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.36.1","eol":null,"hubHref":null},{"vendor":"opensuse","product":"python-virtualenv&distro=openSUSE Leap 15.6","name":"python-virtualenv","label":"python-virtualenv&distro=openSUSE Leap 15.6","ecosystem":"openSUSE","cpePart":null,"purl":"pkg:rpm/opensuse/python-virtualenv&distro=openSUSE Leap 15.6","purlType":"rpm","versions":[{"text":"< 20.22.0-150400.9.9.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.22.0-150400.9.9.1","eol":null,"hubHref":null},{"vendor":"opensuse","product":"python-virtualenv&distro=openSUSE Leap 16.0","name":"python-virtualenv","label":"python-virtualenv&distro=openSUSE Leap 16.0","ecosystem":"openSUSE","cpePart":null,"purl":"pkg:rpm/opensuse/python-virtualenv&distro=openSUSE Leap 16.0","purlType":"rpm","versions":[{"text":"< 20.29.3-160000.3.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.29.3-160000.3.1","eol":null,"hubHref":null},{"vendor":"suse","product":"python-virtualenv&distro=SUSE Linux Enterprise Module for Python 3 15 SP7","name":"python-virtualenv","label":"python-virtualenv&distro=SUSE Linux Enterprise Module for Python 3 15 SP7","ecosystem":"SUSE Linux Enterprise","cpePart":null,"purl":"pkg:rpm/suse/python-virtualenv&distro=SUSE Linux Enterprise Module for Python 3 15 SP7","purlType":"rpm","versions":[{"text":"< 20.22.0-150400.9.9.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.22.0-150400.9.9.1","eol":null,"hubHref":null},{"vendor":"suse","product":"python-virtualenv&distro=SUSE Linux Enterprise Server 16.0","name":"python-virtualenv","label":"python-virtualenv&distro=SUSE Linux Enterprise Server 16.0","ecosystem":"SUSE Linux Enterprise","cpePart":null,"purl":"pkg:rpm/suse/python-virtualenv&distro=SUSE Linux Enterprise Server 16.0","purlType":"rpm","versions":[{"text":"< 20.29.3-160000.3.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.29.3-160000.3.1","eol":null,"hubHref":null},{"vendor":"suse","product":"python-virtualenv&distro=SUSE Linux Enterprise Server for SAP applications 16.0","name":"python-virtualenv","label":"python-virtualenv&distro=SUSE Linux Enterprise Server for SAP applications 16.0","ecosystem":"SUSE Linux Enterprise","cpePart":null,"purl":"pkg:rpm/suse/python-virtualenv&distro=SUSE Linux Enterprise Server for SAP applications 16.0","purlType":"rpm","versions":[{"text":"< 20.29.3-160000.3.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.29.3-160000.3.1","eol":null,"hubHref":null},{"vendor":"virtualenv","product":"virtualenv","name":"virtualenv","label":"virtualenv","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 20.36.1","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 20.36.1","eol":null,"hubHref":"/vendor/virtualenv/virtualenv"}],"affectedCount":13,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/pypa/virtualenv/security/advisories/GHSA-597g-3phw-6986","label":"github.com/pypa/virtualenv/security/advisories/GHSA-597g-3phw-6986","hostname":"github.com","tags":["X Refsource CONFIRM","WEB","REPORT","Advisory","Mitigation","Patch","Vendor Advisory"]},{"url":"https://github.com/pypa/virtualenv/pull/3013","label":"github.com/pypa/virtualenv/pull/3013","hostname":"github.com","tags":["X Refsource MISC","WEB","REPORT","FIX","Issue Tracking","Patch"]},{"url":"https://github.com/pypa/virtualenv/commit/dec4cec5d16edaf83a00a658f32d1e032661cebc","label":"github.com/pypa/virtualenv/commit/dec4cec5d16edaf83a00a658f32d1e032661cebc","hostname":"github.com","tags":["X Refsource MISC","WEB","FIX","REPORT","Patch"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-20260233-1/","label":"www.suse.com/support/update/announcement/2026/suse-su-20260233-1/","hostname":"www.suse.com","tags":["Advisory"]},{"url":"https://bugzilla.suse.com/1256458","label":"bugzilla.suse.com/1256458","hostname":"bugzilla.suse.com","tags":["REPORT"]},{"url":"https://www.suse.com/security/cve/CVE-2026-22702","label":"www.suse.com/security/cve/CVE-2026-22702","hostname":"www.suse.com","tags":["WEB"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-202620129-1/","label":"www.suse.com/support/update/announcement/2026/suse-su-202620129-1/","hostname":"www.suse.com","tags":["Advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-22702","label":"nvd.nist.gov/vuln/detail/CVE-2026-22702","hostname":"nvd.nist.gov","tags":["Advisory","Oval"]},{"url":"https://github.com/pypa/virtualenv","label":"github.com/pypa/virtualenv","hostname":"github.com","tags":["PACKAGE"]},{"url":"https://pypi.org/project/virtualenv","label":"pypi.org/project/virtualenv","hostname":"pypi.org","tags":["PACKAGE"]},{"url":"https://github.com/advisories/GHSA-597g-3phw-6986","label":"github.com/advisories/GHSA-597g-3phw-6986","hostname":"github.com","tags":["Advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-22702","label":"ubuntu.com/security/CVE-2026-22702","hostname":"ubuntu.com","tags":["REPORT"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-22702","label":"www.cve.org/CVERecord?id=CVE-2026-22702","hostname":"www.cve.org","tags":["REPORT"]},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-22702","label":"security-tracker.debian.org/tracker/CVE-2026-22702","hostname":"security-tracker.debian.org","tags":["Advisory"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22702.json","label":"github.com/CVEProject/cvelistV5/tree/main/cves/2026/22xxx/CVE-2026-22702.json","hostname":"github.com","tags":["Advisory"]}],"lineage":{"upstream":[],"downstream":["OPENSUSE-SU-2026:10055-1"],"duplicates":[],"related":["CGA-RMCM-RHQV-8VXM","OPENSUSE-SU-2026:10055-1"]},"timeline":[{"kind":"published","date":"2026-01-10T06:05:53.281Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-01-12T16:44:12.734Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":18,"level":"low","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-20T12:14:25.741Z","stale":false,"partial":false}}