Rattler vulnerable to entry-point path traversal in noarch:python install (arbitrary file write)
Rattler is a library that provides common functionality used within the conda ecosystem. Prior to version 0.43.2, `EntryPoint::FromStr` in `rattler_conda_types` performs only `.trim()` on the `command` field before the linker joins it onto the install prefix and writes an executable Python script. A malicious `noarch:python` package can ship an `info/link.json` with an entry-point name containing `..`, `/`, `\`, or an absolute path; the resulting file is written outside the prefix (or clobbers an existing in-prefix entry-point such as `bin/pip`) with mode `0o775` on Unix and a copied launcher `.exe` on Windows. This affects the default install path of `pixi install`, `mamba install` via py-rattler, `rattler-build`, and any other consumer of the `rattler` install crate; no flag or post-link-script opt-in is involved. Version 0.43.2 contains a fix for the issue.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-47425
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 16:55 UTC · Revision 1
Source evidence
Rattler vulnerable to entry-point path traversal in noarch:python install (arbitrary file write)
core-osv · Original sourcePublished 21 Jul 2026, 17:47 UTC
Rattler is a library that provides common functionality used within the conda ecosystem. Prior to version 0.43.2, `EntryPoint::FromStr` in `rattler_conda_types` performs only `.trim()` on the `command` field before the linker joins it onto the install prefix and writes an executable Python script. A malicious `noarch:python` package can ship an `info/link.json` with an entry-point name containing `..`, `/`, `\`, or an absolute path; the resulting file is written outside the prefix (or clobbers an existing in-prefix entry-point such as `bin/pip`) with mode `0o775` on Unix and a copied launcher `.exe` on Windows. This affects the default install path of `pixi install`, `mamba install` via py-rattler, `rattler-build`, and any other consumer of the `rattler` install crate; no flag or post-link-script opt-in is involved. Version 0.43.2 contains a fix for the issue.
osv:CVE-2026-47425
Complete source record
{
"id": "98c917378d098adba8b79c245b617014843b088141708a7b3813a4c125ee1595",
"url": "https://osv.dev/vulnerability/CVE-2026-47425",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Rattler vulnerable to entry-point path traversal in noarch:python install (arbitrary file write)",
"summary": "Rattler is a library that provides common functionality used within the conda ecosystem. Prior to version 0.43.2, `EntryPoint::FromStr` in `rattler_conda_types` performs only `.trim()` on the `command` field before the linker joins it onto the install prefix and writes an executable Python script. A malicious `noarch:python` package can ship an `info/link.json` with an entry-point name containing `..`, `/`, `\\`, or an absolute path; the resulting file is written outside the prefix (or clobbers an existing in-prefix entry-point such as `bin/pip`) with mode `0o775` on Unix and a copied launcher `.exe` on Windows. This affects the default install path of `pixi install`, `mamba install` via py-rattler, `rattler-build`, and any other consumer of the `rattler` install crate; no flag or post-link-script opt-in is involved. Version 0.43.2 contains a fix for the issue.",
"evidence": "osv:CVE-2026-47425",
"products": [],
"severity": "medium",
"structured": {
"id": "CVE-2026-47425",
"aliases": [
"CVE-2026-47425",
"GHSA-q53q-5r4j-5729",
"PYSEC-2026-2971"
],
"metrics": [
{
"type": "CVSS_V4",
"score": "CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/conda/rattler",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "a4678c229ae544320e4b096fe3ed9c8946bced2a"
},
{
"fixed": "6f891edc04f048ab09ca9f4967fc1f0c8673c39c"
},
{
"fixed": "4f06eca89aa13209774d26dbac077c41b72bac7c"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.43.2"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.24.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "4f06eca89aa13209774d26dbac077c41b72bac7c"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"versions": [
"rattler_solve-v0.23.2",
"py-rattler-v0.6.1",
"rattler_virtual_packages-v0.19.13",
"rattler_solve-v0.23.1",
"rattler_shell-v0.20.6",
"rattler_repodata_gateway-v0.20.3",
"rattler_package_streaming-v0.21.1",
"rattler_lock-v0.22.9",
"rattler_index-v0.19.14",
"rattler_conda_types-v0.25.0",
"rattler-v0.26.1",
"py-rattler-v0.6.0",
"rattler_virtual_packages-v0.19.12",
"rattler_solve-v0.23.0",
"rattler_shell-v0.20.5",
"rattler_repodata_gateway-v0.20.2",
"rattler_package_streaming-v0.21.0",
"rattler_networking-v0.20.8",
"rattler_lock-v0.22.8",
"rattler_index-v0.19.13",
"rattler_conda_types-v0.24.0",
"rattler-v0.26.0",
"simple_spawn_blocking-v1.0.0",
"rattler_virtual_packages-v0.19.11",
"rattler_solve-v0.22.0",
"rattler_shell-v0.20.4",
"rattler_repodata_gateway-v0.20.1",
"rattler_package_streaming-v0.20.10",
"rattler_networking-v0.20.7",
"rattler_lock-v0.22.7",
"rattler_index-v0.19.12",
"rattler_conda_types-v0.23.1",
"rattler-v0.25.0",
"file_url-v0.1.1",
"rattler_virtual_packages-v0.19.10",
"rattler_solve-v0.21.2",
"rattler_shell-v0.20.3",
"rattler_repodata_gateway-v0.20.0",
"rattler_package_streaming-v0.20.9",
"rattler_networking-v0.20.6",
"rattler_lock-v0.22.6",
"rattler_index-v0.19.11",
"rattler_digest-v0.19.4",
"rattler_conda_types-v0.23.0",
"rattler-v0.24.1",
"file_url-v0.1.0",
"rattler_virtual_packages-v0.19.9",
"rattler_solve-v0.21.1",
"rattler_shell-v0.20.2",
"rattler_repodata_gateway-v0.19.11",
"rattler_package_streaming-v0.20.8",
"rattler_networking-v0.20.5",
"rattler_lock-v0.22.5",
"rattler_index-v0.19.10",
"rattler_conda_types-v0.22.1",
"rattler-v0.24.0",
"rattler_repodata_gateway-v0.19.10",
"rattler_package_streaming-v0.20.7",
"rattler_networking-v0.20.4",
"rattler_lock-v0.22.4",
"rattler_index-v0.19.9",
"rattler-v0.23.2",
"py-rattler-v0.5.0",
"rattler_solve-v0.21.0",
"rattler_repodata_gateway-v0.19.9",
"rattler_package_streaming-v0.20.6",
"rattler_networking-v0.20.3",
"rattler-v0.23.1",
"py-rattler-v0.4.0",
"rattler_virtual_packages-v0.19.8",
"rattler_solve-v0.20.7",
"rattler_shell-v0.20.1",
"rattler_repodata_gateway-v0.19.8",
"rattler_package_streaming-v0.20.5",
"rattler_lock-v0.22.3",
"rattler_index-v0.19.8",
"rattler_conda_types-v0.22.0",
"rattler-v0.23.0",
"rattler_virtual_packages-v0.19.7",
"rattler_solve-v0.20.6",
"rattler_shell-v0.20.0",
"rattler_repodata_gateway-v0.19.7",
"rattler_package_streaming-v0.20.4",
"rattler_networking-v0.20.2",
"rattler_macros-v0.19.3",
"rattler_lock-v0.22.2",
"rattler_libsolv_c-v0.19.3",
"rattler_index-v0.19.7",
"rattler_digest-v0.19.3",
"rattler_conda_types-v0.21.0",
"rattler-v0.22.0",
"rattler_virtual_packages-v0.19.6",
"rattler_solve-v0.20.5",
"rattler_shell-v0.19.6",
"rattler_repodata_gateway-v0.19.6",
"rattler_package_streaming-v0.20.3",
"rattler_networking-v0.20.1",
"rattler_lock-v0.22.1",
"rattler_index-v0.19.6",
"rattler_conda_types-v0.20.5",
"rattler-v0.21.0",
"rattler-v0.20.1",
"rattler-v0.20.0",
"rattler_virtual_packages-v0.19.5",
"rattler_solve-v0.20.4",
"rattler_shell-v0.19.5",
"rattler_repodata_gateway-v0.19.5",
"rattler_package_streaming-v0.20.2",
"rattler_lock-v0.22.0",
"rattler_index-v0.19.5",
"rattler_conda_types-v0.20.4",
"rattler-v0.19.6",
"rattler_virtual_packages-v0.19.4",
"rattler_solve-v0.20.3",
"rattler_shell-v0.19.4",
"rattler_repodata_gateway-v0.19.4",
"rattler_package_streaming-v0.20.1",
"rattler_networking-v0.20.0",
"rattler_lock-v0.21.0",
"rattler_index-v0.19.4",
"rattler_conda_types-v0.20.3",
"rattler-v0.19.5",
"rattler-v0.19.4",
"rattler_virtual_packages-v0.19.3",
"rattler_solve-v0.20.2",
"rattler_shell-v0.19.3",
"rattler_repodata_gateway-v0.19.3",
"rattler_package_streaming-v0.20.0",
"rattler_networking-v0.19.2",
"rattler_macros-v0.19.2",
"rattler_lock-v0.20.2",
"rattler_libsolv_c-v0.19.2",
"rattler_index-v0.19.3",
"rattler_digest-v0.19.2",
"rattler_conda_types-v0.20.2",
"rattler-v0.19.3",
"rattler_virtual_packages-v0.19.2",
"rattler_solve-v0.20.1",
"rattler_shell-v0.19.2",
"rattler_repodata_gateway-v0.19.2",
"rattler_package_streaming-v0.19.2",
"rattler_lock-v0.20.1",
"rattler_index-v0.19.2",
"rattler_conda_types-v0.20.1",
"rattler-v0.19.2",
"rattler_virtual_packages-v0.19.1",
"rattler_solve-v0.20.0",
"rattler_shell-v0.19.1",
"rattler_repodata_gateway-v0.19.1",
"rattler_package_streaming-v0.19.1",
"rattler_networking-v0.19.1",
"rattler_macros-v0.19.1",
"rattler_lock-v0.20.0",
"rattler_libsolv_c-v0.19.1",
"rattler_index-v0.19.1",
"rattler_digest-v0.19.1",
"rattler_conda_types-v0.20.0",
"rattler-v0.19.1",
"rattler_virtual_packages-v0.19.0",
"rattler_solve-v0.19.0",
"rattler_shell-v0.19.0",
"rattler_libsolv_c-v0.19.0",
"rattler_index-v0.19.0",
"rattler_repodata_gateway-v0.19.0",
"rattler_package_streaming-v0.19.0",
"rattler_networking-v0.19.0",
"rattler_macros-v0.19.0",
"rattler_lock-v0.19.0",
"rattler_digest-v0.19.0",
"rattler_conda_types-v0.19.0",
"rattler-v0.19.0",
"py-rattler-v0.3.0",
"v0.18.0",
"v0.17.0",
"v0.16.2",
"v0.16.1",
"py-rattler-v0.2.1",
"v0.14.0",
"v0.13.0",
"v0.12.3",
"py-rattler-v0.2.0",
"v0.12.2",
"v0.12.1",
"v0.12.0",
"v0.11.0",
"py-rattler-v0.1.2",
"py-rattler-v0.1.1",
"py-rattler-v0.1.0",
"v0.10.0",
"v0.9.0",
"v0.8.0",
"v0.7.0",
"v0.5.0",
"v0.4.0",
"v0.3.0",
"v0.2.0",
"v0.1.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-47425.json"
}
}
],
"modified": "2026-10-28T02:30:30.500843776Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47425.json",
"https://github.com/conda/rattler/security/advisories/GHSA-q53q-5r4j-5729",
"https://nvd.nist.gov/vuln/detail/CVE-2026-47425",
"https://github.com/conda/rattler/commit/4f06eca89aa13209774d26dbac077c41b72bac7c"
],
"provider_metadata": {
"cwe_ids": [
"CWE-22",
"CWE-73"
],
"cna_assigner": "GitHub_M",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"fixed": "0.65.0"
},
{
"fixed": "0.69.0"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/47xxx/CVE-2026-47425.json"
}
},
"related_cves": [
{
"value": "CVE-2026-47425",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 497631,
"published_at": "2026-07-21T17:47:40.995+00:00"
}