Została zaprezentowana nowa technika wykorzystywania luk bezpieczeństwa w SQLite

Badacze z firmy Check Point ujawnili na konferencji DEF CON przedstawili szczegóły nowej techniki ataków na aplikacje, które wykorzystują podatne wersje SQLite. Metoda Check Point traktuje pliki z bazą danych jako możliwość integracji skryptów eksploitacyjnych w różnych wewnętrznych systemach SQLite, niedostępnych do wykorzystania wprost. Badacze przygotowali również technikę eksploatacji luk z kodowaniem eksploitów w formie łańcucha zapytań SELECT w bazie danych SQLite, co pozwala na ominięcie ASLR.

Do skutecznego ataku konieczne jest posiadanie możliwości modyfikacji plików bazy danych atakowanych aplikacji, co ogranicza metodę do ataków na aplikacje używające SQLite jako formatu dla danych tranzytowych i wejściowych. Metoda ta może być również stosowana do rozszerzenia już uzyskanego lokalnego dostępu, na przykład do integracji ukrytych backdoorów w używanych aplikacjach oraz do ominięcia przez badaczy bezpieczeństwa mechanizmów ochrony podczas analizy złośliwego oprogramowania. Eksploatacja po wymianie pliku odbywa się w momencie wykonywania przez aplikację pierwszego zapytania SELECT do tabeli w zmodyfikowanej bazie danych.

Jako przykład pokazano możliwość uruchomienia kodu w iOS przy otwieraniu książki adresowej, plik z bazą danych „AddressBook.sqlitedb” został zmieniony przy użyciu zaproponowanej metody. Do ataku wykorzystano lukę w funkcji fts3_tokenizer (CVE-2019-8602, możliwość dereferencji wskaźnika), naprawioną w kwietniowej aktualizacji SQLite 2.28, obok innej luki w implementacji funkcji okiennych. Ponadto pokazano zastosowanie metody do zdalnego przejęcia kontroli nad backendem serwera napisanego w PHP przez przestępców, zbierających hasła przechwycone podczas działania złośliwego kodu (przechwycone hasła były przesyłane w formie bazy danych SQLite).

Metoda ataku opiera się na wykorzystaniu dwóch technik: "Query Hijacking" oraz "Query Oriented Programming", które pozwalają na exploitowanie dowolnych problemów prowadzących do uszkodzenia pamięci w silniku SQLite. Esencją "Query Hijacking" jest wymiana zawartości pola "sql" w tabeli systemowej sqlite_master, która definiuje strukturę bazy danych. Wspomniane pole zawiera blok DDL (Data Definition Language), stosowany do opisu struktury obiektów w bazie danych. Opis jest zadawany przy użyciu standardowej składni SQL, tj. używana jest konstrukcja "CREATE TABLE",
która wykonywana jest podczas inicjalizacji bazy danych (w trakcie pierwszego uruchomienia
funkcji sqlite3LocateTable) w celu stworzenia wewnętrznych struktur powiązanych z tabelą w pamięci.

Idea polega na tym, że w wyniku zastąpienia "CREATE TABLE" na "CREATE VIEW" pojawia się możliwość kontrolowania dostępu do bazy danych poprzez zdefiniowanie własnego widoku. Przy pomocy "CREATE VIEW" do tabeli przypisywana jest operacja "SELECT", która będzie wywoływana zamiast "CREATE TABLE" i pozwala na dostęp do różnych części interpretera SQLite. Następnie najprostszym sposobem ataku byłoby wywołanie funkcji "load_extension", pozwalającej na załadowanie dowolnej biblioteki z rozszerzeniem, ale ta funkcja jest domyślnie wyłączona.

Aby przeprowadzić atak w warunkach możliwości wykonania operacji "SELECT", zaproponowano technikę "Query Oriented Programming", która umożliwia exploitowanie problemów w SQLite prowadzących do uszkodzenia pamięci. Technika przypomina programowanie oparte na powrocie (ROP, Return-Oriented Programming), ale wykorzystuje do budowy łańcucha wywołań („gadżetów”) nieistniejące fragmenty kodu maszynowego, lecz wstawki w zestawie podzapytań wewnątrz SELECT.

Została zaprezentowana nowa technika wykorzystywania luk bezpieczeństwa w SQLite

Została zaprezentowana nowa technika wykorzystywania luk bezpieczeństwa w SQLite

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster