Comelec bocor – apa yang saya temukan
- keren989
- 0
Rappler mengeluarkan artikel tentang kebocoran data Comelec pada 28 Maret 2016. Setelah saya mengomentari postingan di Facebook, Rappler mengundang saya untuk mempelajari data yang bocor tersebut lebih detail.
Saya menulis ini untuk membuat semua orang menyadari konsekuensi dari kebocoran ini dan apa yang perlu kita lakukan untuk melindungi diri kita sendiri.
Saya mencari sendiri di database tanpa panduan dari Rappler, jadi saya bisa menilai seberapa mudah data tersebut dapat dicari dan diakses.
Saya memulai pencarian melalui Google dan Twitter untuk tautan. Halaman Facebook LulzsecPinas menonjol di sebagian besar hasil pencarian, dan halaman tersebut mengarah ke situs unduhan (pada saat itu, karena sering berubah karena upaya penghapusan yang berhasil).
Ada file torrent yang terdaftar jadi saya mencobanya dulu. Saya mendapat sekitar 130MB data terkompresi. Isi file dalam bentuk yang saya kenal – MySQL – sistem manajemen basis data yang biasa digunakan oleh banyak situs web di seluruh dunia. Sebagai pengembang MySQL sendiri, saya sudah menginstal sistem di mesin saya, jadi saya membuka ritsleting dan memuat datanya.
Saat menelusuri tabel database (istilah teknis untuk tempat penampung data dalam baris dan kolom, mirip dengan spreadsheet), saya kebanyakan melihat data yang hanya relevan dengan sistem internal Comelec, terutama Sumber Daya Manusia.
Saya tidak mengerti apa masalahnya kecuali seseorang meretas situs web Comelec dan membocorkan semua datanya.
Sedang mengunduh data besar-besaran
Setelah membaca beberapa artikel lagi, saya melihat referensi ke data lain yang belum saya temukan, jadi saya mencari apa yang hilang dari unduhan saya. Ternyata saya tidak dapat mengunduh file terbesar – comweb.sql – sekitar 70GB terkompresi dan 380GB tidak terkompresi.
Dari penelitian saya, file ini diyakini berisi data dari 55 juta pemilih. Itu tidak ada di file torrent, tetapi ada di daftar file individual yang tersedia untuk diunduh.
Saya pertama kali mencoba mengunduh file besar itu di mesin saya tetapi kemudian saya menyadari itu adalah ide yang bodoh karena servernya dari AS dan kecepatan internet lambat di sini.
Saya menghitung sekitar 3 sampai 4 hari 24×7 dengan mesin saya terus menyala. Itu tidak mungkin.
Saya kemudian menyadari bahwa saya dapat mengunduh dan melakukan analisis dari beberapa server di cloud. Saya memilih server cloud pribadi di AS, jadi kecepatan unduh dari server sumber akan lebih cepat. Hanya saya yang memiliki akses ke server cloud ini saat ini.
Saat mengunduh (yang memakan waktu lebih dari 30 jam nonstop), saya menyiapkan penyimpanan yang cukup seperti yang diinstruksikan oleh LulzsecPinas dalam file bernama ‘README.txt’:
Total 340 GB saat diekstraksi, harap kosongkan sekitar 360 GB sebelum mengekstrak, terutama untuk comweb.sql.gz
Ini adalah seluruh kebocoran database Komisi Pemilihan, jangan khawatir beberapa tabel dienkripsi oleh Comelec.
Tapi kami memiliki algo untuk mendekripsi data itu. TERTAWA TERBAHAK-BAHAK.
Kebocoran didukung oleh: LulzSec Pinas
Saya juga menginstal MySQL dari awal di server baru.
Setelah pengunduhan selesai, saya membuka zip file (yang memakan total sekitar 380 gigabyte ruang, bukan 340 gigabyte seperti yang disebutkan dalam instruksi) dan kemudian menyiapkan dan menjalankan skrip untuk memuat data ke MySQL.
Saat saya menulis ini, proses pengunggahan data sebesar 380 gigabyte tanpa gangguan masih belum selesai setelah 3 minggu.
Jelajahi datanya
Saat memuat data ke MySQL, saya mengintip berbagai tabel dan file.
Saya melihat satu set tabel yang berisi data yang tampaknya merupakan data voting absensi luar negeri. Beberapa tabel lama memiliki kolom seperti nama, tanggal lahir, dan paspor yang dienkripsi (artinya terdistorsi dan tidak dapat dipahami oleh orang yang melihatnya), tetapi ada versi yang lebih baru dari tabel ini di mana kolom yang sama dapat dibaca.
Saya merasa pada saat itu itu serius dan saya harus memberi tahu Rappler; namun, mereka mengalahkan saya untuk penemuan ini, dan sebagian besar dari apa yang saya temukan, ditambah banyak lagi, telah dilaporkan.
Setelah pemuatan data selesai, harus ada total 308 tabel data, dan yang terbesar melibatkan beberapa versi data pemilih lokal.
Setiap versi berisi sekitar 70 juta rekaman; ada yang bilang seharusnya hanya sekitar 55 juta, dan 15 juta lainnya dinonaktifkan.
Lebih dari dua hari setelah saya memulai pemuatan awal, versi pertama tabel pemilih besar tersedia untuk kueri. Saya melihat bahwa meskipun ada kolom penting yang melibatkan nama, alamat, tanggal lahir, dan wilayah, sebagian besar dienkripsi.
Saya ingat Comelec sudah memberi tahu publik, dan ada jaminan bahwa data sensitif akan sangat sulit didekripsi. Apa yang melekat pada saya adalah apa yang dikatakan LulzsecPinas bahwa mereka tahu cara mendekripsi data.
Selama pemuatan awal, saya perhatikan bahwa beberapa file berisi kode sumber aplikasi. Saya menemukan ini aneh karena saya jarang menemukan kasus akhir-akhir ini di mana seseorang akan mencampur kode dan data – bukan tidak mungkin, tetapi jarang.
Artinya bagi saya adalah bahwa jika logika pemrograman tersedia, logika ini kemungkinan besar akan berisi instruksi untuk mengakses database. Tetapi datanya dienkripsi, yang berarti instruksi program akan memberikan petunjuk tentang cara mendekripsi data.
Yang mengejutkan saya, saya tidak hanya melihat fungsi untuk mendekripsi, tetapi juga untuk mengenkripsi.
Kiat
Lebih buruk lagi, bahkan dua masukan penting untuk fungsi enkripsi dan dekripsi—”kunci” (yang mirip dengan kata sandi) dan “vektor awal” (yang merupakan nilai yang menentukan kumpulan karakter terenkripsi mana yang muncul) disertakan!
Metode enkripsi dan dekripsi yang digunakan oleh Comelec adalah algoritma Advanced Encryption Standard (AES)/Rijndael. Seharusnya hampir tidak mungkin untuk dipecahkan, bahkan dengan alat canggih dan daya komputasi.
Saya bilang “hampir” karena secanggih apa pun gemboknya, siapa saja yang punya kunci bisa membukanya. Dalam hal ini, seseorang meninggalkan kunci di bawah keset.
Bahasa pemrograman yang digunakan di sini oleh pengembang web Comelec adalah PHP, yang umum di kalangan pengembang web. Siapa pun yang memiliki pengetahuan tentang PHP (dan jumlahnya banyak) akan dapat mendekripsi data setelah melihat baris kode yang berisi rutinitas enkripsi dan dekripsi dengan dua parameter tersebut.
Saya menulis program kecil menggunakan metode enkripsi/dekripsi yang ditemukan sebelumnya. Kemudian saya mendapatkan catatan pertama dari tabel pemilih, mengambil nama depan yang dienkripsi, dan menjalankannya melalui fungsi dekripsi. Saya menjadi pucat melihat nama depan dalam teks yang jelas!
Tantangan berikutnya adalah mencari rekaman tertentu. Bagaimana ini bisa dilakukan jika nama dan tanggal lahir dienkripsi? Solusinya adalah mengenkripsi kriteria pencarian. Saya merevisi skrip, kali ini untuk mengenkripsi nama depan dan belakang saya, yang kemudian saya gunakan untuk mencari tabel pemilih untuk catatan yang cocok dengan dua nilai terenkripsi ini.
Saya melihat satu catatan, dengan alamat lama saya dan yang lainnya dienkripsi. Saya kemudian mencoba mendekripsi nama tengah dan tanggal lahir saya, dan semuanya keluar dalam teks yang jelas – semuanya benar.
Kemudian saya mencari orang yang saya kenal. Kebanyakan dari mereka keluar dengan cara yang sama. Terlepas dari nilai yang sangat ketinggalan zaman, informasinya umumnya akurat.
Setelah apa yang saya temukan, saya bertanya-tanya apakah orang lain telah membuat penemuan serupa. Ternyata Lulzsec sendiri telah mengisyaratkan hal ini sehari sebelum penemuan saya:
Lulzsec Pilipinas juga memberikan petunjuk lagi beberapa hari kemudian, dengan mereka berencana untuk memberikan kunci yang benar dan vektor awal kepada seseorang yang mengerti apa yang mereka bicarakan.
Saya bukan pakar keamanan informasi, dan saya tidak memiliki banyak sertifikasi TI.
Perusahaan saya dan saya melakukan pengembangan perangkat lunak perusahaan, dan meskipun saya dituntut untuk memiliki pemahaman yang kuat tentang praktik keamanan informasi, saya bukan peretas keamanan melalui pelatihan atau praktik.
Bahwa saya dapat mengetahui cara menampilkan nilai terenkripsi dalam bentuk teks yang jelas seharusnya membuat Anda takut, karena orang lain yang terlatih di bidang ini pasti sudah mengetahuinya sekarang.
Saya tidak perlu mendobrak pintu dengan keahlian khusus. Kuncinya sudah ada di sana.
Dilema moral dan etika: Berbagi atau tidak berbagi
Rappler dan saya membahas apakah kami harus membagikan ini kepada publik dan, jika demikian, seberapa detail yang harus kami bagikan. Salah satu bahayanya adalah orang mungkin mulai mencari kunci yang saya temukan di tempat pembuangan data.
Kenyataannya adalah saya bukan orang pertama yang menemukan cara untuk membaca data terenkripsi.
Peretas melihat celah ini jauh ke belakang, dan hanya masalah waktu sampai orang lain mengetahuinya juga – baik peretas itu sendiri menerbitkan kunci dan metode enkripsi/dekripsi atau menemukan hal lain sendiri.
Ketahuilah, jangan hanya berasumsi, bahwa semuanya sudah tersedia dalam bentuk teks biasa. Pembuat We Have Your Data, situs web yang memungkinkan untuk mencari informasi pemilih dalam data yang bocor, membuktikannya.
Sayangnya, Comelec membutuhkan waktu dan tenaga untuk mengganti kunci. Comelec harus memperbarui semua bidang dan meninjau aplikasi yang menggunakan data tersebut. Ini tidak sesederhana mengubah kunci (seperti mengubah kata sandi). Sebagai penutup: Bagian 2: Kebocoran Comelec – apa yang salah? – Rappler.com