]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.14] gh-149486: tarfile.data_filter: validate written link target (GH-149487) ...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 11 May 2026 09:57:50 +0000 (11:57 +0200)
committerGitHub <noreply@github.com>
Mon, 11 May 2026 09:57:50 +0000 (11:57 +0200)
commit74cca9a92fb7d653e404843a56b8bdc7b0afdbbf
treec077e855c0068246c8135cc4da5a119c92f0b71c
parent6588ca5b642a0f878197fc31afb6bfa424fd7219
[3.14] gh-149486: tarfile.data_filter: validate written link target (GH-149487) (GH-149554)

* gh-149486: tarfile.data_filter: validate written link target (GH-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 578411982c16f753f4893532510099ef665117da)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Lib/tarfile.py
Lib/test/test_tarfile.py
Misc/NEWS.d/next/Security/2026-05-03-21-00-00.gh-issue-149486.tarflt.rst [new file with mode: 0644]