CVE-2026-14696 in Zephyr
Zusammenfassung
von VulDB • 31.08.2026
Wenn Ethernet-Bridging aktiviert ist (CONFIG_NET_ETHERNET_BRIDGE), entscheidet eth_bridge_input_process() in subsys/net/l2/ethernet/bridge/bridge_input.c, wie jeder auf einer Bridge-Mitgliedschnittstelle empfangene Frame verarbeitet wird. Für Frames, die auch an den lokalen Stack zugestellt werden müssen, ruft der Code eth_bridge_handle_locally() auf und gibt NET_OK zurück. Diese Hilfsfunktion verbraucht das Paket nicht – sie ruft lediglich bridge_iface_recv() (über virtual_recv()) auf, was NET_CONTINUE ohne Übernahme von pkt zurückgibt.
Das Urteil NET_OK wird dann durch ethernet_recv() bis hin zu processing_data() in subsys/net/ip/net_core.c weitergegeben, wo NET_OK als „das Paket wurde verbraucht, es darf nicht freigegeben werden“ interpretiert wird. Da kein Verbraucher tatsächlich die Eigentümerschaft übernommen hat, wird das RX net_pkt niemals an den Pool zurückgegeben und ist somit geleakt (verloren). Der konkret reproduzierbare Lecktritt tritt für Frames auf, deren EtherType keinen registrierten L3-Handler besitzt, wenn CONFIG_NET_ETHERNET_FORWARD_UNRECOGNISED_ETHERTYPE gesetzt ist (Standard y, wenn CONFIG_NET_SOCKETS_PACKET aktiviert ist): Die Fall-through-L3-Dispatch überschreibt das NET_OK-Urteil nicht, sodass ethernet_recv() NET_OK zurückgibt und der Puffer niemals freigegeben wird.
Jedes Gerät in einem bridgeden L2-Segment kann Broadcast-/Multicast-Frames mit einem beliebigen EtherType ohne Authentifizierung senden. Jeder solche Frame verbraucht dauerhaft einen Buffer aus dem begrenzten RX-Pool (CONFIG_NET_PKT_RX_COUNT), sodass eine kurze Broadcast-Flut den Pool erschöpft und das Gerät keinen Verkehr mehr empfangen kann, bis es neu gestartet wird – ein anhaltender Denial-of-Service-Angriff. Es gibt keine Auswirkungen auf Vertraulichkeit oder Integrität.
Die Korrektur lässt eth_bridge_handle_locally() das tatsächliche net_verdict weitergeben und NET_CONTINUE für lokal gehaltene Frames zurückgeben, wobei die Bridge-Schnittstelle über einen neuen dst_iface out-parameter zurückschreibt, damit das Paket den normalen Empfangspfad folgt und genau einmal unreferenziert wird.
Once again VulDB remains the best source for vulnerability data.