Vulnerability · Published Apr 6, 2023 · Assigned by Go

CVE-2023-24536Excessive resource consumption in net/http, net/textproto and mime/multipart

High 7.5

In plain English

A high-severity resource allocation without limits in mime/multipart from Go standard library. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 1.5% (higher than 74% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)7.5High
Exploit odds (30 days)1.5%top 26.0% of all CVEs
Exploited in the wildNo reportsCISA SSVC: none
Attack toolingNoneno public tooling known

Official description

Multipart form parsing can consume large amounts of CPU and memory when processing form inputs containing very large numbers of parts. This stems from several causes: 1. mime/multipart.Reader.ReadForm limits the total memory a parsed multipart form can consume. ReadForm can undercount the amount of memory consumed, leading it to accept larger inputs than intended. 2. Limiting total memory does not account for increased pressure on the garbage collector from large numbers of small allocations in forms with many parts. 3. ReadForm can allocate a large number of short-lived buffers, further increasing pressure on the garbage collector. The combination of these factors can permit an attacker to cause an program that parses multipart forms to consume large amounts of CPU and memory, potentially resulting in a denial of service. This affects programs that use mime/multipart.Reader.ReadForm, as well as form parsing in the net/http package with the Request methods FormFile, FormValue, ParseMultipartForm, and PostFormValue. With fix, ReadForm now does a better job of estimating the memory consumption of parsed forms, and performs many fewer short-lived allocations. In addition, the fixed mime/multipart.Reader imposes the following limits on the size of parsed forms: 1. Forms parsed with ReadForm may contain no more than 1000 parts. This limit may be adjusted with the environment variable GODEBUG=multipartmaxparts=. 2. Form parts parsed with NextPart and NextRawPart may contain no more than 10,000 header fields. In addition, forms parsed with ReadForm may contain no more than 10,000 header fields across all parts. This limit may be adjusted with the environment variable GODEBUG=multipartmaxheaders=.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
AlmaLinux:8aardvark-dns2:1.7.0-1.module_el8.9.0+3657+d86e192fALSA-2023:6939
AlmaLinux:8aardvark-dns2:1.0.1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8buildah1:1.31.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8buildah1:1.24.6-7.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9buildah1:1.31.3-1.el9ALSA-2023:6473
AlmaLinux:8buildah-tests1:1.31.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8buildah-tests1:1.24.6-7.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9buildah-tests1:1.31.3-1.el9ALSA-2023:6473
AlmaLinux:8cockpit-podman46-1.module_el8.7.0+3344+5bcd850fALSA-2023:6938
AlmaLinux:8cockpit-podman75-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8conmon2:2.1.4-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8conmon3:2.1.8-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8container-selinux2:2.205.0-3.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8container-selinux2:2.221.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8containernetworking-plugins1:1.1.1-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8containernetworking-plugins1:1.3.0-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9containernetworking-plugins1:1.3.0-4.el9ALSA-2023:6402
AlmaLinux:8containers-common2:1-54.module_el8.9.0+3673+0c64b403ALSA-2023:6939
AlmaLinux:8containers-common2:1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8crit3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8crit3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8crit3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8criu3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu-devel3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8criu-devel3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8criu-devel3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu-libs3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8criu-libs3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8criu-libs3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8crun1.8.3-1.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8crun1.8.7-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8fuse-overlayfs1.12-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8fuse-overlayfs1.9-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8libslirp4.4.0-1.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8libslirp4.4.0-1.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8libslirp4.4.0-1.module_el8.8.0+3615+3543c705ALSA-2023:6939
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8libslirp-devel4.4.0-1.module_el8.8.0+3615+3543c705ALSA-2023:6939
AlmaLinux:8netavark2:1.7.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8netavark2:1.0.1-38.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8oci-seccomp-bpf-hook1.2.9-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8oci-seccomp-bpf-hook1.2.5-2.module_el8.8.0+3468+16b86c82ALSA-2023:6938
AlmaLinux:8podman3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-catatonit2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8podman-catatonit3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-docker3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-docker2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-docker2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-gvproxy2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8podman-gvproxy3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9podman-gvproxy2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-plugins3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-plugins2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-plugins2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-remote3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-remote2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-remote2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8podman-tests3:4.6.1-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8podman-tests2:4.0.2-24.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9podman-tests2:4.6.1-5.el9ALSA-2023:6474
AlmaLinux:8python3-criu3.18-4.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8python3-criu3.15-3.module_el8.6.0+3137+d33c3efbALSA-2023:6938
AlmaLinux:8python3-criu3.15-3.module_el8.6.0+2877+8e437bf5ALSA-2023:6938
AlmaLinux:8python3-podman4.0.0-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8python3-podman4.6.0-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8runc1:1.1.9-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8runc1:1.1.5-2.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8skopeo2:1.6.2-8.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8skopeo2:1.13.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9skopeo2:1.13.3-1.el9ALSA-2023:6363
AlmaLinux:8skopeo-tests2:1.13.3-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8skopeo-tests2:1.6.2-8.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:9skopeo-tests2:1.13.3-1.el9ALSA-2023:6363
AlmaLinux:8slirp4netns1.1.8-3.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8slirp4netns1.2.1-1.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:8toolbox0.0.99.4-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8toolbox0.0.99.4-5.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9toolbox0.0.99.4-6.el9_3ALSA-2023:6346
AlmaLinux:8toolbox-tests0.0.99.4-5.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8toolbox-tests0.0.99.4-5.module_el8.9.0+3643+9234dc3bALSA-2023:6939
AlmaLinux:9toolbox-tests0.0.99.4-6.el9_3ALSA-2023:6346
AlmaLinux:8udica0.2.6-4.module_el8.9.0+3627+db8ec155ALSA-2023:6938
AlmaLinux:8udica0.2.6-20.module_el8.8.0+3615+3543c705ALSA-2023:6939
Alpine:v3.20go1.20.3-r0ALPINE-CVE-2023-24536
Alpine:v3.21go1.20.3-r0ALPINE-CVE-2023-24536
Alpine:v3.22go1.20.3-r0ALPINE-CVE-2023-24536
Alpine:v3.23go1.20.3-r0ALPINE-CVE-2023-24536
Alpine:v3.24go1.20.3-r0ALPINE-CVE-2023-24536
Debian:12golang-1.191.19.8-2DEBIAN-CVE-2023-24536
Gostdlib1.19.8, 1.20.3GO-2023-1705
Rocky Linux:8buildah1:1.24.6-7.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8cockpit-podman0:46-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8conmon2:2.1.4-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8container-selinux2:2.205.0-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8containernetworking-plugins1:1.1.1-5.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8containers-common2:1-38.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8criu0:3.15-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8crun0:1.8.3-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8fuse-overlayfs0:1.9-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8libslirp0:4.4.0-1.module+el8.9.0+1445+07728297RLSA-2023:6939
Rocky Linux:8libslirp0:4.4.0-1.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8oci-seccomp-bpf-hook0:1.2.5-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8podman2:4.0.2-24.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8python-podman0:4.0.0-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8runc1:1.1.5-2.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8slirp4netns0:1.1.8-3.module+el8.9.0+1445+07728297RLSA-2023:6938
Rocky Linux:8udica0:0.2.6-4.module+el8.9.0+1445+07728297RLSA-2023:6938
Ubuntu:22.04:LTSgolang-1.171.17.13-3ubuntu1.3USN-7111-1
Ubuntu:22.04:LTSgolang-1.171.17.13-3ubuntu1.3UBUNTU-CVE-2023-24536
Ubuntu:22.04:LTSgolang-1.181.18.1-1ubuntu1.2UBUNTU-CVE-2023-24536
Ubuntu:22.04:LTSgolang-1.181.18.1-1ubuntu1.2USN-7109-1

Affected products (as reported)

VendorProductVersions
Go standard library mime/multipart 0 – before 1.19.81.20.0-0 – before 1.20.3
Go standard library net/textproto 0 – before 1.19.81.20.0-0 – before 1.20.3

Weakness: CWE-770 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

References