Teknik baru untuk mengeksploitasi kerentanan di SQLite telah diperkenalkan.

Peneliti dari Check Point terbongkar pada konferensi DEF CON, rincian teknik baru untuk menyerang aplikasi menggunakan versi SQLite yang rentan. Metode Check Point menganggap file database sebagai peluang untuk mengintegrasikan skenario untuk mengeksploitasi kerentanan di berbagai subsistem SQLite internal yang tidak dapat dieksploitasi secara langsung. Peneliti juga telah menyiapkan teknik untuk mengeksploitasi kerentanan dengan mengkodekan eksploitasi dalam bentuk rantai kueri SELECT dalam database SQLite, yang memungkinkan Anda melewati ASLR.

Agar serangan berhasil, diperlukan kemampuan untuk memodifikasi file database dari aplikasi yang diserang, yang membatasi metode serangan pada aplikasi yang menggunakan database SQLite sebagai format transit dan input data. Metode ini juga dapat digunakan untuk memperluas akses lokal yang ada, misalnya, untuk mengintegrasikan pintu belakang tersembunyi ke dalam aplikasi yang digunakan, serta untuk melewati mekanisme keamanan saat menganalisis malware oleh peneliti keamanan. Operasi setelah substitusi file dilakukan pada saat aplikasi mengeksekusi query SELECT pertama terhadap tabel dalam database yang dimodifikasi.

Sebagai contoh, kami mendemonstrasikan kemampuan untuk menjalankan kode di iOS saat membuka buku alamat, file dengan database “AddressBook.sqliteb” dimodifikasi menggunakan metode yang diusulkan. Serangan tersebut menggunakan kerentanan pada fungsi fts3_tokenizer (CVE-2019-8602, kemampuan dereferensi penunjuk), yang diperbaiki pada pembaruan SQLite 2.28 bulan April, bersama dengan kerentanan lainnya kerentanan dalam implementasi fungsi jendela. Selain itu, penggunaan metode untuk mengambil kendali jarak jauh dari server backend penyerang yang ditulis dalam PHP, yang mengumpulkan kata sandi yang disadap selama pengoperasian kode berbahaya (kata sandi yang dicegat dikirimkan dalam bentuk database SQLite), telah ditunjukkan.

Metode serangan ini didasarkan pada penggunaan dua teknik “Query Hijacking” dan “Query Oriented Programming”, yang memungkinkan eksploitasi masalah sewenang-wenang yang menyebabkan kerusakan memori di mesin SQLite. Inti dari “Query Hijacking” adalah mengganti isi field “sql” di tabel layanan sqlite_master, yang menentukan struktur database. Bidang yang ditentukan berisi blok DDL (Data Definition Language) yang digunakan untuk menggambarkan struktur objek dalam database. Deskripsi ditentukan menggunakan sintaks SQL standar, yaitu. konstruksi “CREATE TABLE” digunakan,
yang dijalankan selama proses inisialisasi database (saat peluncuran pertama
sqlite3LocateTable berfungsi untuk membuat struktur internal terkait tabel di memori.

Idenya adalah, sebagai hasil dari penggantian “CREATE TABLE” dengan “CREATE VIEW”, setiap akses ke database dapat dikontrol dengan mendefinisikan view Anda sendiri. Menggunakan "CREATE VIEW", operasi "SELECT" terikat ke tabel, yang akan dipanggil alih-alih "CREATE TABLE" dan memungkinkan Anda mengakses berbagai bagian penerjemah SQLite. Selanjutnya, metode serangan paling sederhana adalah dengan memanggil fungsi “load_extension”, yang memungkinkan Anda memuat perpustakaan arbitrer dengan ekstensi, tetapi fungsi ini dinonaktifkan secara default.

Untuk melakukan serangan ketika operasi "PILIH" dapat dilakukan, teknik "Pemrograman Berorientasi Kueri" diusulkan, yang memungkinkan untuk mengeksploitasi masalah di SQLite yang menyebabkan kerusakan memori. Teknik ini mengingatkan pada pemrograman berorientasi kembali (ROP, Pemrograman Berorientasi Kembali), tetapi tidak menggunakan cuplikan kode mesin yang ada untuk membangun rantai panggilan (“gadget”), tetapi menyisipkan satu set subkueri di dalam SELECT.

Teknik baru untuk mengeksploitasi kerentanan di SQLite telah diperkenalkan.

Teknik baru untuk mengeksploitasi kerentanan di SQLite telah diperkenalkan.

Sumber: opennet.ru

Tambah komentar