CVE-2026-87910
Status: Awaiting AnalysisMedium (5.7)—
When tarfile extracts a link on a system that doesn't support links, it falls back to extracting a member from the archive. In this case, the filter function is run twice: once for the extracted member, and once with name set to the location of the link. For one of the calls, the return value was ignored. Instead, the member should be skipped if either call returns None.
CVSS
- Version: 4.0
- Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:H/VA:N/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
- Base score: 5.7
Exploitation probability (EPSS)
- Probability of exploitation in the next 30 days: 0.54%
- Percentile among all scored CVEs: 43
- Score date: 9/30/2026
EPSS (Exploit Prediction Scoring System, FIRST) estimates how likely a vulnerability is to be exploited in the wild within 30 days. It complements CVSS (impact) and CISA KEV (confirmed exploitation).
Affected technologies (1)
⚠ AI-inferred from the description — NVD hasn't analyzed this CVE yet, these aren't verified CPEs.
CWEs
- CWE-22, CWE-59
References
- https://github.com/python/cpython/commit/2eb0c2f1dc71847731b6ab30aebefd058d482a7f
- https://github.com/python/cpython/commit/764fd0af8d9e19d3684a58d2e58bf770f0605036
- https://github.com/python/cpython/commit/9c17bace90f88dfba6d0e2fe23c8e7ae35f83955
- https://github.com/python/cpython/commit/c1f106d240c4ffcb3608ed0a20e8aba6c865f6d3
- https://github.com/python/cpython/commit/d9565e54b1fc6d63c5be9afd58114499128fa57b
- https://github.com/python/cpython/commit/fb2f0bbc3b35264f09cc2cb2934b7987527a6bc2
- https://github.com/python/cpython/issues/157265
- https://github.com/python/cpython/pull/157266
- https://mail.python.org/archives/list/security-announce@python.org/thread/57TBTLL2W6APMZR3A25B2YV7GL3EPTDJ/
- http://www.openwall.com/lists/oss-security/2026/09/11/8
Raw JSON (NVD)
Show
{
"id": "CVE-2026-87910",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-87910",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"version": "2.0.3",
"timestamp": "2026-09-11T19:23:39.973519Z"
}
}
],
"cvssMetricV40": [
{
"type": "Secondary",
"source": "cna@python.org",
"cvssData": {
"Safety": "NOT_DEFINED",
"version": "4.0",
"Recovery": "NOT_DEFINED",
"baseScore": 5.7,
"Automatable": "NOT_DEFINED",
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"valueDensity": "NOT_DEFINED",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:N/VI:H/VA:N/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",
"exploitMaturity": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED",
"userInteraction": "ACTIVE",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "LOW",
"subIntegrityImpact": "NONE",
"vulnIntegrityImpact": "HIGH",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"subAvailabilityImpact": "NONE",
"vulnAvailabilityImpact": "NONE",
"availabilityRequirement": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"subConfidentialityImpact": "NONE",
"vulnConfidentialityImpact": "NONE",
"confidentialityRequirement": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED"
}
}
]
},
"affected": [
{
"source": "cna@python.org",
"affectedData": [
{
"repo": "https://github.com/python/cpython",
"vendor": "Python Software Foundation",
"product": "CPython",
"versions": [
{
"status": "affected",
"version": "0",
"lessThan": "3.12.15",
"versionType": "python"
},
{
"status": "affected",
"version": "3.13.0",
"lessThan": "3.13.16",
"versionType": "python"
},
{
"status": "affected",
"version": "3.14.0a1",
"lessThan": "3.15.0",
"versionType": "python"
}
],
"defaultStatus": "unaffected"
}
]
}
],
"published": "2026-09-11T18:16:59.800",
"references": [
{
"url": "https://github.com/python/cpython/commit/2eb0c2f1dc71847731b6ab30aebefd058d482a7f",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/commit/764fd0af8d9e19d3684a58d2e58bf770f0605036",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/commit/9c17bace90f88dfba6d0e2fe23c8e7ae35f83955",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/commit/c1f106d240c4ffcb3608ed0a20e8aba6c865f6d3",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/commit/d9565e54b1fc6d63c5be9afd58114499128fa57b",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/commit/fb2f0bbc3b35264f09cc2cb2934b7987527a6bc2",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/issues/157265",
"source": "cna@python.org"
},
{
"url": "https://github.com/python/cpython/pull/157266",
"source": "cna@python.org"
},
{
"url": "https://mail.python.org/archives/list/security-announce@python.org/thread/57TBTLL2W6APMZR3A25B2YV7GL3EPTDJ/",
"source": "cna@python.org"
},
{
"url": "http://www.openwall.com/lists/oss-security/2026/09/11/8",
"source": "af854a3a-2127-422b-91ae-364da2661108"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "cna@python.org",
"description": [
{
"lang": "en",
"value": "CWE-22"
},
{
"lang": "en",
"value": "CWE-59"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "When tarfile extracts a link on a system that doesn't support links, it falls back to extracting a member from the archive. In this case, the filter function is run twice: once for the extracted member, and once with name set to the location of the link. For one of the calls, the return value was ignored. Instead, the member should be skipped if either call returns None."
}
],
"lastModified": "2026-10-01T01:16:36.870",
"sourceIdentifier": "cna@python.org"
}