Tahun 2018 saat ini menarik karena hampir setiap bulan ada informasi tentang kerentanan perangkat keras baru: Specter dan Meltdown .
Baru-baru ini - beberapa minggu yang lalu! - Berita profil tinggi diterbitkan tentang kerentanan Foreshadow dan L1Terminal Fault , yang dilaporkan memotong bahkan mekanisme SGX (Sofware Guard Extensions) , yang sebelumnya dianggap hampir tidak dapat dipecahkan.
Seberapa berbahaya kerentanan ini? Apakah mungkin untuk bertahan melawan mereka, dan jika demikian, bagaimana? Kami akan membicarakan semua ini di bawah.
Referensi cepat
Foreshadow, atau L1TF, adalah seluruh kelompok kerentanan yang mencakup:
- CVE-2018-3615 - untuk memotong SGX;
- CVE-2018-3620 - untuk menyerang kernel sistem operasi, serta SMM (Mode Manajemen Sistem);
- CVE-2018-3646 - untuk menyerang mesin virtual.
Para penulis dari banyak publikasi secara khusus prihatin tentang kemungkinan menghindari perlindungan SGX: Specter dan Metldown tidak tahu bagaimana melakukan ini, dan ini membuat data sensitif tidak berdaya. Untuk memahami bagaimana alarm ini dibenarkan, mari kita menganalisis prinsip-prinsip pengoperasian mekanisme SGX.
Apa itu SGX dan bagaimana saya bisa mengatasinya
Singkatan SGX adalah singkatan dari Software Guard Extensions. Ini adalah nama serangkaian instruksi untuk prosesor Intel yang digunakan untuk menyoroti area pribadi kode dan data. Pada 2015, salah satu pencipta SGX, Matthew Hoykstra (Matthew Hoeskstra) menerbitkan sebuah artikel (lihat juga terjemahan Rusia ), di mana ia mengidentifikasi tujuan-tujuan berikut untuk menciptakan teknologi ini:
- memberi pengembang aplikasi kemampuan untuk melindungi data penting dari akses atau perubahan yang tidak sah oleh perangkat lunak berbahaya yang berjalan dengan hak istimewa lebih tinggi;
- memungkinkan aplikasi untuk memastikan integritas dan kerahasiaan data dan kode sensitif tanpa mengganggu pengoperasian sistem privilege dan tanpa mengganggu perencanaan dan pengendalian sumber daya platform;
- membuat platform mengukur kode tepercaya dan menggunakan aplikasi untuk menghasilkan sertifikat yang ditandatangani dan sertifikat lain yang mengkonfirmasi bahwa kode tersebut diinisialisasi dengan benar di lingkungan tepercaya;
- memberi pengguna kemampuan untuk mengontrol aplikasi, sementara tidak membatasi kebebasan untuk menginstal dan menghapus aplikasi dan layanan;
- Izinkan pengembang membuat aplikasi tepercaya menggunakan alat dan proses yang diketahui mereka.
- Memberikan peningkatan produktivitas untuk aplikasi tepercaya
- memungkinkan aplikasi untuk menentukan bidang kode dan data yang tepercaya bahkan dalam kasus ketika seorang penyerang secara fisik mengontrol platform dan dapat melakukan serangan langsung pada memori (lihat satu contoh di sini ).
Artikel yang dikutip memiliki lebih banyak pemasaran daripada rincian teknis. Ini menguraikan secara umum teknologi SGX memungkinkan Anda untuk melakukan apa, tetapi tidak ada kata tentang BAGAIMANA hal ini dilakukan. Kami akan menjelaskan ini secara rinci di bawah ini. Dalam presentasi kami, kami terutama akan mengandalkan artikel terperinci yang diterbitkan oleh Asosiasi Internasional untuk Penelitian Kriptologi (IACR, Asosiasi Internasional untuk Penelitian Kriptologis).
SGX membuat dalam memori wilayah yang dilindungi - PRM (Processor Reserved Memory) , yang juga disebut enklave. Prosesor melindungi enklaf dari upaya akses apa pun, termasuk dari inti, hypervisor, dan SMM (Mode Manajemen Sistem), serta dari upaya akses dari perangkat periferal.
PRM memiliki cache khusus, yang disebut EPC (Enclave Page Cache) , yang terdiri dari empat kilobyte halaman yang menyimpan kode enklave dan data. Ketika fungsi tepercaya dipanggil, aplikasi "melihat" hanya melampirkan data; setiap akses eksternal, termasuk dari OS, dilarang.
Dengan segala upaya untuk mengakses enklaf, apa yang disebut prosedur sertifikasi terjadi. Enklaf meminta laporan yang ditandatangani perangkat keras, termasuk informasi tentang nilainya. Laporan ini dikirim ke server sertifikasi. Bagian publik dari kunci aplikasi dikirim ke enklaf; kemudian kunci pribadi dibuat, tergantung pada kantong dan platform. Kunci dienkripsi dengan kunci masuk dan disimpan untuk digunakan di masa mendatang.
Sebagaimana dicatat dalam publikasi resmi Intel, SGX dapat melindungi terhadap semua jenis serangan terhadap data dan kode: baik dari sistem dan perangkat lunak pengguna, dan dari bootloader. Tetapi SGX tidak dapat melindungi dari apa yang disebut serangan saluran samping. SGX tidak dapat menyiasati Specter dan Meltdown yang terkenal jahat.
Namun, baru-baru ini ada serangan (pada kenyataannya, bahkan sebelum Foreshadow - lihat, misalnya, di sini ) yang memungkinkan Anda untuk memotong perlindungan SGX. Selain itu, Foreshadow adalah yang paling keras dan sensasional dari mereka.
Dokumentasi SGX mencatat bahwa "tidak mungkin untuk membaca dari kantong dan tidak ada yang dapat ditulis ke dalamnya, terlepas dari keberadaan hak istimewa dari tingkat apa pun." Namun, pada kenyataannya, ini jauh dari kasus.
Kembali pada musim semi tahun ini, muncul informasi tentang serangan yang disebut SGX Specter, yang dengannya Anda dapat mengekstrak data dari kantong. Seperti yang ditunjukkan oleh para peneliti di Ohio State University (lihat, misalnya, di sini ), ini dimungkinkan berkat "lubang" di SDK, yang dengannya pengembang dapat mengintegrasikan dukungan SGX ke dalam aplikasi mereka. Di antara SDK yang terpengaruh adalah Intel SGX SDK, Rust-SGX dan Graphene-SGX. Analisis terperinci dari serangan ini dapat ditemukan di artikel ini ; Sebuah video juga diposting di Youtube dengan contoh yang bagus.
Video itu, tentu saja, tidak meyakinkan: fakta semata-mata memasuki kantong tidak berarti bahwa data penting dapat dicuri. Namun demikian, harus dicatat: integritas dan kerahasiaan mekanisme SGX dilanggar.
Foreshadow memecah isolasi dengan menggunakan serangan sisi-saluran.
Seperti dalam Spectre dan Meltdown yang terkenal, kerentanan menggunakan mekanisme eksekusi perintah spekulatif. Hal ini didasarkan pada titik berikut: ketika mengakses memori pada alamat virtual yang mengarah ke kesalahan halaman terminal karena kurangnya bendera Present di tabel PTE (Entri Table Page), prosesor Intel secara spekulatif menghitung alamat fisik dan memuat data jika mereka Tersedia dalam L1 Cache. Perhitungan spekulatif dilakukan sebelum memeriksa ketersediaan data dalam memori fisik dan sebelum memeriksa ketersediaan data ini untuk dibaca. Jika tidak ada bendera Present di PTE, maka operasi dibuang; tetapi data "disimpan" dalam cache dan dapat diekstraksi darinya. Data dapat diekstraksi ke alamat fisik apa pun; ini membuka peluang besar bagi penyerang dan memungkinkan, misalnya, untuk mengekstrak data pada host dari mesin tamu. Video demo telah muncul:
Namun, video itu tidak terlihat, terus terang, sangat meyakinkan dan menyerupai banyak demonstrasi kerentanan Spectre dan Meltdown yang menjelajah internet awal tahun ini: tampaknya kita berhasil mengatasi perlindungan - tetapi bagaimana selanjutnya? Tentu saja, memotong SGX jelas bukan kasus penggunaan yang baik.
Kenapa harus takut?
Berbeda dengan Spectre dan Meltdown yang terkenal, Foreshadow hanya mengancam prosesor Intel. Dalam uraian, dicatat bahwa dengan bantuan serangan ini dimungkinkan untuk mengekstrak tidak hanya data rahasia dari enklosur, tetapi juga kunci sertifikasi swasta, yang merusak kepercayaan pada seluruh ekosistem SGX.
Berbagai variasi Foreshadow mengancam apa yang disebut Mode Manajemen Sistem (SMM), inti dari sistem operasi hypervisor. Beberapa ahli mencatat bahwa menggunakan Foreshadow Anda dapat mencuri data dari mesin virtual di cloud pihak ketiga. Ada publikasi di mana dicatat bahwa serangan baru bahkan memungkinkan Anda untuk melewati patch yang dihitung sebelumnya untuk melindungi terhadap serangan Specter dan Meltdown.
Namun - seperti halnya Specter dan Meltdown - semua pernyataan profil tinggi harus diperlakukan dengan sangat hati-hati. Belum ada kasus pencurian data penting dan rahasia menggunakan serangan sensasional. Prototipe eksploit yang diterbitkan (seperti yang diperingatkan penulisnya sendiri) tidak lebih dari sampel eksperimental, diambil dari praktik nyata, dan tidak akan selalu berhasil untuk semua orang, terutama ketika menyangkut mesin virtual. Karena itu, terlalu dini untuk panik: agar tidak hanya menembus kantong, tetapi untuk mengambil informasi yang sangat penting darinya, Anda harus benar-benar mencoba.
Sampai saat ini, belum ada serangan yang benar-benar serius.
Tambalan dan kinerja
Topik tambalan yang melindungi dari kerentanan perangkat keras (dan jika tidak melindungi, maka meratakan konsekuensinya) juga sangat relevan. Ingat cerita baru-baru ini dengan Specter dan Meltdown: banyak tindakan diambil dalam urutan kebakaran, yang menyebabkan bukan konsekuensi terbaik: reboot sistem mendadak, penurunan tajam dalam kinerja, dll. Microsoft bahkan harus merilis pembaruan yang menonaktifkan tambalan Intel. Dalam tiga bulan pertama tahun ini, hanya 32 tuntutan hukum yang diajukan terhadap Intel.
Perusahaan-perusahaan besar segera menanggapi publikasi informasi tentang kerentanan Foreshadow: Intel , Red Hat , SUSE , VMware , Oracle membuat pernyataan yang relevan. Yang tidak kalah cepat adalah pembaruan yang dirilis untuk produk Cisco dan untuk kernel Linux.
Bukan tanpa insiden: Intel dengan cepat merilis pembaruan mikrokode, tetapi tanpa insiden aneh: larangan tiba-tiba diumumkan pada publikasi hasil pengujian kinerja sebelum dan sesudah pembaruan (kemudian, namun larangan itu dicabut ). Apa yang sulit dikatakan. Dan topik efek tambalan pada kinerja tidak diragukan lagi layak untuk studi terpisah dan artikel terpisah. Dan mungkin saja kami akan menerbitkan artikel seperti itu dalam waktu dekat.
Kesimpulan
Dalam artikel ini, kami telah memberikan tinjauan singkat tentang kerentanan kelas Foreshadow. Tentu saja, tidak mungkin membicarakan semua aspek kerentanan kelompok Foreshadow dalam kerangka satu artikel. Karena itu, kami menyediakan pilihan tautan yang bermanfaat bagi mereka yang ingin mempelajari lebih lanjut:
Jika Anda memiliki pengalaman dalam menganalisis kerentanan perangkat keras dan konsekuensinya - selamat mengomentari.