Saya entah bagaimana menghindari kesalahan Magellan baru-baru ini tentang Habré dan kerentanan yang terkait dengannya, saya akan mencoba untuk memperbaiki kelalaian ini.
Sedikit sejarah
- Pada 1 November 2018, nomor laporan bug 900910 terbang ke Chromium: "Beberapa masalah dalam SQLite via WebSQL." Kesalahan ini dilaporkan oleh Wenxiang Qian dari Tim Blade Tencent.
- Pada 5 November 2018, kesalahan ditutup pada inti pustaka SQLite (FTS3), di mana ia sebenarnya hidup hampir sejak modul dibuat, mis. sejak November 2009.
- 28 November 2018 bergabung menjadi Chromium
- Beberapa saat kemudian, Tim Blade Tencent menerbitkan pesan kesalahan, memberinya nama Magellan, terutama tanpa mengungkapkan detail, dan menunjukkan bahwa publikasi eksploitasi siap pakai dan PoC belum direncanakan.
- Seminggu kemudian, Internet penuh dengan PoC, menabrak Chrome, Electron dev-framework, dll. Bukti dan informasi lain apa pun yang kerentanan digunakan untuk tujuan jahat masih belum.
- DRH , mengkonfirmasi kecurigaan di Hacker News bahwa kerentanan memang ada (setidaknya jika eksekusi permintaan SQL "asing" diizinkan, atau injeksi SQL untuk skenario yang sama).
Apa yang bisa rentan?
Berpotensi, semua perangkat dan program menggunakan SQLite (dengan FTS diaktifkan) atau menggunakan atau berdasarkan aplikasi berbasis itu (seperti Chromium). Sejauh mana mereka dapat dipengaruhi dan efek dari kemungkinan "kerugian" tergantung pada apakah vektor serangan yang cocok ditemukan.
Kesalahan terkait dengan overflow dari jumlah integer alias integer overflow , yang dapat disebabkan dalam subsistem FTS3 / 4 dengan mengubah indeks FTS dari tabel, yang pada gilirannya dapat menyebabkan penulisan ulang memori atau terminasi dengan pengecualian.
Aplikasi tiruan yang ditargetkan dari integer overflow ini, melalui "pemangkasan" buffer tulis yang kompeten, mengarah ke memory overflow, dan dapat digunakan di masa mendatang dengan query SQL yang dibuat khusus.
Akibatnya, dalam teori, banyak aplikasi yang menggunakan SQLite (dengan tabel FTS virtual) dan, khususnya, browser populer yang mendukung SQLite berdasarkan SQLite dengan FTS diaktifkan (misalnya, Google Chrome, Chromium, Opera, Browser Slimjet, SRWare Iron, Torch, bisa rentan). Comodo Dragon, CoolNovo, Browser Yandex, Vivaldi, dll.).
Basis data SQLite umumnya sangat populer, disediakan melalui lebih dari selusin bahasa pemrograman, toolchain, kerangka kerja, dll., Digunakan oleh aplikasi untuk kedua perangkat seluler dan komputer yang lengkap, dan sering ditemukan bahkan dalam solusi server. Jadi, misalnya, browser web populer seperti Google Chrome, Mozilla Firefox dan Yandex Browser, banyak pengirim pesan instan (misalnya, WhatsApp, Viber, WeChat, dan lainnya) menyimpan data dalam format ini, dll. dll.
SCM Fosil yang sama, misalnya, menggunakan database SQLite untuk menyimpan riwayat revisi dan memungkinkan Anda untuk menggunakan pengindeksan teks lengkap melalui FTS (dan menyediakan akses ke sana dari moncong UI / web, di mana misalnya ada kemungkinan membuat kueri SQL Anda sendiri, misalnya laporan tiket kustom dll.)
Pembaruan: DRH, sebagai penulis pendamping dan pengembang Fossil, tampaknya memikirkan hal yang sama, dan sudah " menutup lubang " dengan memperbarui SQLite ke 3.26.0
Overflow yang "dapat diprediksi" seperti itu bukanlah hal yang sangat menyenangkan, tetapi jika Anda ingat apa sebenarnya yang dapat disimpan di bank itu sendiri (dari isi majalah ke tabel itu sendiri) ...
Jadi, jangan menjadi kawan yang malas ... dan diperbarui, diperbarui.
Di mana bisa diperbaiki?
Patch [940f2adc8541a838] disediakan sebagai bagian dari pembaruan SQLite 3.25.3 (yang Chromium dan rekannya juga telah diperbarui, misalnya, Chrome dalam versi 71.0.3578.80).
SQLite versi 3.26 juga menyediakan fitur keamanan tambahan untuk wadah FTS, misalnya:
dukungan untuk tabel bayangan hanya-baca ketika opsi SQLITE_DBCONFIG_DEFENSIVE diaktifkan
Apa bahaya dari kerentanan ini?
Sangat penting. Mengizinkan eksekusi kode jarak jauh. Kebocoran memori dan kerusakan program juga mungkin terjadi.
Apakah ada contoh eksploitasi siap pakai untuk mengeksploitasi kerentanan?
Ya
Secara khusus, Tim Blade Tencent mengklaim bahwa mereka berhasil melakukan serangan di Google Home menggunakan kerentanan ini (akses ke deskripsi masalah pada pelacak bug Google ditutup), dan seperti disebutkan di atas, tidak ada rencana untuk mengungkapkan kode eksploit saat ini.
Ketentuan penggunaan kerentanan?
Kerentanan dapat dilakukan dari jarak jauh, misalnya, ketika halaman web tertentu dipanggil di browser, atau dalam skenario serupa, misalnya, memungkinkan pelaksanaan pernyataan SQL (jika FTS tidak dinonaktifkan, jika kemungkinan serangan vektor terdeteksi dan / atau ada atau tidaknya beberapa faktor lain yang kondusif untuk eksploitasi) kerentanan).
Ini, kebetulan, bukan kesalahan pertama dari tipe overflow & buffer overrun dalam SQLite secara khusus dan dalam modul FTS pada khususnya (misalnya [56be976859294027] ), tetapi ini mungkin yang terbesar dari jenisnya dalam hal signifikansi, dampak teoretis, dan “skala” relatif dalam hal kemungkinan penerapan dan penilaian konsekuensi. ini.