Belkin Wemo Smart Plug V2 – der Pufferüberlauf, der nicht gepatcht werden kann

Belkin Wemo Smart Plug V2 – der Pufferüberlauf, der nicht gepatcht werden kann

Quellknoten: 2657924

Forscher des IoT-Sicherheitsunternehmens Sternum Gruben sich in ein beliebter Netzstecker für die Hausautomation der bekannten Gerätemarke Belkin.

Das Modell, das sie sich angesehen haben, das Wemo Mini Smart Plug (F7C063) scheint sich dem Ende ihrer Haltbarkeitsdauer zu nähern, aber wir haben viele davon online zum Verkauf gefunden, zusammen mit detaillierten Ratschlägen und Anweisungen auf der Website von Belkin, wie man sie aufstellt.

So alt sie auch sein mögen (im kurzfristigen modernen Sinne), stellten die Forscher Folgendes fest:

Unser anfängliches Interesse an dem Gerät entstand, weil mehrere davon in unserem Labor herumlagen und bei uns zu Hause verwendet wurden. Deshalb wollten wir einfach sehen, wie sicher (oder nicht) sie in der Anwendung waren. [… Dies scheint ein ziemlich beliebtes Verbrauchergerät zu sein[; Basierend auf diesen Zahlen kann man mit Sicherheit davon ausgehen, dass die Gesamtverkäufe allein auf Amazon Hunderttausende betragen dürften.

Einfach ausgedrückt: Es gibt viele Leute da draußen, die diese Dinge bereits gekauft und angeschlossen haben und sie jetzt zur Steuerung der Steckdosen in ihren Häusern verwenden.

Ein „intelligenter Stecker“, einfach ausgedrückt, ist eine Steckdose, die Sie in eine vorhandene Wandsteckdose einstecken und die einen WLAN-gesteuerten Schalter zwischen der Netzsteckdose an der Vorderseite der Steckdose und einer identisch aussehenden Netzsteckdose an der Wand schaltet Vorderseite des Smart Plugs. Stellen Sie sich das wie einen Netzadapter vor, der, anstatt beispielsweise eine runde Euro-Steckdose in eine dreieckige UK-Steckdose umzuwandeln, beispielsweise eine manuell geschaltete US-Steckdose in eine elektronisch geschaltete US-Steckdose umwandelt, die über eine App ferngesteuert werden kann eine Web-Schnittstelle.

Das S im IoT…

Das Problem bei vielen sogenannten Internet-of-Things-Geräten (IoT), wie ein alter Witz sagt, besteht darin, dass der Buchstabe „S“ in „IoT“ für Sicherheit steht …

…was natürlich bedeutet, dass es oft nicht so viel Cybersicherheit gibt, wie man erwarten würde, oder überhaupt nicht.

Wie Sie sich vorstellen können, könnte ein unsicheres Hausautomationsgerät, insbesondere eines, das es jemandem außerhalb Ihres Hauses oder sogar am anderen Ende der Welt ermöglichen könnte, Elektrogeräte nach Belieben ein- und auszuschalten, zu vielen Problemen führen.

Wir haben bereits über IoT-Unsicherheit in einer Vielzahl unterschiedlicher Produkte geschrieben Internet-Wasserkocher (Ja, wirklich) Dadurch könnte Ihr WLAN-Passwort zu Hause an Überwachungskameras weitergegeben werden, mit denen Kriminelle ihr Passwort behalten können Auge auf dich und nicht umgekehrt, auf an das Netzwerk angeschlossene Festplattenlaufwerke, die einem Risiko ausgesetzt sind von Ransomware befallen direkt über das Internet.

In diesem Fall fanden die Forscher bereits im Januar 2023 eine Lücke zur Remote-Codeausführung im Wemo Mini Smart Plug, meldeten sie im Februar 2023 und erhielten dafür im März 2023 eine CVE-Nummer (CVE-2023-27217).

Auch wenn mit ziemlicher Sicherheit viele dieser Geräte in der realen Welt aktiv im Einsatz sind, hat Belkin offenbar gesagt, dass das Gerät seiner Meinung nach „am Ende seiner Lebensdauer“ sei und dass die Sicherheitslücke daher nicht geschlossen werde.

(Wir sind uns nicht sicher, wie akzeptabel diese Art der „Ende der Lebensdauer“-Entlassung wäre, wenn sich herausstellen würde, dass das Gerät einen Fehler in seinen 120-V-Wechselstrom- oder 230-V-Wechselstrom-Stromkreisen aufweist, wie z. B. die Möglichkeit einer Überhitzung und der Freisetzung schädlicher Chemikalien oder der Einstellung in Flammen, aber es scheint, dass Fehler in der Niederspannungs-Digitalelektronik oder der Firmware im Gerät ignoriert werden können, selbst wenn sie dazu führen könnten, dass ein Cyberangreifer den Netzschalter im Gerät nach Belieben wiederholt ein- und ausschaltet.)

Wenn freundliche Namen Ihr Feind sind

Das Problem, das die Forscher entdeckten, war ein gutes altes Stapelpufferüberlauf in dem Teil der Gerätesoftware, der es Ihnen ermöglicht, das sogenannte zu ändern FriendlyName des Geräts – die Textzeichenfolge, die angezeigt wird, wenn Sie mit einer App auf Ihrem Telefon eine Verbindung herstellen.

Standardmäßig starten diese Geräte mit einem benutzerfreundlichen Namen wie Wemo mini XYZ, Wobei XYZ bezeichnet drei hexadezimale Ziffern, von denen wir vermuten, dass sie pseudozufällig ausgewählt werden.

Das bedeutet, dass selbst wenn Sie zwei oder drei dieser Geräte besitzen, diese mit ziemlicher Sicherheit unterschiedliche Namen haben, sodass Sie sie problemlos einrichten können.

Aber Sie möchten sie wahrscheinlich später umbenennen, damit sie in Zukunft leichter zu unterscheiden sind, indem Sie ihnen benutzerfreundliche Namen zuweisen, z. B TV power, Laptop charger und Raspberry Pi server.

Die Belkin-Programmierer (oder genauer gesagt die Programmierer des Codes, der in diesen Geräten der Marke Belkin landete und die möglicherweise auch andere Marken mit Smart-Plug-Software beliefert haben) haben offenbar 68 Byte temporären Speicher reserviert, um den Überblick zu behalten neuer Name während des Umbenennungsvorgangs.

Aber sie haben vergessen zu prüfen, ob der von Ihnen angegebene Name in diesen 68-Byte-Slot passt.

Stattdessen gingen sie davon aus, dass Sie ihre offizielle Telefon-App verwenden würden, um den Geräteumbenennungsprozess durchzuführen, und dass sie daher zunächst die an das Gerät gesendete Datenmenge begrenzen könnten, um einen andernfalls möglichen Pufferüberlauf zu verhindern entstehen.

Ironischerweise haben sie großen Wert darauf gelegt, dass Sie nicht nur die 68-Byte-Grenze einhalten, die für das ordnungsgemäße Verhalten des Geräts selbst erforderlich ist, sondern dass Sie sogar nur 30 Zeichen eingeben müssen.

Wir alle wissen, warum es eine schreckliche Idee ist, die Fehlerüberprüfung auf der Clientseite durchführen zu lassen, anstatt sie stattdessen (oder, noch besser, auch) auf der Serverseite zu überprüfen:

  • Der Clientcode und der Servercode weichen möglicherweise von der Konformität ab. Zukünftige Client-Apps könnten entscheiden, dass 72-stellige Namen eine gute Option wären, und beginnen, mehr Daten an den Server zu senden, als er sicher verarbeiten kann. Zukünftige serverseitige Programmierer werden möglicherweise feststellen, dass scheinbar nie jemand die gesamten reservierten 68 Bytes genutzt hat, und einhellig entscheiden, dass 24 mehr als genug sein sollten.
  • Ein Angreifer könnte sich dafür entscheiden, sich nicht um die App zu kümmern. Durch das Generieren und Übertragen eigener Anfragen an das Gerät würden sie problemlos alle Sicherheitsüberprüfungen umgehen, die allein auf der App basieren.

Die Forscher waren schnell in der Lage, immer längere Namen auszuprobieren, bis sie das Wemo-Gerät nach Belieben zum Absturz bringen konnten, indem sie das Ende des für den neuen Namen reservierten Speicherpuffers überschrieben und die in den unmittelbar darauffolgenden Bytes gespeicherten Daten beschädigten.

Den Stapel beschädigen

Unglücklicherweise sind in einem stapelbasierten Betriebssystem die meisten Softwareprogramme ihre stapelbasierten temporären Speicherpuffer so angeordnet, dass den meisten dieser Puffer dicht gefolgt von einem weiteren wichtigen Speicherblock folgt, der dem Programm mitteilt, wohin es gehen soll, wenn es mit was fertig ist es geht gerade.

Technisch gesehen werden diese „Wohin als nächstes gehen?“-Datenblöcke als „Wohin gehen wir als Nächstes?“ bezeichnet Rücksendeadressen, und sie werden automatisch gespeichert, wenn ein Programm etwas aufruft, das als a bezeichnet wird Funktion, oder SubroutineDabei handelt es sich um einen Codeblock (z. B. „Diese Meldung drucken“ oder „Warndialogfeld öffnen“), den Sie in mehreren Teilen Ihres Programms verwenden möchten.

Die Rücksprungadresse wird jedes Mal, wenn das Unterprogramm verwendet wird, auf magische Weise auf dem Stapel aufgezeichnet, sodass der Computer seinen Pfad automatisch „abwickeln“ kann, um zu dem Ort zurückzukehren, von dem das Unterprogramm aufgerufen wurde, was bei jeder Aktivierung anders sein kann.

(Wenn eine Unterroutine eine feste Rücksprungadresse hätte, könnten Sie sie immer nur von einer Stelle in Ihrem Programm aus aufrufen, was es sinnlos machen würde, sich überhaupt die Mühe zu machen, diesen Code in eine separate Unterroutine zu packen.)

Wie Sie sich vorstellen können, wird sich die Unterroutine, wenn sie diese magische Absenderadresse mit Füßen tritt, bevor die Ausführung beendet ist, vertrauensvoll, aber unwissentlich an die falsche Stelle „abwickeln“, wenn sie fertig ist.

Mit etwas (oder vielleicht viel) Glück kann ein Angreifer möglicherweise im Voraus vorhersagen, wie er die Absenderadresse auf kreative Weise mit Füßen treten und so das Programm auf absichtliche und böswillige Weise fehlleiten kann.

Anstatt nur abzustürzen, könnte das fehlgeleitete Programm dazu verleitet werden, Code nach Wahl des Angreifers auszuführen, was zu einem sogenannten Absturz führt Remote-Code-Ausführung Exploit oder RCE.

Zwei gängige Abwehrmaßnahmen schützen vor Angriffen dieser Art:

  • Randomisierung des Adressraumlayouts, auch bekannt als ASLR. Das Betriebssystem lädt Programme bewusst bei jeder Ausführung an leicht unterschiedlichen Speicherorten. Dies macht es für Angreifer schwieriger zu erraten, wie sie fehlerhafte Programme so fehlleiten können, dass sie letztendlich die Kontrolle erlangen und behalten, anstatt lediglich den Code zum Absturz zu bringen.
  • Kanarienvögel stapeln, Benannt nach den Vögeln, die Bergleute früher mit unter die Erde nahmen, weil sie in der Gegenwart von Methan ohnmächtig wurden, und so eine grausame, aber wirksame Frühwarnung vor der Gefahr einer Explosion darstellten. Das Programm fügt bei jedem Aufruf einer Unterroutine absichtlich einen bekannten, aber zufälligen Datenblock direkt vor der Rücksprungadresse ein, so dass ein Pufferüberlauf unvermeidlich und erkennbar zuerst den „Kanarienvogel“ überschreibt, bevor er weit genug überläuft, um ihn zu zerstören an der wichtigen Absenderadresse.

Um ihren Exploit schnell und zuverlässig zum Laufen zu bringen, mussten die Forscher den Wemo-Stecker dazu zwingen, ASLR auszuschalten, was entfernten Angreifern nicht möglich wäre, aber mit vielen Versuchen im wirklichen Leben könnten Angreifer dennoch Glück haben und richtig raten an den vom Programm verwendeten Speicheradressen und erhalten Sie trotzdem die Kontrolle.

Die Forscher mussten sich jedoch keine Gedanken über das Stack-Canary-Problem machen, da die fehlerhafte App aus ihrem Quellcode kompiliert wurde und die Funktion „Sicherheitsanweisungen zur Canary-Prüfung einfügen“ deaktiviert war.

(Canary-geschützte Programme sind normalerweise etwas größer und langsamer als ungeschützte, da in jeder Unterroutine zusätzlicher Code für die Sicherheitsüberprüfungen erforderlich ist.)

Was ist zu tun?

  • Wenn Sie Wemo Smart Plug V2 besitzen, Stellen Sie sicher, dass Sie Ihren Heimrouter nicht so konfiguriert haben, dass der Zugriff auf das Gerät von „außen“ über das Internet möglich ist. Dies reduziert das, was im Fachjargon als Ihr bekannt ist Angriffsfläche.
  • Wenn Sie einen Router haben, der Universal Plug and Play unterstützt, Auch bekannt als UPnP, stellen Sie sicher, dass es ausgeschaltet ist. UPnP macht es bekanntermaßen einfach, dass interne Geräte unbeabsichtigt für Außenstehende geöffnet werden.
  • Wenn Sie ein Programmierer sind, Vermeiden Sie es, Software-Sicherheitsfunktionen (z. B. Stack-Schutz oder Stack-Canary-Prüfung) auszuschalten, nur um ein paar Bytes zu sparen. Wenn Ihnen wirklich der Arbeitsspeicher ausgeht, versuchen Sie, Ihren Platzbedarf zu verringern, indem Sie Ihren Code verbessern oder Funktionen entfernen, anstatt die Sicherheit zu verringern, damit Sie mehr hineinstopfen können.

Zeitstempel:

Mehr von Nackte Sicherheit