{"id":"CVE-2026-87910","state":"PUBLISHED","title":"tarfile hardlink fallback ignores custom extraction filter rejection via None","description":"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.","publishedAt":"2026-09-11T17:27:04.339Z","updatedAt":"2026-10-22T00:31:28.666Z","severity":{"score":5.7,"label":"Medium","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","source":"PSF"},"assigner":"PSF","products":["Python Software Foundation CPython"],"affected":[{"vendor":"Python Software Foundation","product":"CPython","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.10.22","versionType":"python"},{"version":"3.11.0","status":"affected","lessThan":"3.11.17","versionType":"python"},{"version":"3.12.0","status":"affected","lessThan":"3.12.15","versionType":"python"},{"version":"3.13.0","status":"affected","lessThan":"3.13.16","versionType":"python"},{"version":"3.14.0","status":"affected","lessThan":"3.14.9","versionType":"python"},{"version":"3.15.0a1","status":"affected","lessThan":"3.15.0rc3","versionType":"python"}],"modules":["tarfile"],"repo":"https://github.com/python/cpython"}],"references":["https://mail.python.org/archives/list/security-announce@python.org/thread/57TBTLL2W6APMZR3A25B2YV7GL3EPTDJ/","https://github.com/python/cpython/pull/157266","https://github.com/python/cpython/issues/157265","https://github.com/python/cpython/commit/d9565e54b1fc6d63c5be9afd58114499128fa57b","https://github.com/python/cpython/commit/fb2f0bbc3b35264f09cc2cb2934b7987527a6bc2","https://github.com/python/cpython/commit/9c17bace90f88dfba6d0e2fe23c8e7ae35f83955","https://github.com/python/cpython/commit/764fd0af8d9e19d3684a58d2e58bf770f0605036","https://github.com/python/cpython/commit/2eb0c2f1dc71847731b6ab30aebefd058d482a7f","https://github.com/python/cpython/commit/c1f106d240c4ffcb3608ed0a20e8aba6c865f6d3","https://github.com/python/cpython/commit/3105a3498aaf681ce128cf5baf83c2e5574267c5","https://github.com/python/cpython/commit/a4919937a4e1e69a0d178909c6f20557eca5d1d0","http://www.openwall.com/lists/oss-security/2026/09/11/8"],"weaknesses":["CWE-22","CWE-59"],"ingestedAt":"2026-10-29T20:13:26.108Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/87xxx/CVE-2026-87910.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-87910","state":"PUBLISHED","datePublished":"2026-09-11T17:27:04.339Z","dateUpdated":"2026-10-22T00:31:28.666Z","assignerShortName":"PSF","assignerOrgId":"28c92f92-d60d-412d-b760-e73465c3df22","dateReserved":"2026-09-09T15:11:08.270Z"},"containers":{"cna":{"title":"tarfile hardlink fallback ignores custom extraction filter rejection via None","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."}],"affected":[{"vendor":"Python Software Foundation","product":"CPython","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"3.10.22","versionType":"python"},{"version":"3.11.0","status":"affected","lessThan":"3.11.17","versionType":"python"},{"version":"3.12.0","status":"affected","lessThan":"3.12.15","versionType":"python"},{"version":"3.13.0","status":"affected","lessThan":"3.13.16","versionType":"python"},{"version":"3.14.0","status":"affected","lessThan":"3.14.9","versionType":"python"},{"version":"3.15.0a1","status":"affected","lessThan":"3.15.0rc3","versionType":"python"}],"modules":["tarfile"],"repo":"https://github.com/python/cpython"}],"references":[{"url":"https://mail.python.org/archives/list/security-announce@python.org/thread/57TBTLL2W6APMZR3A25B2YV7GL3EPTDJ/","tags":["vendor-advisory"]},{"url":"https://github.com/python/cpython/pull/157266","tags":["patch"]},{"url":"https://github.com/python/cpython/issues/157265","tags":["issue-tracking"]},{"url":"https://github.com/python/cpython/commit/d9565e54b1fc6d63c5be9afd58114499128fa57b","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/fb2f0bbc3b35264f09cc2cb2934b7987527a6bc2","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/9c17bace90f88dfba6d0e2fe23c8e7ae35f83955","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/764fd0af8d9e19d3684a58d2e58bf770f0605036","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/2eb0c2f1dc71847731b6ab30aebefd058d482a7f","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/c1f106d240c4ffcb3608ed0a20e8aba6c865f6d3","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/3105a3498aaf681ce128cf5baf83c2e5574267c5","tags":["patch"]},{"url":"https://github.com/python/cpython/commit/a4919937a4e1e69a0d178909c6f20557eca5d1d0","tags":["patch"]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"PRESENT","attackVector":"NETWORK","baseScore":5.7,"baseSeverity":"MEDIUM","exploitMaturity":"NOT_DEFINED","privilegesRequired":"LOW","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","userInteraction":"ACTIVE","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","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"HIGH","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}]}],"problemTypes":[{"descriptions":[{"cweId":"CWE-22","description":"CWE-22","lang":"en","type":"CWE"},{"cweId":"CWE-59","description":"CWE-59","lang":"en","type":"CWE"}]}],"providerMetadata":{"shortName":"PSF","orgId":"28c92f92-d60d-412d-b760-e73465c3df22","dateUpdated":"2026-10-22T00:31:28.666Z"},"credits":[{"lang":"en","type":"reporter","value":"William Woodruff (https://github.com/woodruffw)"},{"lang":"en","type":"finder","value":"Zanie Blue (https://github.com/zanieb)"},{"lang":"en","type":"coordinator","value":"Petr Viktorin (https://github.com/encukou)"},{"lang":"en","type":"remediation reviewer","value":"Stan Ulbrych (https://github.com/StanFromIreland)"}],"source":{"discovery":"UNKNOWN"},"x_generator":{"engine":"cvelib 1.8.0"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-09-11T19:23:39.973519Z","id":"CVE-2026-87910","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-09-11T19:23:49.726Z"}},{"title":"CVE Program Container","references":[{"url":"http://www.openwall.com/lists/oss-security/2026/09/11/8"}],"providerMetadata":{"shortName":"CVE","orgId":"af854a3a-2127-422b-91ae-364da2661108","dateUpdated":"2026-09-11T21:07:14.642Z"}}]}}}