chore(deps): update dependency copier to v9.9.1 [security]#1167
Merged
DiamondJoseph merged 1 commit intomainfrom Aug 19, 2025
Merged
chore(deps): update dependency copier to v9.9.1 [security]#1167DiamondJoseph merged 1 commit intomainfrom
DiamondJoseph merged 1 commit intomainfrom
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1167 +/- ##
=======================================
Coverage 94.49% 94.49%
=======================================
Files 41 41
Lines 2544 2544
=======================================
Hits 2404 2404
Misses 140 140 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
DiamondJoseph
approved these changes
Aug 19, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
==9.8.0->==9.9.1GitHub Vulnerability Alerts
CVE-2025-55201
Impact
Copier's current security model shall restrict filesystem access through Jinja:
{% include ... %}, which is limited by Jinja to reading files from the subtree of the local template clone in our case.Copier suggests that it's safe to generate a project from a safe template, i.e. one that doesn't use unsafe features like custom Jinja extensions which would require passing the
--UNSAFE,--trustflag. As it turns out, a safe template can currently read and write arbitrary files because we expose a fewpathlib.Pathobjects in the Jinja context which have unconstrained I/O methods. This effectively renders our security model w.r.t. filesystem access useless.Arbitrary read access
Imagine, e.g., a malicious template author who creates a template that reads SSH keys or other secrets from well-known locations, perhaps "masks" them with Base64 encoding to reduce detection risk, and hopes for a user to push the generated project to a public location like github.com where the template author can extract the secrets.
Reproducible example:
Read known file:
Read unknown file(s) via globbing:
Arbitrary write access
Imagine, e.g., a malicious template author who creates a template that overwrites or even deletes files to cause havoc.
Reproducible examples:
Overwrite known file:
Overwrite unknown file(s) via globbing:
Delete unknown file(s) via globbing:
Delete unknown files and directories via tree walking:
CVE-2025-55214
Impact
Copier suggests that it's safe to generate a project from a safe template, i.e. one that doesn't use unsafe features like custom Jinja extensions which would require passing the
--UNSAFE,--trustflag. As it turns out, a safe template can currently write files outside the destination path where a project shall be generated or updated. This is possible when rendering a generated directory structure whose rendered path is either a relative parent path or an absolute path. Constructing such paths is possible using Copier's builtinpathjoinJinja filter and its builtin_copier_conf.sepvariable, which is the platform-native path separator. This way, a malicious template author can create a template that overwrites arbitrary files (according to the user's write permissions), e.g., to cause havoc.Write access via generated relative path
Reproducible example:
Write access via generated absolute path
Reproducible example:
POSIX:
Windows (PowerShell):
This scenario is slightly less severe, as Copier has a few assertions of the destination path being relative which would typically be raised. But
python -O(orPYTHONOPTIMIZE=x) removes asserts, so these guards may be ineffective. In addition, this scenario will prompt for overwrite confirmation or require the--overwriteflag for non-interactive mode; yet malicious file writes might go unnoticed.Release Notes
copier-org/copier (copier)
v9.9.1Compare Source
Security
pathlib.PurePathv9.9.0Compare Source
Feat
Fix
core.fsmonitor=true(#2151)Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.