Check Point-dən tədqiqatçılar
Uğurlu hücum üçün hücuma məruz qalan proqramların verilənlər bazası fayllarını dəyişdirə bilmək lazımdır ki, bu da metodu SQLite verilənlər bazasından tranzit və daxiletmə məlumatlarının formatı kimi istifadə edən proqramlara edilən hücumlarla məhdudlaşdırır. Metod həmçinin mövcud yerli girişi genişləndirmək, məsələn, gizli arxa qapıları istifadə olunan proqramlara inteqrasiya etmək, həmçinin təhlükəsizlik tədqiqatçıları tərəfindən zərərli proqramları təhlil edərkən təhlükəsizlik mexanizmlərini yan keçmək üçün istifadə edilə bilər. Faylın dəyişdirilməsindən sonrakı əməliyyat tətbiqin dəyişdirilmiş verilənlər bazasındakı cədvələ qarşı ilk SELECT sorğusunu yerinə yetirdiyi anda həyata keçirilir.
Nümunə olaraq, ünvan kitabçasını açarkən iOS-da kodu işlətmək qabiliyyətini nümayiş etdirdik, “AddressBook.sqlitedb” verilənlər bazası olan fayl təklif olunan üsulla dəyişdirildi. Hücum fts3_tokenizer funksiyasında (CVE-2019-8602, göstərici ilə əlaqə saxlama qabiliyyəti), digəri ilə birlikdə aprel SQLite 2.28 yeniləməsində düzəldilmiş boşluqdan istifadə edib.
Hücum metodu SQLite mühərrikində yaddaşın pozulmasına səbəb olan ixtiyari problemlərdən istifadə etməyə imkan verən “Sorğu oğurlaması” və “Sorğu yönümlü proqramlaşdırma” iki texnikasının istifadəsinə əsaslanır. “Query Hijacking”in mahiyyəti verilənlər bazasının strukturunu müəyyən edən sqlite_master xidmət cədvəlində “sql” sahəsinin məzmununu əvəz etməkdir. Göstərilən sahədə verilənlər bazasındakı obyektlərin strukturunu təsvir etmək üçün istifadə edilən DDL (Data Definition Language) bloku var. Təsvir standart SQL sintaksisi ilə müəyyən edilir, yəni. “CREATE TABLE” konstruksiyası istifadə olunur,
verilənlər bazasının işə salınması prosesi zamanı (ilk işə salınma zamanı
sqlite3LocateTable yaddaşda cədvəllə əlaqəli daxili strukturlar yaratmaq üçün funksiyaları yerinə yetirir.
İdeya ondan ibarətdir ki, “CREATE TABLE” sözünün “CREATE VIEW” ilə əvəz edilməsi nəticəsində öz baxışınızı təyin etməklə verilənlər bazasına istənilən girişi idarə etmək mümkün olur. "CREATE VIEW" istifadə edərək, "SEÇ" əməliyyatı "CREATE TABLE" əvəzinə çağırılacaq və SQLite tərcüməçisinin müxtəlif hissələrinə daxil olmağa imkan verən cədvələ bağlıdır. Sonra, hücumun ən sadə üsulu, genişlənmə ilə ixtiyari bir kitabxana yükləməyə imkan verən “load_extension” funksiyasını çağırmaq olardı, lakin bu funksiya standart olaraq qeyri-aktivdir.
“SEÇ” əməliyyatını yerinə yetirmək mümkün olduqda hücumu həyata keçirmək üçün “Sorğu yönümlü proqramlaşdırma” texnikası təklif olunur ki, bu da SQLite-də yaddaşın pozulmasına səbəb olan problemlərdən istifadə etməyə imkan verir. Texnika qayıdış yönümlü proqramlaşdırmanı xatırladır (
Mənbə: opennet.ru