]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.24] archive/tar: set a limit on the size of GNU sparse file 1...
authorDamien Neil <dneil@google.com>
Thu, 11 Sep 2025 20:32:10 +0000 (13:32 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 7 Oct 2025 18:01:00 +0000 (11:01 -0700)
commit613e746327381d820759ebea6ce722720b343556
treeba0e1924027c2cd62830fef77fdd1de47748b612
parent74d4d836b91318a8764b94bc2b4b66ff599eb5f2
[release-branch.go1.24] archive/tar: set a limit on the size of GNU sparse file 1.0 regions

Sparse files in tar archives contain only the non-zero components
of the file. There are several different encodings for sparse
files. When reading GNU tar pax 1.0 sparse files, archive/tar did
not set a limit on the size of the sparse region data. A malicious
archive containing a large number of sparse blocks could cause
archive/tar to read an unbounded amount of data from the archive
into memory.

Since a malicious input can be highly compressable, a small
compressed input could cause very large allocations.

Cap the size of the sparse block data to the same limit used
for PAX headers (1 MiB).

Thanks to Harshit Gupta (Mr HAX) (https://www.linkedin.com/in/iam-harshit-gupta/)
for reporting this issue.

Fixes CVE-2025-58183
For #75677
Fixes #75710

Change-Id: I70b907b584a7b8676df8a149a1db728ae681a770
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2800
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Nicholas Husin <husin@google.com>
Reviewed-on: https://go-internal-review.googlesource.com/c/go/+/2967
Reviewed-by: Damien Neil <dneil@google.com>
Reviewed-on: https://go-review.googlesource.com/c/go/+/709843
Reviewed-by: Carlos Amedee <carlos@golang.org>
TryBot-Bypass: Michael Pratt <mpratt@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
src/archive/tar/common.go
src/archive/tar/reader.go
src/archive/tar/reader_test.go
src/archive/tar/testdata/gnu-sparse-many-zeros.tar.bz2 [new file with mode: 0644]