Skip to content

[3.12] gh-149486: tarfile.data_filter: validate written link target (GH-149487)#149556

Open
miss-islington wants to merge 2 commits intopython:3.12from
miss-islington:backport-5784119-3.12
Open

[3.12] gh-149486: tarfile.data_filter: validate written link target (GH-149487)#149556
miss-islington wants to merge 2 commits intopython:3.12from
miss-islington:backport-5784119-3.12

Conversation

@miss-islington
Copy link
Copy Markdown
Contributor

@miss-islington miss-islington commented May 8, 2026

The data filter rewrote linknames with normpath() but ran the
containment check against the un-normalised value, and computed a
symlink's directory before stripping trailing slashes. Both let a
crafted archive create links pointing outside the destination. Also
reject link members that resolve to the destination directory itself,
which could otherwise replace it with a symlink and redirect all
subsequent members.

(Patch by Greg; Petr's just reviewing & merging.)
(cherry picked from commit 5784119)

Co-authored-by: Petr Viktorin encukou@gmail.com
Co-authored-by: Gregory P. Smith greg@krypto.org

…ythonGH-149487)

The data filter rewrote linknames with normpath() but ran the
containment check against the un-normalised value, and computed a
symlink's directory before stripping trailing slashes.  Both let a
crafted archive create links pointing outside the destination.  Also
reject link members that resolve to the destination directory itself,
which could otherwise replace it with a symlink and redirect all
subsequent members.

(Patch by Greg; Petr's just reviewing & merging.)
(cherry picked from commit 5784119)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
@read-the-docs-community
Copy link
Copy Markdown

read-the-docs-community Bot commented May 8, 2026

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants