Ada dua kelemahan keamanan serius yang baru ditemukan, Specter dan Meltdown .
Apakah Raspberry Pi rentan terhadap Specter dan / atau Meltdown?
Ada dua kelemahan keamanan serius yang baru ditemukan, Specter dan Meltdown .
Apakah Raspberry Pi rentan terhadap Specter dan / atau Meltdown?
Jawaban:
Menurut ARM sendiri, inti prosesor yang digunakan di semua model sebelum Pi 4 tidak rentan .
Mayoritas prosesor Arm tidak terpengaruh oleh variasi mekanisme spekulasi saluran samping ini. Daftar definitif dari subset kecil prosesor yang dirancang Arm yang rentan dapat ditemukan di bawah. [lihat tautan untuk tabel]
Core prosesor yang digunakan oleh Pis lama adalah:
Pi 1 dan Nol (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 dan Pi 3 : ARM Cortex-A53
Tidak ada inti di atas yang terdaftar sebagai rentan terhadap versi serangan apa pun (mereka tidak terdaftar sama sekali, karena tidak ada kerentanan yang diketahui terhadap serangan ini).
The Raspberry Pi 4 menggunakan Cortex-A72 , yang terdaftar sebagai rentan terhadap varian 1, 2, 3a dan 4. Sebagaimana dinyatakan dalam Apakah Raspberry Pi 4 rentan terhadap eksploitasi hantu? , Raspbian berisi mitigasi perangkat lunak terhadap kerentanan ini, sehingga risiko eksploitasi harus rendah. Sistem operasi lain mungkin tidak mengandung mitigasi yang tepat, dan sementara ARM mengatakan mitigasi perangkat keras telah dirilis untuk Cortex-A72, tidak jelas apakah ini telah diterapkan pada Pi 4.
Perhatikan bahwa Varian 1 dan 2 (CVE-2017-5753 dan CVE-2017-5715) dikenal sebagai Specter , dan Varian 3 (CVE-2017-5754) dan 3a (serangan terkait yang diselidiki oleh ARM) disebut Meltdown . Oleh karena itu, tidak ada perangkat Raspberry Pi sebelum Pi 4 yang diyakini rentan terhadap Specter atau Meltdown.
Pi (semua versi) tidak rentan.
Spectre dan Meltdown keduanya membutuhkan eksekusi out-of-order. The Cortex-A7 yang digunakan pada awal Pi 2 dan A53 Cortex digunakan di kemudian Pi 2 dan Pi 3 adalah arsitektur ketat-order. The ARM11 digunakan dalam Pi 1 sebagian out-of-order, tapi tidak dengan cara yang memungkinkan momok atau Meltdown untuk bekerja.
ARM mengonfirmasi hal ini : hanya sebagian kecil dari prosesor ARM yang memiliki perangkat keras yang membuatnya rentan terhadap Specter, subset yang lebih terbatas lagi rentan terhadap Meltdown, dan diyakini bahwa semuanya mengizinkan mitigasi ancaman.
Saya ingin menawarkan pandangan saya yang berbeda tentang ini.
Tentang Meltdown, ini adalah kerentanan yang sangat spesifik di beberapa prosesor, jadi jika ARM mengatakan CPU di Raspberry Pi tidak rentan, maka itu mungkin bisa dipercaya.
Namun, Specter adalah kerentanan yang lebih umum. Sejauh ini, hanya dua varian yang telah diperlihatkan tetapi saya cukup yakin ada lebih banyak varian. Kesalahan dalam CPU adalah bahwa status prediktor cabang tidak memerah ketika melakukan saklar konteks, dan bahwa status prediktor cabang diindeks oleh bit urutan rendah dari alamat instruksi cabang, dan tidak ditandai sama sekali. Jadi, Anda mungkin memiliki dua cabang yang berbagi status prediktor cabang yang sama, bahkan melintasi batas proses.
Saya sangat yakin bahwa CPU di semua model Raspberry Pi mirip dengan hampir semua CPU lain di luar sana dalam hal bahwa cabang prediktor hanyalah sebuah array besar dari penghitung jenuh 2-bit (diambil secara kuat, diambil secara lemah, tidak diambil dengan kuat, kuat belum diambil). Indeks array ini adalah bit orde rendah dari alamat instruksi cabang, dan tidak ada tag, dan negara prediktor ini tidak pernah memerah.
Sekarang, jika dua cabang memiliki status prediktor yang sama, Anda dapat mengukur ke mana cabang tertentu telah mengambil di masa lalu. Kebocoran informasi Specter ada di sana! Jika Anda dapat dengan andal memicu peramban untuk menjalankan beberapa kode bercabang pada kata sandi Anda dari JavaScript, dan mengukur jalan yang dilalui cabang, Anda memang bisa mengekstrak kata sandi. Sekarang ini adalah contoh ekstrem, tidak ada yang waras akan bercabang di setiap bit kata sandi Anda dengan cara yang dapat dipicu dari JavaScript, tetapi ini menunjukkan masalah.
Jangan percaya semua yang dikatakan ARM. Apa yang dimaksud dengan ARM mungkin eksploit yang dikembangkan Google tidak bekerja pada CPU ARM ini. Itu tidak berarti bahwa mereka akan kebal terhadap Specter. Jenis eksploitasi lain mungkin berhasil.
Lihat pertanyaan ini: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix dan pahami implikasi jawabannya. Kode JavaScript jahat yang berjalan di peramban Anda dapat karena Spectre mengukur cara mana cabang lain dalam proses tersebut telah berjalan. Bahkan instruksi flush prediktor cabang tidak akan memperbaiki masalah JavaScript jahat ini, kecuali jika browser secara aktif membersihkan prediktor cabang sebelum menjalankan kode yang tidak terpercaya.
Spectre akan bersama kita untuk waktu yang sangat, sangat lama, sebagai prediktor cabang menggunakan 14 bit karena indeks tidak ditandai dengan 18 bit yang tersisa dari ruang alamat 32-bit, karena itu kemudian akan membutuhkan 20 bit (2 bit saturating counter , Tag 18 bit), bukan hanya 2 bit. Ini akan mengalikan ukuran prediksi cabang dengan sepuluh! Saya mengharapkan produsen CPU untuk menambahkan instruksi flush prediktor cabang yang bekerja bahkan di ruang pengguna tanpa hak istimewa dan kernel untuk menggunakannya saat pengalihan konteks dan ruang pengguna untuk menggunakannya saat menjalankan kode JIT yang tidak terpercaya. Ini akan memperbaiki sebagian besar masalah Spectre dalam praktiknya, tetapi secara teori, tidak semuanya.