CVE-2026-99166 in Linuxinfo

Zusammenfassung

von VulDB • 29.10.2026

Im Linux-Kernel wurde folgende Schwachstelle behoben:

net: rds: Behebung der Dereferenzierung einer nicht initialisierten Variable „trans“ im CM-Ereignishandler

rds_rdma_cm_event_handler_cmn() weist trans nur dann zu, wenn das RDMA-Gerät eine InfiniBand CA (RDMA_NODE_IB_CA) ist. Bei jedem anderen Gerätetyp, z. B. einer iWARP RNIC wie siw, bleibt trans nicht initialisiert, wird jedoch im Ereignis-Switch bedingungslos dereferenziert: unbedingterweise im Fall RDMA_CM_EVENT_CONNECT_REQUEST über trans->cm_handle_connect(), und (mit einem Verbindungskontext) in den Fällen ROUTE_RESOLVED und ESTABLISHED.

Ein RDS-Listener auf einem iWARP-Gerät stürzt daher den Kernel ab, sobald eine Verbindungsanfrage eingeht: Bei CONFIG_INIT_STACK_ALL_ZERO wird die wilde Ladeoperation zu einer NULL-Dereferenzierung an Offset 0xa0 (&trans->cm_handle_connect) im iw_cm_wq-Arbeitswarteschlangen-Thread.

GCC maskiert den Fehler in Standard-Builds, indem er die nicht initialisierte Ladeoperation mit &rds_ib_transport zusammenfasst; Kernel, die mit Clang erstellt wurden, nehmen den tatsächlichen Pfad der Nichtinitialisierung und verursachen einen Oops (Kernel-Panic).

Die aktive Seite kann ebenfalls auf einem Nicht-IB-Gerät landen: Die von rds_ib_conn_path_connect() erstellte ID ist nicht auf einen Knotentyp beschränkt, daher bindet rdma_resolve_addr() sie an das Gerät, das die lokale Adresse bedient, und eine iWARP RNIC im selben netdev qualifiziert sich. Der Absturz dort ist anders: Das Auflösen einer Route auf einer iWARP-ID füllt cm_id->route.path_rec niemals aus, und der ROUTE_RESOLVED-Fall schreibt path_rec[0].sl, bevor er in den Transport aufruft.

Der iWARP-Transport wurde vor langer Zeit entfernt, und IB ist der einzige verbliebene Transport; daher wird dies explizit gemacht: trans wird bei der Deklaration mit &rds_ib_transport initialisiert, die bedingte Zuweisung wird entfernt, eine Verbindungsanfrage, die auf einem Nicht-IB-Gerät eingeht, wird abgelehnt, und eine Verbindung, deren Adresse sich zu einem solchen aufgelöst hat, wird getrennt, anstatt eine Route darauf aufzulösen. Die Ablehnung ist absichtlich nur auf RDMA_CM_EVENT_CONNECT_REQUEST beschränkt: Ein nicht-null Rückgabewert des Handlers bewirkt, dass rdma_cm die ID zerstört, auf der das Ereignis übermittelt wurde; dies ist korrekt für die frisch erstellte ID der Anfrage, würde jedoch eine Verbindungs-ID freigeben, die RDS noch besitzt, bei jedem anderen Ereignis. Auf der aktiven Seite bleibt die ID ic->i_cm_id und die Shutdown-Verbindung der Verbindung zerstört sie, daher gibt dieser Fall 0 zurück.

[achender: Nur auf RDMA_CM_EVENT_CONNECT_REQUEST ablehnen statt für jedes Ereignis auf einem Nicht-IB-Gerät abzubrechen, damit rdma_cm keine Verbindungs-IDs zerstört, die RDS noch verfolgt; eine Verbindung trennen, deren Adresse sich zu einem Nicht-IB-Gerät aufgelöst hat, bevor eine Route darauf aufgelöst wird; Changelog angepasst]

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

Zuständig

Linux

Reservieren

25.09.2026

Veröffentlichung

28.10.2026

Moderieren

akzeptiert

Eintrag

VDB-427909

EPSS

0.00000

KEV

nein

Aktivitäten

very low

Quellen

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!