Linux: netfilter: nft_flow_offload: drop flowtable reference on init error path
What fixes it
- 1d27214fd9a4d2c0c6d998fc9d4fb61448a3438eLinuxCVE List
- 64ac0cb574c740bf723affb79b646eeba920db6bLinuxCVE List
- 4cd378423a33194a773c267fc58606d28fce95cfLinuxCVE List
- 747928b5d4ff8c8de55138a54c13980e4bb88578LinuxCVE List
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nft_flow_offload: drop flowtable reference on init error path
nft_flow_offload_init() bumps the flowtable use count with nft_use_inc() before calling nf_ct_netns_get(). When the latter fails, the error is returned as-is and the reference is leaked.
The upper layers do not balance it either: nf_tables_newexpr() clears expr->ops when the expression init callback fails, so the nft_expr_more() iteration in nft_rule_expr_deactivate() and nf_tables_rule_destroy() stops right before the failed expression and its ->destroy callback, which would drop the reference, never runs.
Each failed rule addition therefore leaks one flowtable reference and the flowtable can no longer be removed: NFT_MSG_DELFLOWTABLE keeps reporting -EBUSY even though no rule references it.
Save the nf_ct_netns_get() return value and undo the nft_use_inc() when it fails, restoring the inc/dec pairing within nft_flow_offload_init() itself.
Text from CVE List
Affected versions 12
- Linuxaffected: a3c90f7a2323b331ae816d5b0633e68148e25d04 before 1d27214fd9a4d2c0c6d998fc9d4fb61448a3438eCVE List
- Linuxaffected: a3c90f7a2323b331ae816d5b0633e68148e25d04 before 64ac0cb574c740bf723affb79b646eeba920db6bCVE List
- Linuxaffected: a3c90f7a2323b331ae816d5b0633e68148e25d04 before c5f91098edee98c015f78488460a0609e62582a5CVE List
- Linuxaffected: a3c90f7a2323b331ae816d5b0633e68148e25d04 before 4cd378423a33194a773c267fc58606d28fce95cfCVE List
- Linuxaffected: a3c90f7a2323b331ae816d5b0633e68148e25d04 before 747928b5d4ff8c8de55138a54c13980e4bb88578CVE List
- Linuxaffected: 4.16CVE List
- Linuxunaffected: all versions before 4.16CVE List
- Linuxunaffected: 6.6.160 through 6.6.*CVE List
- Linuxunaffected: 6.12.113 through 6.12.*CVE List
- Linuxunaffected: 6.18.56 through 6.18.*CVE List
- Linuxunaffected: 7.2.10 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 5
- git.kernel.org/stable/c/1d27214fd9a4d2c0c6d998fc9d4fb61448a3438eReferencevia CVE List
- git.kernel.org/stable/c/64ac0cb574c740bf723affb79b646eeba920db6bReferencevia CVE List
- git.kernel.org/stable/c/c5f91098edee98c015f78488460a0609e62582a5Referencevia CVE List
- git.kernel.org/stable/c/4cd378423a33194a773c267fc58606d28fce95cfReferencevia CVE List
- git.kernel.org/stable/c/747928b5d4ff8c8de55138a54c13980e4bb88578Referencevia CVE List