Der Fehler: Ein optionaler Wert wird vorausgesetzt
CVE-2024-26855 betrifft ice_bridge_setlink() im Intel-ice-Netzwerktreiber. Die Funktion sucht in einer Netlink-Nachricht nach dem Bridge-Attribut IFLA_AF_SPEC. Fehlt dieses Attribut, kann nlmsg_find_attr() NULL zurückgeben. Der verwundbare Pfad übergab das Ergebnis an die Iteration über verschachtelte Attribute, ohne es zuvor zu prüfen.
Die entscheidende Prüffrage betrifft den Vertrag zwischen zwei Operationen: Garantiert die Suche ein Objekt oder liefert sie ein optionales Ergebnis? Dass eine Nachricht den Handler erreicht, beweist nicht, dass jedes später erwartete Attribut vorhanden ist.
Die Korrektur: Vor der Verwendung prüfen
Die akzeptierte Korrektur prüft br_spec unmittelbar nach der Suche und gibt bei fehlendem Attribut -EINVAL zurück. So wird der ungültige Wert vor der Iteration abgefangen. Der folgende Ausschnitt zeigt diese Prüfung; er ist kein eigenständiges Programm zur Reproduktion.
Die Prüfung am Übergang macht die Annahme für den nächsten Leser sichtbar. Die Implementierung stellt nun die Voraussetzung her, auf die die folgende Operation angewiesen ist.
if (!br_spec)
return -EINVAL;Was sollte ein Code-Review prüfen?
Verfolgen Sie jede Suche mit optionalem Ergebnis bis zu dessen erster Verwendung. Prüfen Sie fehlende Felder, leere Sammlungen und fehlerhafte Eingaben getrennt vom normalen Pfad. Klären Sie, ob eine Hilfsfunktion Fehler durch NULL, einen Fehlerwert oder einen eigenen Status meldet. Kontrollieren Sie anschließend, ob alle Aufrufer diesen Vertrag berücksichtigen.
Ein hilfreicher Regressionstest durchläuft den Pfad ohne Attribut und prüft den vorgesehenen Fehlerwert. Ein Test mit ausschließlich vollständig ausgefüllten Nachrichten kann bestehen und trotzdem die ursprüngliche Annahme ungeprüft lassen.
Die Bedeutung für Softwareverantwortliche
Dies ist ein klar abgegrenzter Fehler auf Code-Ebene mit einer konkreten Korrektur. Dasselbe Prüfmuster ist für Anwendungsparser, Protokollhandler und Konfigurationslader relevant: Optionale Daten bleiben optional, bis sie geprüft wurden.
Für ein installiertes Linux-System sind der aktuelle CVE-Eintrag und die Paketmeldung des Distributors maßgeblich. Zurückportierte Korrekturen machen den Paketstatus aussagekräftiger als einen oberflächlichen Vergleich mit der Upstream-Version. Eine gezielte Prüfung Ihres eigenen Codes kann diese Verträge über die Komponenten hinweg verfolgen, die nicht vertrauenswürdige Eingaben verarbeiten.
Quellen
Schwachstelleneintrag
CVE-2024-26855Diese Art von Prüfung besprechen
Leistungen