CVE-2022-49086
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
26/02/2025
Last modified:
23/09/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
net: openvswitch: fix leak of nested actions<br />
<br />
While parsing user-provided actions, openvswitch module may dynamically<br />
allocate memory and store pointers in the internal copy of the actions.<br />
So this memory has to be freed while destroying the actions.<br />
<br />
Currently there are only two such actions: ct() and set(). However,<br />
there are many actions that can hold nested lists of actions and<br />
ovs_nla_free_flow_actions() just jumps over them leaking the memory.<br />
<br />
For example, removal of the flow with the following actions will lead<br />
to a leak of the memory allocated by nf_ct_tmpl_alloc():<br />
<br />
actions:clone(ct(commit),0)<br />
<br />
Non-freed set() action may also leak the &#39;dst&#39; structure for the<br />
tunnel info including device references.<br />
<br />
Under certain conditions with a high rate of flow rotation that may<br />
cause significant memory leak problem (2MB per second in reporter&#39;s<br />
case). The problem is also hard to mitigate, because the user doesn&#39;t<br />
have direct control over the datapath flows generated by OVS.<br />
<br />
Fix that by iterating over all the nested actions and freeing<br />
everything that needs to be freed recursively.<br />
<br />
New build time assertion should protect us from this problem if new<br />
actions will be added in the future.<br />
<br />
Unfortunately, openvswitch module doesn&#39;t use NLA_F_NESTED, so all<br />
attributes has to be explicitly checked. sample() and clone() actions<br />
are mixing extra attributes into the user-provided action list. That<br />
prevents some code generalization too.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.3 (including) | 4.19.249 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.200 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.111 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.34 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 5.16.20 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.17 (including) | 5.17.3 (excluding) |
| cpe:2.3:o:linux:linux_kernel:5.18:rc1:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/1f30fb9166d4f15a1aa19449b9da871fe0ed4796
- https://git.kernel.org/stable/c/3554c214b83ec9a839ed574263a34218f372990c
- https://git.kernel.org/stable/c/53bce9d19b0a9d245b25cd050b81652ed974a509
- https://git.kernel.org/stable/c/5ae05b5eb58773cfec307ff88aff4cfd843c4cff
- https://git.kernel.org/stable/c/7438dc55c0709819b813f4778aec2c48b782990b
- https://git.kernel.org/stable/c/837b96d8103938e35e7d92cd9db96af914ca4fff
- https://git.kernel.org/stable/c/ef6f9ce0a79aa23b10fc5f3b3cab3814a25aac40



