Kecerdasan Data Generatif

Performa dan keamanan bentrok lagi dalam serangan “Collide+Power”.

Tanggal:

Seminggu lagi, BWAIN lagi!

Seperti yang akan Anda ketahui jika Anda mendengarkan minggu lalu podcast (mengisyaratkan, mengisyaratkan!), BWAIN adalah kependekan dari Bug Dengan Nama yang Mengesankan:

Ini adalah nama panggilan yang kami terapkan ketika para penemu serangan keamanan siber baru sangat bersemangat dengan penemuan mereka sehingga mereka memberinya moniker yang ramah PR, mendaftarkan nama domain batil untuknya, membangun situs web kustom, dan mendesain logo khusus untuknya.

Kali ini, namanya Tabrakan + Kekuatan termasuk karakter tanda baca yang mengganggu, yang merupakan nilai tambah dalam penamaan bug, tetapi nilai minus saat mendaftarkan domain internet. (Ironisnya, nama domain diperbolehkan untuk digunakan -, tapi tidak +).

Jadi, nama domain harus disingkat sedikit https://collidepower.com, tetapi situs web tetap akan memberi Anda gambaran tentang masalahnya, bahkan dengan tanda tambah dikurangi.

Tabrakan data yang di-cache, dan ukur daya yang dibutuhkan

Para peneliti di balik ini baru kertas adalah Andreas Kogler, Jonas Juffinger, Lukas Giner, Martin Schwarzl, Daniel Gruss dan Stefan Mangard dari Graz University di Austria, serta Lukas Gerlach dan Michael Schwarz dari CISPA Helmholtz Center for Information Security di Jerman.

Kami tidak akan mencoba menjelaskan berbagai bentuk serangan ini secara panjang lebar, karena detail teknis tentang cara melakukan pengukuran, dan pemodelan matematis yang digunakan untuk membuat kesimpulan dari pengukuran tersebut, sangatlah rumit.

Tapi inti dari masalah, jika Anda akan memaafkan permainan kata parsial, adalah bahwa memori cache yang terkubur di dalam chip prosesor modern, dimaksudkan untuk memberikan peningkatan kinerja yang tidak terlihat dan otomatis…

… tidak selalu tidak terlihat seperti yang mungkin Anda pikirkan, dan terkadang membocorkan sebagian atau semua kontennya, bahkan ke proses yang seharusnya tidak dapat melihatnya.

Seperti namanya, memori cache (diucapkan kas, seperti dalam dolar dan sen, tidak cap, sebagai penghormatan dan prestise, jika Anda pernah bertanya-tanya), menyimpan salinan khusus nilai data dari RAM konvensional di lokasi tersembunyi di dalam chip CPU itu sendiri.

Jika CPU melacak alamat RAM (lokasi memori) yang telah Anda gunakan baru-baru ini, dan dapat menebak dengan cukup baik mana yang akan segera Anda gunakan lagi, itu dapat menyimpannya sementara di memori cache dan dengan demikian sangat mempercepat. akses kedua Anda ke nilai-nilai itu, dan akses ketiga, keempat, dan seterusnya.

Misalnya, jika Anda mencari serangkaian nilai data dalam tabel untuk mengonversi piksel gambar dari satu format warna ke format warna lainnya, Anda mungkin menemukan bahwa sering kali tabel pencarian memberi tahu Anda untuk mengunjungi salah satu alamat RAM 0x06ABCC00 (yang mungkin tempat kode khusus untuk "piksel hitam" disimpan) atau alamat 0x3E00A040 (yang mungkin merupakan lokasi kode "piksel transparan").

Dengan secara otomatis menjaga nilai dari dua alamat memori yang biasa dibutuhkan di dalam cache-nya, CPU dapat melakukan hubungan pendek (secara kiasan, bukan secara harfiah!) upaya di masa mendatang untuk mengakses alamat tersebut, sehingga tidak perlu mengirim sinyal listrik ke luar prosesor, melintasi motherboard, dan ke dalam chip RAM sebenarnya untuk membacakan salinan master dari data yang disimpan di sana.

Jadi, data yang di-cache biasanya lebih cepat diakses daripada data di RAM motherboard.

Secara umum, bagaimanapun, Anda tidak dapat memilih register cache mana yang digunakan untuk menyimpan alamat RAM mana, dan Anda tidak dapat memilih kapan CPU memutuskan untuk berhenti menyimpan nilai "kode piksel transparan" Anda dan mulai menyimpan cache program lain. “kunci kriptografik super rahasia” sebagai gantinya.

Memang, cache mungkin berisi campuran nilai yang liberal, dari campuran alamat RAM yang liberal, milik campuran liberal dari berbagai akun pengguna dan tingkat hak istimewa, semuanya pada saat yang bersamaan.

Untuk alasan ini, bersama dengan alasan efisiensi dan kinerja, bahkan program tingkat admin tidak dapat secara langsung mengintip daftar alamat yang saat ini sedang di-cache, atau mendapatkan nilainya, untuk melindungi data yang di-cache terhadap pengintaian eksternal.

Sebagai seorang programmer, Anda masih menggunakan instruksi kode mesin "membacakan kode piksel transparan dari alamat 0x3E00A040", dan sistem operasi masih memutuskan apakah Anda seharusnya memiliki akses ke data tersebut berdasarkan alamat numerik 0x3E00A040, bahkan jika data pada akhirnya datang langsung dari cache, bukan dari alamat RAM sebenarnya 0x3E00A040.

Harga sedikit flip

Apa yang ditemukan oleh para peneliti Collide+Power, sangat disederhanakan, adalah meskipun Anda tidak dapat langsung mengintip data sementara dalam penyimpanan cache, dan karena itu tidak dapat menghindari perlindungan memori yang akan diterapkan jika Anda menggunakan alamat RAM resminya …

… Anda dapat menebak kapan nilai data tertentu akan ditulis ke dalam register penyimpanan cache tertentu.

Dan ketika satu nomor yang sudah di-cache diganti dengan yang lain, Anda dapat membuat kesimpulan tentang kedua nilai tersebut dengan mengukur berapa banyak daya yang digunakan CPU dalam proses.

(Prosesor modern biasanya menyertakan register internal khusus yang menyediakan pembacaan penggunaan daya untuk Anda, jadi Anda tidak perlu membuka casing komputer dan memasang kabel probe fisik di suatu tempat di motherboard.)

Menariknya, konsumsi daya CPU itu sendiri, saat menimpa nilai cache dengan yang baru, bergantung pada berapa banyak bit yang berubah di antara angka-angka tersebut.

Jika kita menyederhanakan masalah menjadi byte individual, maka timpa nilai binernya 0b00000000 dengan 0b11111111 (mengubah desimal 0 menjadi desimal 255) membutuhkan membalik semua bit dalam byte, yang akan menghabiskan daya paling besar.

Menimpa karakter ASCII A (65 dalam desimal) dengan Z (90 dalam desimal) artinya berubah 0b01000001 ke 0b01011010, di mana empat posisi bit dibalik, sehingga menghabiskan daya yang lumayan

Dan jika angkanya kebetulan sama, tidak ada bit yang perlu dibalik, yang akan menghabiskan daya paling sedikit.

Secara umum, jika Anda XOR dua angka bersama-sama dan menghitung jumlah 1-bit dalam jawabannya, Anda menemukan jumlah pembalikan, karena 0 XOR 0 = 0 dan 1 XOR 1 = 0 (jadi nol menunjukkan tidak ada flip), sementara 0 XOR 1 = 1 dan 1 XOR 0 = 1 (menunjukkan flip).

Dengan kata lain, jika Anda dapat mengakses banyak alamat pilihan Anda sendiri dengan cara yang mengutamakan satu set register cache tertentu di dalam CPU, dan kemudian memantau konsumsi daya dengan cukup akurat ketika kode orang lain mendapatkan datanya yang ditetapkan ke cache tersebut lokasi sebagai gantinya…

…kemudian Anda dapat membuat kesimpulan tentang berapa banyak bit yang dibalik antara isi cache lama dan yang baru.

Tentu saja, Anda dapat memilih nilai yang disimpan di alamat yang digunakan untuk menyiapkan register cache, jadi Anda tidak hanya tahu berapa banyak bit yang mungkin dibalik, tetapi Anda juga tahu apa nilai awal dari bit tersebut sebelum membalik. tempat.

Itu memberi Anda lebih banyak data statistik untuk memprediksi kemungkinan nilai baru dalam cache, mengingat Anda tahu apa yang ada sebelumnya dan kemungkinan jumlah bit yang sekarang berbeda.

Anda mungkin tidak dapat mengetahui dengan tepat data apa yang digunakan oleh proses korban Anda, tetapi meskipun Anda dapat menghilangkan beberapa pola bit, Anda baru saja mempelajari sesuatu yang seharusnya tidak Anda ketahui.

Dan jika data itu, katakanlah, semacam kunci enkripsi, Anda mungkin dapat mengubah serangan brute force yang tidak layak menjadi serangan di mana Anda mungkin berhasil.

Misalnya, jika Anda dapat memprediksi 70 bit dalam kunci enkripsi 128 bit, alih-alih mencoba semua kombinasi 128 bit, yang akan menjadi tugas yang mustahil, Anda harus mencoba 258 kunci yang berbeda sebagai gantinya (128 – 70 = 58), yang mungkin sangat layak.

Tidak perlu panik

Untungnya, “kerentanan” ini (sekarang dijuluki CVE-2023-20583) kemungkinan tidak akan digunakan untuk melawan Anda dalam waktu dekat.

Ini lebih merupakan masalah teoretis yang perlu dipertimbangkan oleh produsen chip, berdasarkan kebenaran bahwa serangan keamanan siber "hanya akan menjadi lebih baik dan lebih cepat", daripada lubang yang dapat dieksploitasi yang dapat digunakan saat ini.

Nyatanya, para peneliti mengakui, dengan malu-malu, bahwa “kamu tidak perlu khawatir. "

Mereka benar-benar menulis kamu dalam huruf miring, dan kutukan tidak perlu khawatir dalam huruf tebal:

Kesimpulan di situs BWAIN.

Di akhir makalah, para peneliti dengan sedih mencatat bahwa beberapa hasil dunia nyata terbaik mereka dengan serangan ini, dalam kondisi lab yang ideal, bocor hanya 5 bit per jam.

Untuk salah satu skenario serangan mereka, sebenarnya, mereka mengakui bahwa mereka menghadapi “batasan praktis yang menyebabkan tingkat kebocoran lebih dari [satu] tahun per bit”.

Ya, Anda membacanya dengan benar – kami memeriksanya beberapa kali di koran hanya untuk memastikan kami tidak membayangkannya.

Dan itu, tentu saja, menimbulkan pertanyaan, "Berapa lama Anda harus membiarkan kumpulan pengujian transfer data berjalan sebelum Anda dapat mengukur tingkat transmisi serendah itu dengan andal?"

Menurut perhitungan kami, satu bit per tahun memberi Anda sekitar 125 byte per milenium. Pada tingkat itu, mengunduh film blockbuster tiga jam yang baru dirilis Oppenheimer dalam kualitas IMAX, yang tampaknya memakan waktu sekitar setengah terabyte, akan memakan waktu sekitar 4 miliar tahun. Untuk menempatkan fakta aneh itu ke dalam perspektif, Bumi itu sendiri baru berusia sekitar 4.54 miliar tahun, kurang lebih beberapa ratus juta bulan.

Apa yang harus dilakukan?

Cara paling sederhana untuk menangani CVE-2023-20538 saat ini adalah dengan tidak melakukan apa-apa, mengingat para peneliti sendiri telah menyarankan Anda untuk tidak khawatir.

Jika Anda merasa perlu melakukan sesuatu, baik prosesor Intel maupun AMD memiliki cara untuk sengaja mengurangi akurasi alat pengukur daya mereka, dengan menambahkan noise acak ke pembacaan daya.

Ini membuat rata-rata Anda benar tetapi cukup memvariasikan pembacaan individu untuk membuat serangan yang sudah tidak layak ini menjadi lebih sulit untuk dilakukan.

Mitigasi pengukuran daya Intel dikenal sebagai menjalankan pemfilteran batas daya rata-rata (RAPL).; AMD disebut sebagai mode determinisme kinerja.


tempat_img

Intelijen Terbaru

tempat_img