Lucene search

K
vulnrichmentLinuxVULNRICHMENT:CVE-2021-47482
HistoryMay 22, 2024 - 8:19 a.m.

CVE-2021-47482 net: batman-adv: fix error handling

2024-05-2208:19:34
Linux
github.com
4
linux kernel
vulnerability resolved
odebug warning
error handling
batman-adv
syzbot
gpf
bug fix
memory cleanup

AI Score

6.9

Confidence

Low

EPSS

0

Percentile

13.0%

SSVC

Exploitation

none

Automatable

no

Technical Impact

partial

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

net: batman-adv: fix error handling

Syzbot reported ODEBUG warning in batadv_nc_mesh_free(). The problem was
in wrong error handling in batadv_mesh_init().

Before this patch batadv_mesh_init() was calling batadv_mesh_free() in case
of any batadv_*_init() calls failure. This approach may work well, when
there is some kind of indicator, which can tell which parts of batadv are
initialized; but there isn’t any.

All written above lead to cleaning up uninitialized fields. Even if we hide
ODEBUG warning by initializing bat_priv->nc.work, syzbot was able to hit
GPF in batadv_nc_purge_paths(), because hash pointer in still NULL. [1]

To fix these bugs we can unwind batadv_init() calls one by one.
It is good approach for 2 reasons: 1) It fixes bugs on error handling
path 2) It improves the performance, since we won’t call unneeded
batadv
_free() functions.

So, this patch makes all batadv_init() clean up all allocated memory
before returning with an error to no call correspoing batadv
_free()
and open-codes batadv_mesh_free() with proper order to avoid touching
uninitialized fields.

ADP Affected

[
  {
    "cpes": [
      "cpe:2.3:a:linux:kernel:*:*:*:*:*:*:*:*"
    ],
    "vendor": "linux",
    "product": "kernel",
    "versions": [
      {
        "status": "affected",
        "version": "c6c8fea29769",
        "lessThan": "6f68cd634856",
        "versionType": "custom"
      }
    ],
    "defaultStatus": "unknown"
  }
]

AI Score

6.9

Confidence

Low

EPSS

0

Percentile

13.0%

SSVC

Exploitation

none

Automatable

no

Technical Impact

partial