Zero Day MonitorZDM
DashboardVulnerabilitiesTrendingZero-DaysNews
Login
ImpressumPrivacy Policy
Zero Day Monitor © 2026
835 articles · 101756 vulns · 36/41 feeds (7d)
← Back to list
4.4
CVE-2026-34726PATCHED
python packaging authority · copier

Copier `_subdirectory` allows template root escape via parent-directory traversal

Description

### Summary Copier's `_subdirectory` setting is documented as the subdirectory to use as the template root. However, the current implementation accepts parent-directory traversal such as `..` and uses it directly when selecting the template root. As a result, a template can escape its own directory and make Copier render files from the parent directory without `--UNSAFE`. ### Details The relevant code path is: 1. the template defines `_subdirectory` 2. Copier renders that string 3. `template_copy_root` returns `self.template.local_abspath / subdir` 4. Copier walks that directory as the template root Relevant code: - <https://github.com/copier-org/copier/blob/7aa7021bd73797c982492bac3535515d4484fdb7/copier/_main.py#L1056-L1062> - <https://github.com/copier-org/copier/blob/7aa7021bd73797c982492bac3535515d4484fdb7/copier/_template.py#L504-L513> The effective sink is: ```python subdir = self._render_string(self.template.subdirectory) or "" return self.template.local_abspath / subdir ``` There is no check that the resulting path stays inside the template directory. The documentation for `_subdirectory` describes it as: > Subdirectory to use as the template root when generating a project. and explains it as a way to separate template metadata from template source code: <https://github.com/copier-org/copier/blob/7aa7021bd73797c982492bac3535515d4484fdb7/docs/configuring.md#L1582-L1646> That description fits values like `template` or `poetry`, but not `..`. ### PoC #### PoC 1: `_subdirectory: ..` escapes to the parent directory ```sh mkdir -p root/template dst echo 'loot' > root/loot.txt printf '%s\n' '_subdirectory: ..' > root/template/copier.yml copier copy --overwrite root/template dst find dst -maxdepth 3 -type f | sort cat dst/loot.txt ``` Expected output includes: ```text dst/loot.txt dst/template/copier.yml loot ``` This shows Copier is rendering from `root/` rather than from `root/template/`. ### Impact If a user runs Copier on an untrusted template, that template can change the effective template root and make Copier render files from outside the intended template directory. Practical impact: - template-root escape via `..` - rendering of parent-directory files that were not meant to be part of the template - possible without `--UNSAFE`

Affected Products

VendorProductVersions
python packaging authoritycopierpip/copier: < 9.14.1

References

  • https://github.com/advisories/GHSA-85v3-4m8g-hrh6(advisory)
  • https://github.com/copier-org/copier/security/advisories/GHSA-85v3-4m8g-hrh6
  • https://github.com/advisories/GHSA-85v3-4m8g-hrh6
CVSS 3.14.4 MEDIUM
VectorCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N
CISA KEV❌ No
Actively exploited❌ No
Patch available
copier@9.14.1
CWECWE-22
PublishedApr 1, 2026
Tags
GHSA-85v3-4m8g-hrh6pip
Trending Score0
Source articles0
Independent0
Info Completeness0/14
Missing: cve_id, title, description, vendor, product, versions, cvss, epss, cwe, kev, exploit, patch, iocs, mitre_attack

Community Vote

0
Login to vote
0 upvotes0 downvotes
No votes yet

Related CVEs (5)

MEDIUMCVE-2026-32794
Improper Certificate Validation vulnerability in Apache Airflow Provider for Databricks. Provider code did not validate certificates for connections to Databricks back-end which could result in a man-
Trending: 20
CRITICALCVE-2026-34935
PraisonAI: OS Command Injection in MCPHandler.parse_mcp_command()
MEDIUMCVE-2026-34881
OpenStack Glance <29.1.1, >=30.0.0 <30.1.1, ==31.0.0 is affected by Server-Side Request Forgery (SSRF). By use of HTTP redirects, an authenticated user can bypass URL validation checks and redirect to
CRITICALCVE-2026-34934
PraisonAI Has Second-Order SQL Injection in `get_all_user_threads`
HIGHCVE-2026-34936
PraisonAI: SSRF via Unvalidated api_base in passthrough() Fallback

Pin to Dashboard

Verification

State: unverified
Confidence: 0%

Vulnerability Timeline

CVE Published
Apr 1, 2026
Patch Available
Apr 1, 2026
Discovered by ZDM
Apr 1, 2026