Meltdown dan Spectre

Julyanto Sutandang
5 min readJan 13, 2018

Dua terminologi baru yang sedang hits saat ini di dunia IT, menceritakan lubang keamanan yang sudah ada sejak tahun 90-an dan belakangan ini terekspos secara resmi dengan laporan dari [Google Project Zero] (https://googleprojectzero.blogspot.co.id/2018/01/reading-privileged-memory-with-side.html) dan laporan dari beberapa institusi seperti [meltdownattack.com](https://meltdownattack.com/meltdown.pdf) dan [spectreattack.com](https://spectreattack.com/spectre.pdf)

Pendahuluan

Sistem komputer modern umumnya menjalankan banyak aplikasi dalam satu saat dan satu mesin, dengan dimotori oleh beberapa prosesor dalam satu mesin, hal ini adalah tindakan yang bijaksana. Beberapa aplikasi tersebut umumnya memiliki kepentingan dan tugas yang berbeda. Secara normal, masing-masing aplikasi memiliki “dunia” nya sendiri dan tidak saling bertemu satu sama lain, kecuali menggunakan mekanisme tertentu seperti *Shared Memory*, atau sejenisnya. Hal ini disebut dengan *memory isolation* dan dengan adanya *memory isolation*, *developer*, *support*, *business owner* memiliki *’peace of mind’* bahwa sistem mereka aman untuk dijalankan bersamaan dengan sistem lainnya pada mesin yang sama.

Namun ternyata, hal tersebut tidak lagi aman. Mekanisme *Memory Isolation* yang diampu oleh Prosesor dan Sistem Operasi ternyata memiliki celah kebocoran, sehingga aplikasi yang berjalan bersama dengan aplikasi lainnya dalam mesin yang sama, dengan metode tertentu (*Meltdown* dan *Spectre*) mampu mengintip dan menyalin data yang seharusnya tidak dapat diakses. Data tersebut dapat berupa data dari Sistem Operasi atau dari Aplikasi lainnya.

Apakah yang disebut Meltdown?

Penulis mengusulkan penerjemahan istilah tersebut dengan nama: Meler.

Sebuah potensi bocornya informasi yang seharusnya tidak dapat diakses oleh user atau aplikasi yang disebabkan oleh fitur unggulan prosesor. Fitur tersebut adalah *Out-of-order execution*, atau pelaksanaan perintah mesin CPU di luar antrian. Pada dasarnya fitur ini adalah keunggulan teknologi modern, yang menyebabkan kita dapat memiliki sistem komputasi yang cepat dan efisien. Tidak ada yang salah dengan fitur ini, namun ada kekurangan yang cukup fatal sehingga dapat berpotensi dimanfaatkan oleh orang yang tidak bertanggung jawab untuk mengambil data penting yang tidak seharusnya dapat diambil.

Apakah yang disebut dengan Spectre?

Penulis mengusulkan penerjemahan istilah tersebut dengan nama: Mbleber

Seperti halnya Meler, fitur pada prosesor ini juga berpotensi memberikan kebocoran informasi dalam bentuk yang lain. Untuk yang ini disebabkan oleh *Speculative Execution*, atau pelaksanaan perintah mesin CPU yang untung-untungan. Yang dimaksud dengan untung-untungan di sini adalah, ketika prosesor menemukan perintah di depannya berupa pencabangan, maka prosesor akan mengeksekusi salah satu cabang diantara 2 pilihan cabang. Pertimbangan cabang mana yang akan dieksekusi terlebih dahulu didasarkan pada *Branch Prediction*.

Mengapa?

Mungkin kata ini yang menggantung di kepala kita, mengapa prosesor sebegitunya ceroboh melakukan eksekusi perintah sebelum waktunya? Jawabnya adalah kecepatan prosesor itu jauh lebih cepat daripada sumber daya manapun di dalam komputer, termasuk 100 kali lebih cepat daripada akses ke *memory*. Setiap aksi yang dilaksanakan prosesor tentunya sangat terkait dengan *memory*, analogikan prosesor adalah petani dan *memory* adalah sawahnya. Bilamana tidak ada sawah tentu saja petani tidak bisa bekerja. Begitu pula dengan prosesor, namun dengan kecepatan yang jauh lebih tinggi, maka diperlukan satu cara agar energi yang besar tersebut tidak sia-sia. Fitur pelaksanaan eksekusi di luar antrian maupun untung-untungan pada dasarnya adalah pelaksanaan dengan tujuan efisiensi, karena pada saat yang bersamaan prosesor sedang menunggu data dari *memory* masuk ke dalam dirinya. *Memory* lebih lambat 100 kali daripada prosesor.

Nah, ketika hal tersebut dilaksanakan, karena sebetulnya pelaksanaan perintah tersebut bersifat pre-emptive maka tidak ada atau belum ada proteksi ketika ternyata perintah yang dilaksanakan tersebut ternyata sebetulnya tidak diperbolehkan (karena perintah tersebut mengambil lokasi *memory* yang tidak diperbolehkan). Data yang diambil oleh perintah tersebut sebetulnya ketika waktunya prosesor melaksanakan dengan seharusnya sudah dibuang tetapi ternyata masih ketinggalan di dalam Cache Memory Prosesor.

Cache memory Prosesor yang biasa disebut L1D dan L2 adalah *memory* super cepat yang dimiliki oleh prosesor untuk mengantisipasi lambatnya *memory* utama. Ternyata masih ada data yang tertinggal didalam *cache memory* prosesor tersebut dan dapat diambil oleh program tertentu, dan tentu saja bisa digunakan untuk mengungkapkan data rahasia, *password* ataupun lainnya dengan cepat. Bahkan kita dapat membuat program yang melakukan *dumping* seluruh isi *kernel* dari sebuah aplikasi dengan akses user biasa.

Perumpamaan

Sebuah prosesor bisa dianalogikan sebagai bank lengkap dengan kasir yang menangani satu antrian dan melayani nasabah secara berurutan. Ada kalanya seorang kasir bank meminta bantuan staff lain untuk melakukan tugas tertentu, misalnya memfotokopi kartu identitas. Fitur out-of-order execution bekerja seperti kasir bank yang sembari menunggu proses fotokopi nasabah pertama selesai, ia menanyakan kebutuhan nasabah di antrian berikutnya demi efisiensi waktu dan mempercepat performa kerja.

Misalnya nasabah tersebut ingin mentransfer uang ke rekeningnya dan memberikan nomor rekening dan dokumen penting kepada kasir. Namun kasir belum bisa melaksanakan perintah nasabah berikutnya tersebut sebelum proses nasabah pertama selesai, lalu ia meletakkan informasi nasabah tersebut di meja (memori cache prosesor). Permasalahan muncul saat ada salah satu nasabah lain di dalam antrian yang mampu melihat informasi nasabah yang ada di meja kasir. Celah keamanan tersebut, yakni informasi nasabah di meja kasir yang bisa dilihat nasabah lain karena proses out-of-order execution itulah yang disebut Meltdown.

Pencegahan

Adanya masalah ini, sebetulnya tidak menganggu operasional sistem secara normal, karena masalah ini muncul bukan dari operasi sistem yang normal, melainkan dari potensi eksploitasi yang dilakukan oleh pihak yang tidak bertanggung jawab. Yang disebut pihak yang tidak bertanggung jawab dalam hal ini antara lain: Developer yang tidak memiliki integritas yang baik, operator yang memiliki hak akses ke sistem yang tidak memiliki integritas yang baik, pengguna sistem, baik umum maupun khusus, penyedia atau pihak yang bertanggung jawab untuk sistem operasi, pembuat driver hardware, pembuat tools, compiler, dan lain-lain.

Semua kemungkinan co-exist dalam 1 mesin yg sama, memiliki potensi untuk memanfaatkan celah ini, kecuali sudah dilakukan patch pada OS.

Solusi Patch

Apakah patch itu? Dapat diterjemahkan secara bebas dengan arti menambal. Adanya kebocoran yg disebabkan oleh prosesor, namun penambalannya dalam dilakukan di Sistem Operasi. Hal ini wajar saja, sebab sistem operasi adalah manager umum dari seluruh sumber daya komputasi yg dimotori oleh prosesor.

Bug yg ada pada prosesor tentunya tidak dapat diperbaiki oleh penambalan pada sistem operasi, penambalan tersebut dibuat agar data yang tadinya dapat terekspose, menjadi tersembunyi dan tidak dapat diakses secara sembarangan. Patch ini sudah tersedia pada sistem operasi utama, namun saat ini patch tersebut menyebabkannya penurunan kinerja sistem, sampai dengan 30%. Penurunan kinerja tersebut tentu tidak menyenangkan, artinya investasi kita menyusut karena adanya bug ini.

Solusi Mitigasi

Selain menggunakan patch, ada cara lain yang tidak biasa dalam menghadapi bug secara umum, yaitu dengan melakukan langkah-langkah mitigasi dengan dimulai dari asesmen, audit, hardening, implementasi SOP yg lebih ketat dan prudent. Langkah mitigasi ini pada dasarnya tidak menghilangkan potensi kebocoran disisi prosesor tetapi menerapkan mekanisme operasi yang ketat agar tidak ada pemicu yang dapat menyebabkan kebocoran, ibarat orang yang sudah lemah pertahanan tubuhnya, kita rawat lebih detail agar tidak terekspose pada hal hal yang dapat menyebabkan sakit.

Penutup

Mengapa hal ini bisa terjadi? Hal ini pada dasarnya adalah implikasi wajar dari sebuah teknologi. Teknologi tinggi tentu tidak mudah ditiru, apalagi diciptakan dengan investasi yg tidak sedikit. Dengan pemain yang tidak begitu banyak maka keunggulan kompetitif akan menurun, apalagi teknologi ini berasal dari negara Amerika. Sudah beberapa kali kejadian teknologi yg berasal dari negara tersebut berakhir kandas, namun kemudian diteruskan dan dikembangkan oleh negara lain seperti Jepang, China, Eropa dan lainnya. Yang dimaksud teknologi yang kandas tersebut contohnya Cellular AMPS, satelit komunikasi di masa awal, dan lainnya. Semoga dengan adanya kejadian ini kita bisa mengambil pelajaran dari hal ini dan siapa tahu ada di antara kita yg mampu mengembangkan lebih baik lagi di masa depan.

Jakarta, 11 Jan 2018

--

--

Julyanto Sutandang

Technopreneur, System Developer, PostgreSQL Expert, run IT Solution for High Performance System, call me: +628111188812 (julyanto@equnix.asia)