Apakah Raspberry Pi rentan terhadap eksploitasi Spectre atau Meltdown?

58

Ada dua kelemahan keamanan serius yang baru ditemukan, Specter dan Meltdown .

Apakah Raspberry Pi rentan terhadap Specter dan / atau Meltdown?

Janghou
sumber
1
Menurut para peneliti: Saat ini, tidak jelas apakah prosesor ARM dan AMD juga dipengaruhi oleh Meltdown.
Janghou
1
Ada contoh bahwa Anda dapat mencuri kata sandi dengan Javascript di browser (Chrome / Firefox).
Janghou
4
@ alex2003super: Jangan panik. Meskipun skala perangkat yang terpengaruh sangat mengejutkan, peluang Anda untuk benar-benar terpengaruh oleh masalah ini sangat rendah. Dan bahkan jika tidak, ketakutan tidak akan membantu. :)
Lightness Races dengan Monica
1
Tampaknya mereka tidak rentan, berikut adalah artikel terbaru tentang subjek raspberrypi.org/blog/…
Omar Elabd
5
Anda mungkin menemukan posting ini menarik: raspberrypi.org/blog/…
pfm

Jawaban:

61

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:

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.

Aurora0001
sumber
Saya bertanya-tanya apakah perubahan pada kernel Linux yang diperlukan pada arsitektur lain akan didorong ke versi Linux yang berjalan pada Raspberry Pi? Seharusnya perubahan ini akan memperlambat sistem jadi mungkin RP akan terpengaruh meskipun tambalan tidak diperlukan.
Bobby Durrett
4
Patch kernel mendeteksi prosesor apa yang sedang berjalan dan secara otomatis menonaktifkan sendiri jika itu bukan model yang terpengaruh. Selain itu kernel untuk Raspberry Pi (dan kebanyakan komputer papan tunggal lainnya) dibangun khusus untuk perangkat keras yang tersedia, dan tidak ada alasan bagi pengelola untuk menyertakan atau mengaktifkan tambalan yang dimaksud.
Perkins
1
@ BobbyDurrett, perubahan Meltdown ke kernel duduk di bagian spesifik x86 dari basis kode. Perubahan yang berhubungan dengan Spectre ada di semua tempat, tetapi kebanyakan dari mereka berada di bagian spesifik prosesor dari kode, atau ditangani oleh kompiler. Beberapa bit, seperti perubahan struktural pada kode jaringan, mungkin bocor ke Pi, tetapi sebagian besar tidak.
Markus
Terima kasih atas komentarnya. Sangat menarik untuk memikirkan bagian mana dari kode kernel Linux yang spesifik untuk prosesor. Saya kira dengan sistem operasi yang berjalan pada banyak jenis CPU yang berbeda Anda harus melakukan pekerjaan yang baik untuk membagi kode yang spesifik untuk setiap prosesor.
Bobby Durrett
22

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.

Menandai
sumber
10

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.

ahli hukum agama
sumber
" Sekarang, jika dua cabang memiliki status prediksi yang sama, Anda dapat mengukur ke arah mana cabang tertentu telah mengambil di masa lalu. " Bagaimana Anda melakukan ini tanpa eksekusi spekulatif?
Peter Taylor
@PeterTaylor, CPU ARM ini memiliki prediktor cabang, dan karenanya, mereka memiliki eksekusi spekulatif. Apa yang hilang dari mereka adalah eksekusi yang tidak sesuai pesanan.
juhist
Mereka didokumentasikan memiliki instruksi spekulatif mengambil, tetapi itu bukan eksekusi spekulatif. Ini adalah poin yang adil bahwa masih mungkin untuk menggunakannya sebagai oracle.
Peter Taylor
Bahkan pengambilan spekulatif mungkin cukup, karena akan ada perbedaan latensi yang kecil tetapi dapat diukur.
juhist
Linux sudah menambahkan pengacakan alamat kernel; Anda tidak dapat memprediksi alamat cabang.
MSalters