Eine neue Technik zur Ausnutzung von Schwachstellen in SQLite wurde eingeführt.

Forscher von Check Point unbedeckt auf der DEF CON-Konferenz Details zu einer neuen Technik zum Angriff auf Anwendungen mit anfälligen Versionen von SQLite. Die Check Point-Methode betrachtet Datenbankdateien als Möglichkeit, Szenarien zur Ausnutzung von Schwachstellen in verschiedenen internen SQLite-Subsystemen zu integrieren, die nicht direkt ausnutzbar sind. Forscher haben außerdem eine Technik zum Ausnutzen von Schwachstellen vorbereitet, indem sie den Exploit in Form einer Kette von SELECT-Abfragen in der SQLite-Datenbank codieren, wodurch Sie ASLR umgehen können.

Für einen erfolgreichen Angriff ist es notwendig, die Datenbankdateien der angegriffenen Anwendungen ändern zu können, was die Methode auf Angriffe auf Anwendungen beschränkt, die die SQLite-Datenbank als Format für Transit- und Eingabedaten verwenden. Das Verfahren kann auch zur Erweiterung bestehender lokaler Zugriffe genutzt werden, um beispielsweise versteckte Hintertüren in genutzte Anwendungen zu integrieren, sowie zur Umgehung von Sicherheitsmechanismen bei der Analyse von Malware durch Sicherheitsforscher. Der Vorgang nach der Dateiersetzung wird in dem Moment ausgeführt, in dem die Anwendung die erste SELECT-Abfrage für eine Tabelle in der geänderten Datenbank ausführt.

Als Beispiel haben wir die Möglichkeit demonstriert, beim Öffnen eines Adressbuchs Code in iOS auszuführen. Die Datei mit der Datenbank „AddressBook.sqlitedb“ wurde mit der vorgeschlagenen Methode geändert. Der Angriff nutzte eine Schwachstelle in der Funktion fts3_tokenizer (CVE-2019-8602, Zeiger-Dereferenzierungsfunktion), die im SQLite-Update 2.28 vom April behoben wurde, sowie eine weitere Verletzlichkeit bei der Implementierung von Fensterfunktionen. Darüber hinaus wurde die Verwendung einer in PHP geschriebenen Methode zur Fernübernahme der Kontrolle über den Backend-Server eines Angreifers demonstriert, die während der Ausführung von Schadcode abgefangene Passwörter sammelt (die abgefangenen Passwörter wurden in Form einer SQLite-Datenbank übertragen).

Die Angriffsmethode basiert auf der Verwendung zweier Techniken „Query Hijacking“ und „Query Oriented Programming“, die es ermöglichen, beliebige Probleme auszunutzen, die zu einer Speicherbeschädigung in der SQLite-Engine führen. Der Kern von „Query Hijacking“ besteht darin, den Inhalt des Felds „sql“ in der Servicetabelle sqlite_master zu ersetzen, das die Struktur der Datenbank bestimmt. Das angegebene Feld enthält einen DDL-Block (Data Definition Language), der zur Beschreibung der Struktur von Objekten in der Datenbank verwendet wird. Die Beschreibung wird mithilfe der Standard-SQL-Syntax angegeben, d. h. die „CREATE TABLE“-Konstruktion wird verwendet,
die während des Datenbankinitialisierungsprozesses (beim ersten Start) ausgeführt wird
sqlite3LocateTable-Funktionen zum Erstellen tabellenbezogener interner Strukturen im Speicher.

Die Idee besteht darin, dass es durch das Ersetzen von „CREATE TABLE“ durch „CREATE VIEW“ möglich wird, jeden Zugriff auf die Datenbank durch die Definition einer eigenen Ansicht zu steuern. Mit „CREATE VIEW“ wird eine „SELECT“-Operation an die Tabelle gebunden, die anstelle von „CREATE TABLE“ aufgerufen wird und Ihnen den Zugriff auf verschiedene Teile des SQLite-Interpreters ermöglicht. Als nächstes wäre die einfachste Angriffsmethode der Aufruf der Funktion „load_extension“, mit der Sie eine beliebige Bibliothek mit einer Erweiterung laden können. Diese Funktion ist jedoch standardmäßig deaktiviert.

Um einen Angriff durchzuführen, wenn die Operation „SELECT“ möglich ist, wird die Technik „Query Oriented Programming“ vorgeschlagen, die es ermöglicht, Probleme in SQLite auszunutzen, die zu Speicherbeschädigungen führen. Die Technik erinnert an die renditeorientierte Programmierung (ROP, Return-Oriented Programming), verwendet jedoch nicht vorhandene Maschinencode-Schnipsel zum Aufbau einer Aufrufkette („Gadgets“), sondern fügt sie in eine Reihe von Unterabfragen innerhalb von SELECT ein.

Eine neue Technik zur Ausnutzung von Schwachstellen in SQLite wurde eingeführt.

Eine neue Technik zur Ausnutzung von Schwachstellen in SQLite wurde eingeführt.

Source: opennet.ru

Kommentar hinzufügen