CVE-2025-21823 json
batman-adv: Drop unmanaged ELP metric worker
published 2025-02-27 20 mo ago modified 2026-08-05 3 mo ago also EUVD-2025-5979
- cvss
- 7.8
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 15%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
batman-adv: Drop unmanaged ELP metric worker
The ELP worker needs to calculate new metric values for all neighbors "reachable" over an interface. Some of the used metric sources require locks which might need to sleep. This sleep is incompatible with the RCU list iterator used for the recorded neighbors. The initial approach to work around of this problem was to queue another work item per neighbor and then run this in a new context.
Even when this solved the RCU vs might_sleep() conflict, it has a major problems: Nothing was stopping the work item in case it is not needed anymore - for example because one of the related interfaces was removed or the batman-adv module was unloaded - resulting in potential invalid memory accesses.
Directly canceling the metric worker also has various problems:
* cancel_work_sync for a to-be-deactivated interface is called with rtnl_lock held. But the code in the ELP metric worker also tries to use rtnl_lock() - which will never return in this case. This also means that cancel_work_sync would never return because it is waiting for the worker to finish. * iterating over the neighbor list for the to-be-deactivated interface is currently done using the RCU specific methods. Which means that it is possible to miss items when iterating over it without the associated spinlock - a behaviour which is acceptable for a periodic metric check but not for a cleanup routine (which must "stop" all still running workers)
The better approch is to get rid of the per interface neighbor metric worker and handle everything in the interface worker. The original problems are solved by:
* creating a list of neighbors which require new metric information inside the RCU protected context, gathering the metric according to the new list outside the RCU protected context * only use rcu_trylock inside metric gathering code to avoid a deadlock when the cancel_delayed_work_sync is called in the interface removal code (which is called with the rtnl_lock held)
Patch / fix
- Linux Linux 5.4.291, 5.10.235, 5.15.179, 6.1.129, 6.6.79, 6.12.16, 6.13.4, 6.14
- linux Debian 12 6.1.129-1
- linux Debian 14, Debian 13 6.12.16-1
debian advisories DEBIAN-CVE-2025-21823
- linux Ubuntu 20.04 LTS 5.4.0-216.236
- linux Ubuntu 22.04 LTS 5.15.0-140.150
- linux Ubuntu 24.04 LTS 6.8.0-78.78
- linux-aws Ubuntu 20.04 LTS 5.4.0-1146.156
- linux-aws Ubuntu 22.04 LTS 5.15.0-1084.91
- linux-aws Ubuntu 24.04 LTS 6.8.0-1035.37
- linux-gcp Ubuntu 20.04 LTS 5.4.0-1149.158
- linux-gcp Ubuntu 22.04 LTS 5.15.0-1083.92
ubuntu advisories UBUNTU-CVE-2025-21823
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-coco SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.21.coco15sp6.1
- kernel-syms-coco SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.21.coco15sp6.1
- kernel-coco_debug SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.21.coco15sp6.1
- kernel-source-coco SLE Module for Confidential Computing Technical Preview 15 SP6 6.4.0-15061.21.coco15sp6.1
- kernel-source Linux Micro 6.1, Linux Micro 6.0 6.4.0-28.1
- kernel-default Linux Micro 6.1, Linux Micro 6.0 6.4.0-28.1
- kernel-kvmsmall Linux Micro 6.1, Linux Micro 6.0 6.4.0-28.1
- kernel-default-base Linux Micro 6.1, Linux Micro 6.0 6.4.0-28.1.21.6
suse advisories SUSE-SU-2025:01919-1SUSE-SU-2025:20192-1SUSE-SU-2025:20270-1SUSE-SU-2025:20190-1SUSE-SU-2025:20260-1SUSE-SU-2025:1180-1
- git.kernel.org/stable/c/1c334629176c2d644befc31a20d4bf75542f7631 commit
- git.kernel.org/stable/c/a0019971f340ae02ba54cf1861f72da7e03e6b66 commit
- git.kernel.org/stable/c/3c0e0aecb78cb2a2ca1dc701982d08fedb088dc6 commit
- git.kernel.org/stable/c/781a06fd265a8151f7601122d9c2e985663828ff commit
- git.kernel.org/stable/c/a7aa2317285806640c844acd4cd2cd768e395264 commit
- git.kernel.org/stable/c/0fdc3c166ac17b26014313fa2b93696354511b24 commit
- git.kernel.org/stable/c/af264c2a9adc37f4bdf88ca7f3affa15d8c7de9e commit
- git.kernel.org/stable/c/8c8ecc98f5c65947b0070a24bac11e12e47cc65d commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-21823 updated
kernel: batman-adv: Drop unmanaged ELP metric worker
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.24% chance of exploitation in the next 30 days, higher than 15% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| NVD | 3.1 | 5.5 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected products
- Linux Linux
Classification
- Technology feeds
References
-
git.kernel.org
/stable/c/1c334629176c2d644befc31a20d4bf75542f7631
patch
-
git.kernel.org
/stable/c/a0019971f340ae02ba54cf1861f72da7e03e6b66
patch
-
git.kernel.org
/stable/c/3c0e0aecb78cb2a2ca1dc701982d08fedb088dc6
patch
-
git.kernel.org
/stable/c/781a06fd265a8151f7601122d9c2e985663828ff
patch
-
git.kernel.org
/stable/c/a7aa2317285806640c844acd4cd2cd768e395264
patch
-
git.kernel.org
/stable/c/0fdc3c166ac17b26014313fa2b93696354511b24
patch
-
git.kernel.org
/stable/c/af264c2a9adc37f4bdf88ca7f3affa15d8c7de9e
patch
-
git.kernel.org
/stable/c/8c8ecc98f5c65947b0070a24bac11e12e47cc65d
patch
- lists.debian.org /debian-lts-announce/2025/05/msg00030.html
- lists.debian.org /debian-lts-announce/2025/03/msg00028.html
Sources
- CVE List CVE-2025-21823
- NVD CVE-2025-21823
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.