Copier: trust-prefix bypass via path traversal runs tasks unprompted
Key facts
- Attack vector
- Local
- Privileges required
- None
- User interaction
- Passive
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- Code execution
- Confidentiality · integrity · availability
- High · High · High
- Fix status
- Fixed
Attack profile from CVSS 4.0 · CNA. Fix status from CNA and GitHub. Impact type from CWE-94.
Summary
Copier is a library and CLI app for rendering project templates. In versions 9.5.0 through 9.15.1, the `trust` setting's prefix match (`copier/_settings.py`) compares the template URL against a trusted prefix with a raw `str.startswith` and no path normalization, while the URL is normalized when the template is actually fetched (`Path.resolve()` for local paths; libcurl dot-segment removal for `https`). A template reference that textually starts with a trusted prefix but contains `..` is therefore granted trust yet resolves to a different, attacker-controlled template, whose `tasks` / `migrations` / `jinja_extensions` then run without the `--trust` prompt — arbitrary command execution. Version 9.15.2 patches the issue.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Total
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| copier-org | copier | 9.5.0 to before 9.15.2 | 9.15.2 | Patch available | CNA |
| — | copier (PyPI) | 9.5.0 to before 9.15.2 | 9.15.2 | Patch available | GHSA-9gmc-jqmh-3rvm |
- copier Vendorcopier-org Affected 9.5.0 to before 9.15.2 Fixed in 9.15.2 Patch available CNA
- copier (PyPI) Vendor— Affected 9.5.0 to before 9.15.2 Fixed in 9.15.2 Patch available GHSA-9gmc-jqmh-3rvm
CPE names Threatist (inferred) · 1
Inferred from how NVD named this product before; not given by a source.
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:copier-org:copier:*:*:*:*:*:*:*:* | — | — | copier-org |
- cpe:2.3:a:copier-org:copier:*:*:*:*:*:*:*:* Versions — — ·copier-org
Remediation
- Fix · CNA copier (copier-org) Fixed in 9.15.2
- Fix · GHSA-9gmc-jqmh-3rvm copier (PyPI) Fixed in 9.15.2 Advisory →
Timeline
- 2026-10-02 Threatist record created from CVE-2026-53951
- 2026-10-03 Alias added: GHSA-9gmc-jqmh-3rvm
References
More copier-org vulnerabilities
- TI-2025-34877 Copier safe template has arbitrary filesystem read/write access CVSS 4.0HIGH 8.5
- TI-2026-45000 Path traversal in copier-org copier CVSS 3.1HIGH 7.5
- TI-2025-34889 Copier safe template has filesystem write access outside destination path CVSS 4.0MEDIUM 6.9
- TI-2026-26974 Copier `_external_data` allows path traversal and absolute-path local file read without unsafe mode CVSS 3.1MEDIUM 5.5
- TI-2026-26970 Copier `_subdirectory` allows template root escape via parent-directory traversal CVSS 3.1MEDIUM 4.4
- TI-2026-19328 Copier safe template has arbitrary filesystem write access via directory symlinks when _preserve_symlinks: true CVSS 4.0MEDIUM 6.9
Sources
- CVE-2026-53951 · CVE Program
- CVE-2026-53951 · NVD
- FIRST EPSS
- GHSA-9gmc-jqmh-3rvm · GitHub Advisory Database · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences