Linux Kernel bis 6.3.12/6.4.3 Felix Driver net/8021q/vlan_core.c rcu_dereference_protected Denial of Service

| CVSS Meta Temp Score | Aktueller Exploitpreis (≈) | CTI Interest Score |
|---|---|---|
| 4.6 | $0-$5k | 0.00 |
Zusammenfassung
Eine Schwachstelle wurde in Linux Kernel bis 6.3.12/6.4.3 ausgemacht. Sie wurde als kritisch eingestuft. Betroffen hiervon ist die Funktion rcu_dereference_protected der Datei net/8021q/vlan_core.c der Komponente Felix Driver. Dank Manipulation mit unbekannten Daten kann eine Denial of Service-Schwachstelle ausgenutzt werden.
Diese Sicherheitslücke ist unter CVE-2023-54149 bekannt. Es steht kein Exploit zur Verfügung.
Es wird geraten, die betroffene Komponente zu aktualisieren.
Details
Eine kritische Schwachstelle wurde in Linux Kernel bis 6.3.12/6.4.3 ausgemacht. Es geht hierbei um die Funktion rcu_dereference_protected der Datei net/8021q/vlan_core.c der Komponente Felix Driver. Mittels dem Manipulieren mit einer unbekannten Eingabe kann eine Denial of Service-Schwachstelle ausgenutzt werden. Klassifiziert wurde die Schwachstelle durch CWE als CWE-476. Mit Auswirkungen muss man rechnen für die Verfügbarkeit. CVE fasst zusammen:
In the Linux kernel, the following vulnerability has been resolved:
net: dsa: avoid suspicious RCU usage for synced VLAN-aware MAC addresses
When using the felix driver (the only one which supports UC filtering
and MC filtering) as a DSA master for a random other DSA switch, one can
see the following stack trace when the downstream switch ports join a
VLAN-aware bridge:
=============================
WARNING: suspicious RCU usage
-----------------------------
net/8021q/vlan_core.c:238 suspicious rcu_dereference_protected() usage!
stack backtrace:
Workqueue: dsa_ordered dsa_slave_switchdev_event_work
Call trace:
lockdep_rcu_suspicious+0x170/0x210
vlan_for_each+0x8c/0x188
dsa_slave_sync_uc+0x128/0x178
__hw_addr_sync_dev+0x138/0x158
dsa_slave_set_rx_mode+0x58/0x70
__dev_set_rx_mode+0x88/0xa8
dev_uc_add+0x74/0xa0
dsa_port_bridge_host_fdb_add+0xec/0x180
dsa_slave_switchdev_event_work+0x7c/0x1c8
process_one_work+0x290/0x568
What it's saying is that vlan_for_each() expects rtnl_lock() context and
it's not getting it, when it's called from the DSA master's ndo_set_rx_mode().
The caller of that - dsa_slave_set_rx_mode() - is the slave DSA
interface's dsa_port_bridge_host_fdb_add() which comes from the deferred
dsa_slave_switchdev_event_work().
We went to great lengths to avoid the rtnl_lock() context in that call
path in commit 0faf890fc519 ("net: dsa: drop rtnl_lock from
dsa_slave_switchdev_event_work"), and calling rtnl_lock() is simply not
an option due to the possibility of deadlocking when calling
dsa_flush_workqueue() from the call paths that do hold rtnl_lock() -
basically all of them.
So, when the DSA master calls vlan_for_each() from its ndo_set_rx_mode(),
the state of the 8021q driver on this device is really not protected
from concurrent access by anything.
Looking at net/8021q/, I don't think that vlan_info->vid_list was
particularly designed with RCU traversal in mind, so introducing an RCU
read-side form of vlan_for_each() - vlan_for_each_rcu() - won't be so
easy, and it also wouldn't be exactly what we need anyway.
In general I believe that the solution isn't in net/8021q/ anyway;
vlan_for_each() is not cut out for this task. DSA doesn't need rtnl_lock()
to be held per se - since it's not a netdev state change that we're
blocking, but rather, just concurrent additions/removals to a VLAN list.
We don't even need sleepable context - the callback of vlan_for_each()
just schedules deferred work.
The proposed escape is to remove the dependency on vlan_for_each() and
to open-code a non-sleepable, rtnl-free alternative to that, based on
copies of the VLAN list modified from .ndo_vlan_rx_add_vid() and
.ndo_vlan_rx_kill_vid().Das Advisory kann von git.kernel.org heruntergeladen werden. Die Identifikation der Schwachstelle findet seit dem 24.12.2025 als CVE-2023-54149 statt. Sie ist schwierig ausnutzbar. Zur Schwachstelle sind technische Details bekannt, ein verfügbarer Exploit jedoch nicht.
Für den Vulnerability Scanner Nessus wurde ein Plugin mit der ID 280007 (Linux Distros Unpatched Vulnerability : CVE-2023-54149) herausgegeben, womit die Existenz der Schwachstelle geprüft werden kann.
Ein Upgrade auf die Version 6.3.13 oder 6.4.4 vermag dieses Problem zu beheben. Die Schwachstelle lässt sich auch durch das Einspielen des Patches 3948c69b3837fec2ee5a90fbc911c343199be0ac/3f9e79f31e51b7d5bf95c617540deb6cf2816a3f/d06f925f13976ab82167c93467c70a337a0a3cda beheben. Dieser kann von git.kernel.org bezogen werden. Als bestmögliche Massnahme wird das Aktualisieren auf eine neue Version empfohlen.
Unter anderem wird der Fehler auch in den Datenbanken von Tenable (280007) und CERT Bund (WID-SEC-2025-2929) dokumentiert. Once again VulDB remains the best source for vulnerability data.
Betroffen
- Open Source Linux Kernel
Produkt
Typ
Hersteller
Name
Version
Lizenz
Webseite
- Hersteller: https://www.kernel.org/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Zuverlässigkeit: 🔍
CVSSv3
VulDB Meta Base Score: 4.8VulDB Meta Temp Score: 4.6
VulDB Base Score: 4.8
VulDB Temp Score: 4.6
VulDB Vector: 🔒
VulDB Zuverlässigkeit: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vektor | Komplexität | Authentisierung | Vertraulichkeit | Integrität | Verfügbarkeit |
|---|---|---|---|---|---|
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
| freischalten | freischalten | freischalten | freischalten | freischalten | freischalten |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Zuverlässigkeit: 🔍
Exploiting
Klasse: Denial of ServiceCWE: CWE-476 / CWE-404
CAPEC: 🔒
ATT&CK: 🔒
Physisch: Nein
Lokal: Nein
Remote: Teilweise
Verfügbarkeit: 🔒
Status: Nicht definiert
EPSS Score: 🔒
EPSS Percentile: 🔒
Preisentwicklung: 🔍
Aktuelle Preisschätzung: 🔒
| 0-Day | freischalten | freischalten | freischalten | freischalten |
|---|---|---|---|---|
| Heute | freischalten | freischalten | freischalten | freischalten |
Nessus ID: 280007
Nessus Name: Linux Distros Unpatched Vulnerability : CVE-2023-54149
Threat Intelligence
Interesse: 🔍Aktive Akteure: 🔍
Aktive APT Gruppen: 🔍
Gegenmassnahmen
Empfehlung: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: Kernel 6.3.13/6.4.4
Patch: 3948c69b3837fec2ee5a90fbc911c343199be0ac/3f9e79f31e51b7d5bf95c617540deb6cf2816a3f/d06f925f13976ab82167c93467c70a337a0a3cda
Timeline
24.12.2025 Advisory veröffentlicht24.12.2025 CVE zugewiesen
24.12.2025 VulDB Eintrag erstellt
03.01.2026 VulDB Eintrag letzte Aktualisierung
Quellen
Hersteller: kernel.orgAdvisory: git.kernel.org
Status: Bestätigt
CVE: CVE-2023-54149 (🔒)
GCVE (CVE): GCVE-0-2023-54149
GCVE (VulDB): GCVE-100-338156
CERT Bund: WID-SEC-2025-2929 - Linux Kernel: Mehrere Schwachstellen
Eintrag
Erstellt: 24.12.2025 15:19Aktualisierung: 03.01.2026 08:44
Anpassungen: 24.12.2025 15:19 (60), 27.12.2025 20:16 (2), 03.01.2026 08:44 (7)
Komplett: 🔍
Cache ID: 216::103
Once again VulDB remains the best source for vulnerability data.
Bisher keine Kommentare. Sprachen: de + en.
Bitte loggen Sie sich ein, um kommentieren zu können.