A fost introdusă o nouă tehnică de exploatare a vulnerabilităților în SQLite.

Cercetători de la Check Point descoperit la conferința DEF CON, detalii despre o nouă tehnică de atacare a aplicațiilor folosind versiuni vulnerabile ale SQLite. Metoda Check Point consideră fișierele bazei de date ca o oportunitate de a integra scenarii de exploatare a vulnerabilităților din diferite subsisteme interne SQLite care nu sunt direct exploatabile. Cercetătorii au pregătit, de asemenea, o tehnică de exploatare a vulnerabilităților prin codificarea exploit-ului sub forma unui lanț de interogări SELECT în baza de date SQLite, care vă permite să ocoliți ASLR.

Pentru un atac de succes, este necesar să se poată modifica fișierele bazei de date ale aplicațiilor atacate, ceea ce limitează metoda la atacuri asupra aplicațiilor care folosesc baza de date SQLite ca format pentru tranzit și date de intrare. Metoda poate fi folosită și pentru a extinde accesul local existent, de exemplu, pentru a integra ușile ascunse în aplicațiile utilizate, precum și pentru a ocoli mecanismele de securitate atunci când analizează programele malware de către cercetătorii în domeniul securității. Operația după înlocuirea fișierului este efectuată în momentul în care aplicația execută prima interogare SELECT pe un tabel din baza de date modificată.

Ca exemplu, am demonstrat capacitatea de a rula cod în iOS la deschiderea unei agende de adrese, fișierul cu baza de date „AddressBook.sqlitedb” a fost modificat folosind metoda propusă. Atacul a folosit o vulnerabilitate în funcția fts3_tokenizer (CVE-2019-8602, capacitatea de dereferire a indicatorului), remediată în actualizarea SQLite 2.28 din aprilie, împreună cu o altă vulnerabilitate în implementarea funcţiilor ferestrei. În plus, a fost demonstrată utilizarea unei metode de preluare de la distanță a controlului serverului backend al unui atacator, scrisă în PHP, care acumulează parole interceptate în timpul funcționării unui cod rău intenționat (parolele interceptate au fost transmise sub forma unei baze de date SQLite).

Metoda de atac se bazează pe utilizarea a două tehnici „Query Hijacking” și „Query Oriented Programming”, care permit exploatarea unor probleme arbitrare care duc la coruperea memoriei în motorul SQLite. Esența „Query Hijacking” este înlocuirea conținutului câmpului „sql” din tabelul de servicii sqlite_master, care determină structura bazei de date. Câmpul specificat conține un bloc DDL (Data Definition Language) folosit pentru a descrie structura obiectelor din baza de date. Descrierea este specificată folosind sintaxa SQL standard, adică se folosește construcția „CREATE TABLE”,
care se execută în timpul procesului de inițializare a bazei de date (în timpul primei lansări
sqlite3LocateTable funcționează pentru a crea structuri interne legate de tabel în memorie.

Ideea este că, ca urmare a înlocuirii „CREATE TABLE” cu „CREATE VIEW”, devine posibil să controlezi orice acces la baza de date prin definirea propriei vizualizări. Folosind „CREATE VIEW” o operație „SELECT” este legată de tabel, care va fi apelată în loc de „CREATE TABLE” și vă permite să accesați diferite părți ale interpretului SQLite. În continuare, cea mai simplă metodă de atac ar fi apelarea funcției „load_extension”, care vă permite să încărcați o bibliotecă arbitrară cu o extensie, dar această funcție este dezactivată implicit.

Pentru a efectua un atac atunci când este posibilă efectuarea operației „SELECT”, este propusă tehnica „Query Oriented Programming”, care face posibilă exploatarea problemelor din SQLite care duc la coruperea memoriei. Tehnica amintește de programarea orientată spre întoarcere (POR, Programare orientată spre returnare), dar nu utilizează fragmente existente de cod de mașină pentru a construi un lanț de apeluri („gadgets”), ci inserează într-un set de subinterogări în interiorul SELECT.

A fost introdusă o nouă tehnică de exploatare a vulnerabilităților în SQLite.

A fost introdusă o nouă tehnică de exploatare a vulnerabilităților în SQLite.

Sursa: opennet.ru

Adauga un comentariu