]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.19] mime/multipart: limit parsed mime message sizes
authorDamien Neil <dneil@google.com>
Mon, 20 Mar 2023 17:43:19 +0000 (10:43 -0700)
committerGopher Robot <gobot@golang.org>
Tue, 4 Apr 2023 16:47:48 +0000 (16:47 +0000)
commit7917b5f31204528ea72e0629f0b7d52b35b27538
tree86bbbbc42ea3c01928f3122934995842f1518a4f
parent7a359a651c7ebdb29e0a1c03102fce793e9f58f0
[release-branch.go1.19] mime/multipart: limit parsed mime message sizes

The parsed forms of MIME headers and multipart forms can consume
substantially more memory than the size of the input data.
A malicious input containing a very large number of headers or
form parts can cause excessively large memory allocations.

Set limits on the size of MIME data:

Reader.NextPart and Reader.NextRawPart limit the the number
of headers in a part to 10000.

Reader.ReadForm limits the total number of headers in all
FileHeaders to 10000.

Both of these limits may be set with with
GODEBUG=multipartmaxheaders=<values>.

Reader.ReadForm limits the number of parts in a form to 1000.
This limit may be set with GODEBUG=multipartmaxparts=<value>.

Thanks for Jakob Ackermann (@das7pad) for reporting this issue.

For CVE-2023-24536
For #59153
For #59269

Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1802455
Run-TryBot: Damien Neil <dneil@google.com>
Reviewed-by: Roland Shoemaker <bracewell@google.com>
Reviewed-by: Julie Qiu <julieqiu@google.com>
Reviewed-on: https://team-review.git.corp.google.com/c/golang/go-private/+/1801087
Reviewed-by: Damien Neil <dneil@google.com>
Run-TryBot: Roland Shoemaker <bracewell@google.com>
Change-Id: If134890d75f0d95c681d67234daf191ba08e6424
Reviewed-on: https://go-review.googlesource.com/c/go/+/481985
Run-TryBot: Michael Knyszek <mknyszek@google.com>
Auto-Submit: Michael Knyszek <mknyszek@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/mime/multipart/formdata.go
src/mime/multipart/formdata_test.go
src/mime/multipart/multipart.go
src/mime/multipart/readmimeheader.go
src/net/textproto/reader.go