CVE-2025-54368 (GCVE-0-2025-54368)
Vulnerability from cvelistv5
Published
2025-08-08 00:00
Modified
2025-08-08 17:32
Severity ?
VLAI Severity ?
EPSS score ?
Summary
uv is a Python package and project manager written in Rust. In versions 0.8.5 and earlier, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive's central directory. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. An attacker could also contrive a "stacked" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target in both scenarios. This issue is fixed in version 0.8.6. To work around this issue, users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.
References
{ "containers": { "adp": [ { "metrics": [ { "other": { "content": { "id": "CVE-2025-54368", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "role": "CISA Coordinator", "timestamp": "2025-08-08T17:32:03.528701Z", "version": "2.0.3" }, "type": "ssvc" } } ], "providerMetadata": { "dateUpdated": "2025-08-08T17:32:18.259Z", "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP" }, "title": "CISA ADP Vulnrichment" } ], "cna": { "affected": [ { "product": "uv", "vendor": "astral-sh", "versions": [ { "status": "affected", "version": "\u003c 0.8.6" } ] } ], "descriptions": [ { "lang": "en", "value": "uv is a Python package and project manager written in Rust. In versions 0.8.5 and earlier, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive\u0027s central directory. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. An attacker could also contrive a \"stacked\" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target in both scenarios. This issue is fixed in version 0.8.6. To work around this issue, users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior." } ], "metrics": [ { "cvssV4_0": { "attackComplexity": "LOW", "attackRequirements": "NONE", "attackVector": "LOCAL", "baseScore": 6.8, "baseSeverity": "MEDIUM", "privilegesRequired": "NONE", "subAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "userInteraction": "PASSIVE", "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N", "version": "4.0", "vulnAvailabilityImpact": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "HIGH" } } ], "problemTypes": [ { "descriptions": [ { "cweId": "CWE-436", "description": "CWE-436: Interpretation Conflict", "lang": "en", "type": "CWE" } ] }, { "descriptions": [ { "cweId": "CWE-20", "description": "CWE-20: Improper Input Validation", "lang": "en", "type": "CWE" } ] } ], "providerMetadata": { "dateUpdated": "2025-08-08T00:00:39.001Z", "orgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "shortName": "GitHub_M" }, "references": [ { "name": "https://github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8", "tags": [ "x_refsource_CONFIRM" ], "url": "https://github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8" }, { "name": "https://github.com/astral-sh/uv/commit/7f1eaf48c193e045ca2c62c4581048765c55505f", "tags": [ "x_refsource_MISC" ], "url": "https://github.com/astral-sh/uv/commit/7f1eaf48c193e045ca2c62c4581048765c55505f" }, { "name": "https://astral.sh/blog/uv-security-advisory-cve-2025-54368", "tags": [ "x_refsource_MISC" ], "url": "https://astral.sh/blog/uv-security-advisory-cve-2025-54368" }, { "name": "https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks", "tags": [ "x_refsource_MISC" ], "url": "https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks" } ], "source": { "advisory": "GHSA-8qf3-x8v5-2pj8", "discovery": "UNKNOWN" }, "title": "uv is vulnerable to ZIP payload obfuscation through parsing differentials" } }, "cveMetadata": { "assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa", "assignerShortName": "GitHub_M", "cveId": "CVE-2025-54368", "datePublished": "2025-08-08T00:00:39.001Z", "dateReserved": "2025-07-21T16:12:20.732Z", "dateUpdated": "2025-08-08T17:32:18.259Z", "state": "PUBLISHED" }, "dataType": "CVE_RECORD", "dataVersion": "5.1", "vulnerability-lookup:meta": { "nvd": "{\"cve\":{\"id\":\"CVE-2025-54368\",\"sourceIdentifier\":\"security-advisories@github.com\",\"published\":\"2025-08-08T00:15:26.583\",\"lastModified\":\"2025-08-08T20:30:18.180\",\"vulnStatus\":\"Awaiting Analysis\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"uv is a Python package and project manager written in Rust. In versions 0.8.5 and earlier, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive\u0027s central directory. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. An attacker could also contrive a \\\"stacked\\\" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target in both scenarios. This issue is fixed in version 0.8.6. To work around this issue, users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.\"},{\"lang\":\"es\",\"value\":\"uv es un gestor de paquetes y proyectos de Python escrito en Rust. En las versiones 0.8.5 y anteriores, los archivos ZIP remotos se gestionaban de forma secuencial y las entradas de archivo no se conciliaban con el directorio central del archivo. Un atacante podr\u00eda crear un archivo ZIP que extrajera contenido leg\u00edtimo en algunos instaladores de paquetes y contenido malicioso en otros, debido a m\u00faltiples entradas de archivo locales. Un atacante tambi\u00e9n podr\u00eda crear una entrada ZIP \\\"apilada\\\" con m\u00faltiples ZIP internos, que se gestionar\u00edan de forma diferente seg\u00fan el instalador. El atacante podr\u00eda elegir el instalador objetivo en ambos casos. Este problema se ha corregido en la versi\u00f3n 0.8.6. Para solucionarlo, los usuarios pueden configurar UV_INSECURE_NO_ZIP_VALIDATION=1 para volver al comportamiento anterior.\"}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"vectorString\":\"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/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\",\"baseScore\":6.8,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"NONE\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"PASSIVE\",\"vulnConfidentialityImpact\":\"NONE\",\"vulnIntegrityImpact\":\"HIGH\",\"vulnAvailabilityImpact\":\"NONE\",\"subConfidentialityImpact\":\"NONE\",\"subIntegrityImpact\":\"NONE\",\"subAvailabilityImpact\":\"NONE\",\"exploitMaturity\":\"NOT_DEFINED\",\"confidentialityRequirement\":\"NOT_DEFINED\",\"integrityRequirement\":\"NOT_DEFINED\",\"availabilityRequirement\":\"NOT_DEFINED\",\"modifiedAttackVector\":\"NOT_DEFINED\",\"modifiedAttackComplexity\":\"NOT_DEFINED\",\"modifiedAttackRequirements\":\"NOT_DEFINED\",\"modifiedPrivilegesRequired\":\"NOT_DEFINED\",\"modifiedUserInteraction\":\"NOT_DEFINED\",\"modifiedVulnConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedVulnIntegrityImpact\":\"NOT_DEFINED\",\"modifiedVulnAvailabilityImpact\":\"NOT_DEFINED\",\"modifiedSubConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedSubIntegrityImpact\":\"NOT_DEFINED\",\"modifiedSubAvailabilityImpact\":\"NOT_DEFINED\",\"Safety\":\"NOT_DEFINED\",\"Automatable\":\"NOT_DEFINED\",\"Recovery\":\"NOT_DEFINED\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"NOT_DEFINED\",\"providerUrgency\":\"NOT_DEFINED\"}}]},\"weaknesses\":[{\"source\":\"security-advisories@github.com\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-20\"},{\"lang\":\"en\",\"value\":\"CWE-436\"}]}],\"references\":[{\"url\":\"https://astral.sh/blog/uv-security-advisory-cve-2025-54368\",\"source\":\"security-advisories@github.com\"},{\"url\":\"https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks\",\"source\":\"security-advisories@github.com\"},{\"url\":\"https://github.com/astral-sh/uv/commit/7f1eaf48c193e045ca2c62c4581048765c55505f\",\"source\":\"security-advisories@github.com\"},{\"url\":\"https://github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8\",\"source\":\"security-advisories@github.com\"}]}}", "vulnrichment": { "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2025-54368\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-08-08T17:32:03.528701Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-08-08T17:32:14.791Z\"}}], \"cna\": {\"title\": \"uv is vulnerable to ZIP payload obfuscation through parsing differentials\", \"source\": {\"advisory\": \"GHSA-8qf3-x8v5-2pj8\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 6.8, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N\", \"userInteraction\": \"PASSIVE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"NONE\", \"vulnIntegrityImpact\": \"HIGH\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"NONE\", \"vulnConfidentialityImpact\": \"NONE\"}}], \"affected\": [{\"vendor\": \"astral-sh\", \"product\": \"uv\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c 0.8.6\"}]}], \"references\": [{\"url\": \"https://github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8\", \"name\": \"https://github.com/astral-sh/uv/security/advisories/GHSA-8qf3-x8v5-2pj8\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/astral-sh/uv/commit/7f1eaf48c193e045ca2c62c4581048765c55505f\", \"name\": \"https://github.com/astral-sh/uv/commit/7f1eaf48c193e045ca2c62c4581048765c55505f\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://astral.sh/blog/uv-security-advisory-cve-2025-54368\", \"name\": \"https://astral.sh/blog/uv-security-advisory-cve-2025-54368\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks\", \"name\": \"https://blog.pypi.org/posts/2025-08-07-wheel-archive-confusion-attacks\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"uv is a Python package and project manager written in Rust. In versions 0.8.5 and earlier, remote ZIP archives were handled in a streamwise fashion, and file entries were not reconciled against the archive\u0027s central directory. An attacker could contrive a ZIP archive that would extract with legitimate contents on some package installers, and malicious contents on others due to multiple local file entries. An attacker could also contrive a \\\"stacked\\\" ZIP input with multiple internal ZIPs, which would be handled differently by different package installers. The attacker could choose which installer to target in both scenarios. This issue is fixed in version 0.8.6. To work around this issue, users may choose to set UV_INSECURE_NO_ZIP_VALIDATION=1 to revert to the previous behavior.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-436\", \"description\": \"CWE-436: Interpretation Conflict\"}]}, {\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-20\", \"description\": \"CWE-20: Improper Input Validation\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2025-08-08T00:00:39.001Z\"}}}", "cveMetadata": "{\"cveId\": \"CVE-2025-54368\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2025-08-08T17:32:18.259Z\", \"dateReserved\": \"2025-07-21T16:12:20.732Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2025-08-08T00:00:39.001Z\", \"assignerShortName\": \"GitHub_M\"}", "dataType": "CVE_RECORD", "dataVersion": "5.1" } } }
Loading…
Loading…
Sightings
Author | Source | Type | Date |
---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…