CVE-2022-49086

net: openvswitch: fix leak of nested actions

published February 26, 2025

CVSS
—
EPSS
0%
Percentile
17.5
In the wild
Unconfirmed
What it is

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 record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00266 · 17.5th percentile
Published
2025-02-26T01:54Z
EPSS history
Timeline
  • 26 FEB 01:54Z
    net: openvswitch: fix leak of nested actions
    cvelistv5