CVE-2024-49998

Siemens ProductCERT Advisory SSA-019113

Beschreibung

Im Linux-Kernel wurde folgende Schwachstelle behoben: net: dsa: Verbesserung des Herunterfahrsequenz Alexander Sverdlin stellt zwei Probleme beim Herunterfahren mit dem lan9303-Treiber fest. Eines ist spezifisch für lan9303 und das andere tritt zufällig dort auf. Das erste Problem besteht darin, dass lan9303 einzigartig unter den DSA-Treibern ist, da es dev_get_drvdata() zu "arbiträren Laufzeiten" aufruft (nicht bei Probe, nicht beim Herunterfahren, nicht bei Entfernen): phy_state_machine() -> ... -> dsa_user_phy_read() -> ds->ops->phy_read() -> lan9303_phy_read() -> chip->ops->phy_read() -> lan9303_mdio_phy_read() -> dev_get_drvdata() Wir stoppen jedoch nie die phy_state_machine(), sodass sie nach dsa_switch_shutdown() weiterlaufen kann. Unser gemeinsamer Muster in allen DSA-Treibern ist es, drvdata auf NULL zu setzen, um den anschließenden remove()-Aufruf zu unterdrücken. In diesem Fall würde dies jedoch zu einem NPD führen. Das zweite Problem besteht darin, dass die Art und Weise, wie wir dp->conduit->dsa_ptr = NULL; setzen, mit der Paketverarbeitung kollidiert. dsa_switch_rcv() überprüft einmal, ob dev->dsa_ptr NULL ist, aber danach wird dieser nicht-NULL-Wert nicht weiter verwendet, sondern dev->dsa_ptr wird ohne NULL-Überprüfungen wiederholt dereferenziert: in dsa_conduit_find_user() und vielen anderen Stellen. Zwischen den Dereferenzierungen gibt es keine Sperren, um sicherzustellen, dass das, was einmal gültig war, auch weiterhin gültig bleibt. Beide Probleme haben gemeinsam, dass das Schließen der Conduit-Schnittstelle sie löst. Im ersten Fall löst dev_close(conduit) den NETDEV_GOING_DOWN-Ereignis in dsa_user_netdevice_event() aus, was die Benutzerports ebenfalls schließt. dsa_port_disable_rt() ruft phylink_stop() auf, das synchron die phylink-State-Maschine stoppt, sodass ds->ops->phy_read() danach nicht mehr in den Treiber aufruft. Im zweiten Fall sollte dev_close(conduit) dies tun, wie im Dokument "Documentation/networking/driver.rst" beschrieben: | Quieszenz | ---------- | | Nach dem Aufruf der ndo_stop-Routine darf die Hardware keine Daten empfangen oder übertragen. Alle laufenden Pakete müssen abgebrochen werden. Wenn nötig, muss auf den Abschluss von Reset-Befehlen gewartet oder gepollt werden. Es sollte also ausreichen sicherzustellen, dass später, wenn wir conduit->dsa_ptr nullifizieren, keine gleichzeitige dsa_switch_rcv()-Aufruf auf diesem Conduit erfolgt. Die Hinzufügung der Funktion netif_device_detach() soll sicherstellen, dass IOCTLs, rtnetlinks und ethtool-Anfragen an den Benutzerports nicht mehr zum Treiber weitergeleitet werden - wir sind nicht mehr darauf vorbereitet, sie zu behandeln. Der Rennzustand existierte tatsächlich nicht, als der Commit 0650bf52b31f ("net: dsa: Kompatibilität mit Master, die sich bei Herunterfahren abmelden") erstmals dsa_switch_shutdown() einführte. Er wurde später erstellt, als wir aufgehört haben, die Benutzerschnittstellen an einem schlechten Ort zu de-registrieren und diesen Sequenz durch eine räuberische Nullifizierung von conduit->dsa_ptr ersetzt haben (eine, die nicht sicherstellt, dass die Schnittstellen nicht aktiv sind).

Metriken

Severity
medium
kein öffentlicher PoC bekannt
4.7
Quelle: nvd-v3
6.9 %
Niedrig — CVE gehört zu den unteren 10 % der heute bewerteten CVEs.
0.2 %
Niedrig — Modell schätzt < 1 % Ausnutzungs-Wahrscheinlichkeit.
Veröffentlicht
2021-09-26 00:00 UTC

Betroffene Betriebssysteme

  • linux

    amazon / amazon_linux

  • linux

    ubuntu / awsbionic

  • linux

    ubuntu / awsjammy

  • linux

    ubuntu / awsnoble

  • linux

    ubuntu / awsresolute

  • linux

    ubuntu / awsxenial

  • linux

    ubuntu / aws-6.8jammy

  • linux

    ubuntu / aws-hwexenial

  • linux

    ubuntu / azurejammy

  • linux

    ubuntu / azurenoble

  • linux

    ubuntu / azureresolute

  • linux

    ubuntu / azurexenial

  • linux

    ubuntu / azure-4.15bionic

  • linux

    suse / basesystem_module15

  • linux

    debian / debian_linux11.0

  • linux

    debian / debian_linux12.0

  • linux

    debian / debian_linux13.0

  • linux

    suse / development_tools_module15

  • linux

    redhat / enterprise_linux10.0

  • linux

    redhat / enterprise_linux7.0

  • linux

    redhat / enterprise_linux8.0

  • linux

    redhat / enterprise_linux9.0

  • linux

    redhat / enterprise_linux_aus8.4

  • linux

    redhat / enterprise_linux_aus8.6

Betroffene Produkte

Aus der Hersteller-/CERT-Meldung extrahierte Produkte und Versionsbereiche. Ein Version-Range wie „<4.14.6“ impliziert die Update-Empfehlung „auf 4.14.6 oder höher aktualisieren“.

  • arista

    cloudvision_agni2024.4.0 – 2025.2.2

  • arista

    cloudvision_portal2024.2.0 – 2026.1.0

  • arista

    velocloud_edge4.5.0 – 6.4.1

  • arista

    velocloud_gateway

  • arista

    velocloud_orchestrator

  • canonical

    ubuntu_linux

  • Citrix Systems

    Hypervisor8.2 CU1 LTSR

  • Citrix Systems

    XenServer8.4

  • Dell

    ECS3.8.1.0-3.8.1.7

  • Dell

    NetWorkerVirtual Edition

  • Dell

    NetWorkervProxy 19.13.0.3

  • Dell

    NetWorkervProxy 19.14

  • Dell

    PowerScale OneFS13.2.3

  • Dell

    PowerScale OneFSOneFS

  • Dell

    Secure Connect GatewayAppliance 5.32.00.18

  • gnupg

    libgcrypt1.11.0 – 1.11.3

  • gnupg

    libgcrypt1.12.0 – 1.12.2

  • gnupg

    libgcrypt1.8.8 – 1.10.4

  • Intel

    ProzessorCore Ultra 5

  • Intel

    ProzessorCore Ultra 7

  • Intel

    ProzessorCore Ultra 9

  • julia

    openssh_jll

  • netapp

    active_iq_unified_manager

  • netapp

    clustered_data_ontap

Quellen & Referenzen

Verknüpfte CVEs

406 weitere CVEs anzeigen
IDCVE-2024-49998
Siemens ProductCERT Advisory SSA-019113 — CVE-2024-49998 | NEOSEC Intel