Your submission was sent successfully! Close

You have successfully unsubscribed! Close

Thank you for signing up for our newsletter!
In these regular emails you will find the latest updates about Ubuntu and upcoming events where you can meet our team.Close

CVE-2022-41725

Published: 28 February 2023

A denial of service is possible from excessive resource consumption in net/http and mime/multipart. Multipart form parsing with mime/multipart.Reader.ReadForm can consume largely unlimited amounts of memory and disk files. This also affects form parsing in the net/http package with the Request methods FormFile, FormValue, ParseMultipartForm, and PostFormValue. ReadForm takes a maxMemory parameter, and is documented as storing "up to maxMemory bytes +10MB (reserved for non-file parts) in memory". File parts which cannot be stored in memory are stored on disk in temporary files. The unconfigurable 10MB reserved for non-file parts is excessively large and can potentially open a denial of service vector on its own. However, ReadForm did not properly account for all memory consumed by a parsed form, such as map entry overhead, part names, and MIME headers, permitting a maliciously crafted form to consume well over 10MB. In addition, ReadForm contained no limit on the number of disk files created, permitting a relatively small request body to create a large number of disk temporary files. With fix, ReadForm now properly accounts for various forms of memory overhead, and should now stay within its documented limit of 10MB + maxMemory bytes of memory consumption. Users should still be aware that this limit is high and may still be hazardous. In addition, ReadForm now creates at most one on-disk temporary file, combining multiple form parts into a single temporary file. The mime/multipart.File interface type's documentation states, "If stored on disk, the File's underlying concrete type will be an *os.File.". This is no longer the case when a form contains more than one file part, due to this coalescing of parts into a single file. The previous behavior of using distinct files for each form part may be reenabled with the environment variable GODEBUG=multipartfiles=distinct. Users should be aware that multipart.ReadForm and the http.Request methods that call it do not limit the amount of disk consumed by temporary files. Callers can limit the size of form data with http.MaxBytesReader.

Notes

AuthorNote
mdeslaur
containerd doesn't appear to use the vulnerable functions

Priority

Medium

Cvss 3 Severity Score

7.5

Score breakdown

Status

Package Release Status
containerd
Launchpad, Ubuntu, Debian
bionic Not vulnerable

focal Not vulnerable

jammy Not vulnerable

kinetic Not vulnerable

lunar Not vulnerable

mantic Not vulnerable

trusty Ignored
(end of standard support)
upstream Not vulnerable

xenial Not vulnerable

golang
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Does not exist

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Ignored
(end of standard support)
upstream Needs triage

xenial Does not exist

golang-1.10
Launchpad, Ubuntu, Debian
bionic Needed

focal Does not exist

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Needed

upstream Needs triage

xenial Needed

golang-1.13
Launchpad, Ubuntu, Debian
bionic Needed

focal Needed

jammy Needed

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Needed

golang-1.14
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Needed

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Does not exist

golang-1.16
Launchpad, Ubuntu, Debian
bionic Needed

focal Needed

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Does not exist

golang-1.17
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Does not exist

jammy Needed

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Does not exist

golang-1.18
Launchpad, Ubuntu, Debian
bionic Needed

focal Needed

jammy Needed

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Needed

golang-1.19
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Does not exist

jammy Does not exist

kinetic
Released (1.19.2-1ubuntu1.1)
lunar Not vulnerable
(1.19.8-1)
mantic Does not exist

trusty Ignored
(end of standard support)
upstream Needs triage

xenial Ignored
(end of standard support)
golang-1.20
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Not vulnerable
(1.20.3-1ubuntu0.1~20.04)
jammy Not vulnerable
(1.20.3-1ubuntu0.1~22.04)
kinetic Does not exist

lunar Not vulnerable
(1.20.1-1)
mantic Not vulnerable
(1.20.1-1)
trusty Ignored
(end of standard support)
upstream
Released (1.20.1-1)
xenial Ignored
(end of standard support)
golang-1.21
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Not vulnerable
(1.20.1-1)
jammy Not vulnerable
(1.20.1-1)
lunar Not vulnerable
(1.20.1-1)
mantic Not vulnerable
(1.20.1-1)
trusty Does not exist

upstream Not vulnerable
(1.20.1-1)
xenial Does not exist

golang-1.6
Launchpad, Ubuntu, Debian
bionic Does not exist

focal Does not exist

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Ignored
(end of standard support)
upstream Needs triage

xenial Needed

golang-1.8
Launchpad, Ubuntu, Debian
bionic Needed

focal Does not exist

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Does not exist

golang-1.9
Launchpad, Ubuntu, Debian
bionic Needed

focal Does not exist

jammy Does not exist

lunar Does not exist

mantic Does not exist

trusty Does not exist

upstream Needs triage

xenial Does not exist

Severity score breakdown

Parameter Value
Base score 7.5
Attack vector Network
Attack complexity Low
Privileges required None
User interaction None
Scope Unchanged
Confidentiality None
Integrity impact None
Availability impact High
Vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H