lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <2025022657-CVE-2022-49086-a289@gregkh>
Date: Wed, 26 Feb 2025 02:54:51 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-cve-announce@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: CVE-2022-49086: net: openvswitch: fix leak of nested actions

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

net: openvswitch: fix leak of nested actions

While parsing user-provided actions, openvswitch module may dynamically
allocate memory and store pointers in the internal copy of the actions.
So this memory has to be freed while destroying the actions.

Currently there are only two such actions: ct() and set().  However,
there are many actions that can hold nested lists of actions and
ovs_nla_free_flow_actions() just jumps over them leaking the memory.

For example, removal of the flow with the following actions will lead
to a leak of the memory allocated by nf_ct_tmpl_alloc():

  actions:clone(ct(commit),0)

Non-freed set() action may also leak the 'dst' structure for the
tunnel info including device references.

Under certain conditions with a high rate of flow rotation that may
cause significant memory leak problem (2MB per second in reporter's
case).  The problem is also hard to mitigate, because the user doesn't
have direct control over the datapath flows generated by OVS.

Fix that by iterating over all the nested actions and freeing
everything that needs to be freed recursively.

New build time assertion should protect us from this problem if new
actions will be added in the future.

Unfortunately, openvswitch module doesn't use NLA_F_NESTED, so all
attributes has to be explicitly checked.  sample() and clone() actions
are mixing extra attributes into the user-provided action list.  That
prevents some code generalization too.

The Linux kernel CVE team has assigned CVE-2022-49086 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 4.19.249 with commit 7438dc55c0709819b813f4778aec2c48b782990b
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.4.200 with commit ef6f9ce0a79aa23b10fc5f3b3cab3814a25aac40
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.10.111 with commit 5ae05b5eb58773cfec307ff88aff4cfd843c4cff
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.15.34 with commit 837b96d8103938e35e7d92cd9db96af914ca4fff
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.16.20 with commit 3554c214b83ec9a839ed574263a34218f372990c
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.17.3 with commit 53bce9d19b0a9d245b25cd050b81652ed974a509
	Issue introduced in 4.3 with commit 34ae932a40369be6bd6ea97d66b6686361b4370d and fixed in 5.18 with commit 1f30fb9166d4f15a1aa19449b9da871fe0ed4796

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2022-49086
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	net/openvswitch/flow_netlink.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/7438dc55c0709819b813f4778aec2c48b782990b
	https://git.kernel.org/stable/c/ef6f9ce0a79aa23b10fc5f3b3cab3814a25aac40
	https://git.kernel.org/stable/c/5ae05b5eb58773cfec307ff88aff4cfd843c4cff
	https://git.kernel.org/stable/c/837b96d8103938e35e7d92cd9db96af914ca4fff
	https://git.kernel.org/stable/c/3554c214b83ec9a839ed574263a34218f372990c
	https://git.kernel.org/stable/c/53bce9d19b0a9d245b25cd050b81652ed974a509
	https://git.kernel.org/stable/c/1f30fb9166d4f15a1aa19449b9da871fe0ed4796

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ