Magellans Fehler: Pufferüberlauf oder Expedition um die Welt mit SQLite FTS

Ich habe den jüngsten Magellan- Fehler bei Habré und die damit verbundenen Schwachstellen irgendwie umgangen. Ich werde versuchen, diese Lücke zu schließen.


Ein bisschen Geschichte


  • Am 1. November 2018 flog ein Fehlerbericht mit der Nummer 900910 in Chromium ein: "Mehrere Probleme in SQLite über WebSQL." Der Fehler wird von Wenxiang Qian vom Tencent Blade Team gemeldet.
  • Am 5. November 2018 wird der Fehler im Kern der SQLite-Bibliothek (FTS3) geschlossen, wo er tatsächlich fast ab dem Zeitpunkt der Erstellung des Moduls lebt, d. H. seit November 2009.
  • 28. November 2018 geht es in Chrom über
  • Wenig später veröffentlicht das Tencent Blade-Team eine Fehlermeldung mit dem Namen Magellan, insbesondere ohne Details preiszugeben, und weist darauf hin, dass die Veröffentlichung von vorgefertigten Exploits und PoC noch nicht geplant ist.
  • Eine Woche später ist das Internet voll von PoC, abstürzendem Chrome, Electron Dev-Framework usw. Beweise und andere Informationen, dass die Sicherheitsanfälligkeit für böswillige Zwecke verwendet wurde, sind immer noch nicht vorhanden.
  • DRH bestätigte bei Hacker News den Verdacht, dass die Sicherheitsanfälligkeit besteht (zumindest wenn die Ausführung einer „fremden“ SQL-Abfrage oder eine SQL-Injektion eines ähnlichen Szenarios zulässig ist).

Was könnte anfällig sein?


Möglicherweise alle Geräte und Programme, die SQLite (mit aktiviertem FTS) verwenden oder darauf basierende Anwendungen (z. B. Chromium) verwenden oder darauf basieren. Inwieweit sie betroffen sein können und wie sich ein möglicher „Verlust“ auswirkt, hängt davon ab, ob ein geeigneter Angriffsvektor gefunden wird.


Ein bisschen mehr über Magellan SQLite BUG


Der Fehler hängt mit dem Überlauf der Summe von Ganzzahlen, auch als Ganzzahlüberlauf bezeichnet, zusammen , der im FTS3 / 4- Subsystem durch Ändern des Index der FTS-Tabelle verursacht werden kann, was wiederum mit einer Ausnahme zum Umschreiben des Speichers oder zum Beenden führen kann.


Die gezielte künstliche Anwendung dieses ganzzahligen Überlaufs durch kompetentes "Trimmen" von Schreibpuffern führt zu einem Speicherüberlauf und kann in Zukunft von speziell erstellten SQL-Abfragen verwendet werden.


Theoretisch können daher viele Anwendungen , die SQLite (mit virtuellen FTS-Tabellen) verwenden, und insbesondere gängige Browser, die SQLite basierend auf SQLite mit aktiviertem FTS unterstützen (z. B. Google Chrome, Chromium, Opera, Slimjet-Browser, SRWare Iron, Torch, anfällig sein). Comodo Dragon, CoolNovo, Yandex Browser, Vivaldi usw.).


SQLite-Datenbanken sind im Allgemeinen sehr beliebt. Sie werden mithilfe von mehr als einem Dutzend Programmiersprachen, Toolchain, Frameworks usw. bereitgestellt, werden von Anwendungen sowohl für mobile Geräte als auch für vollwertige Computer verwendet und sind häufig sogar in Serverlösungen zu finden. So speichern beispielsweise beliebte Webbrowser wie Google Chrome, Mozilla Firefox und Yandex Browser, viele Instant Messenger (z. B. WhatsApp, Viber, WeChat und andere) Daten in diesem Format usw. usw.


Derselbe Fossil SCM verwendet beispielsweise die SQLite-Datenbank zum Speichern des Revisionsverlaufs und ermöglicht die Verwendung der Volltextindizierung über FTS (und bietet Zugriff über die Benutzeroberfläche / Web-Mündung, wobei beispielsweise die Möglichkeit besteht, eigene SQL-Abfragen zu erstellen, z. B. benutzerdefinierte Ticketberichte usw.).


Update: DRH, Mitautor und Entwickler von Fossil, dachte anscheinend dasselbe und schloss bereits die Lücke, indem er SQLite auf 3.26.0 aktualisierte


Ein solcher „vorhersehbarer“ Überlauf ist an sich keine sehr angenehme Sache, aber wenn Sie sich daran erinnern, was genau in der Bank selbst gespeichert werden kann (vom Inhalt der Magazine bis zu den Tischen selbst) ...
Seien Sie also keine faulen Kameraden ... und werden aktualisiert, aktualisiert.


Woher bekomme ich das Update?


Der Patch [940f2adc8541a838] wird im Rahmen des SQLite 3.25.3-Updates bereitgestellt (auf das Chromium und Co. ebenfalls aktualisiert wurden, z. B. Chrome in Version 71.0.3578.80).


SQLite Version 3.26 bietet außerdem zusätzliche Sicherheitsfunktionen für FTS-Container, z. B.:

Unterstützung für schreibgeschützte Schattentabellen, wenn die Option SQLITE_DBCONFIG_DEFENSIVE aktiviert ist

Was ist die Gefahr dieser Sicherheitsanfälligkeit?


Kritisch. Ermöglicht die Remotecodeausführung. Ein Speicherverlust und ein Programmabsturz sind ebenfalls wahrscheinlich.


Gibt es Beispiele für vorgefertigte Exploits, um die Sicherheitsanfälligkeit auszunutzen?


Ja


Insbesondere behauptet das Tencent Blade-Team, dass es mit dieser Sicherheitsanfälligkeit einen Angriff auf Google Home erfolgreich ausgeführt hat (der Zugriff auf die Beschreibung des Problems im Google Bug Tracker ist geschlossen). Wie oben erwähnt, ist derzeit keine Veröffentlichung des Exploit-Codes geplant.


Nutzungsbedingungen der Sicherheitsanfälligkeit?


Die Sicherheitsanfälligkeit kann remote ausgeführt werden, z. B. wenn eine bestimmte Webseite in einem Browser aufgerufen wird, oder in einem ähnlichen Szenario, z. B. wenn SQL-Anweisungen ausgeführt werden können (wenn FTS nicht deaktiviert ist, wenn ein möglicher Angriffsvektor erkannt wird und / oder wenn andere Faktoren vorhanden sind, die der Ausnutzung förderlich sind Schwachstellen).


Dies ist übrigens nicht der erste Fehler des Typs Überlauf & Pufferüberlauf in SQLite speziell und insbesondere im FTS-Modul (zum Beispiel [56be976859294027] ), aber es ist wahrscheinlich der größte seiner Art in Bezug auf Bedeutung, theoretische Auswirkung und relative „Skalierung“ in Bezug auf die mögliche Anwendung und Bewertung von Konsequenzen davon.

Source: https://habr.com/ru/post/de433596/


All Articles