Apa yang sebenarnya ditampilkan oleh bagian "bug" dari / proc / cpuinfo?

23

Pada sistem Debian Stretch dan pengujian / Buster dengan kernel saat ini dan mikrokode terinstal, saya masih melihat krisis dan momok terdaftar sebagai bug di Windows /proc/cpuinfo.

Namun, menjalankan spectre-meltdown-checkerpertunjukan tidak rentan.

Jadi saya bertanya-tanya apa yang /proc/cpuinfoditampilkan. Apakah ini hanya kerentanan untuk cpu ini dan akankah mereka selalu terdaftar meskipun memiliki sistem yang ditambal?

hurrbert
sumber

Jawaban:

22

Maksud dari bidang "bug" /proc/cpuinfodiuraikan dalam pesan komit yang memperkenalkannya :

x86/cpufeature: Tambahkan flag bug ke /proc/cpuinfo

Buang flag yang menunjukkan kami telah mendeteksi dan / atau telah menerapkan solusi bug ke CPU yang kami jalankan, dengan cara yang mirip dengan flag fitur.

Keuntungannya adalah mereka tidak terakumulasi seiring waktu seperti fitur CPU.

Sebelumnya, bug perangkat keras yang terdeteksi oleh kernel terdaftar sebagai fitur terpisah ( mis. Bug F00F yang terkenal, yang memiliki f00f_bugentri sendiri /proc/cpuinfopada sistem x86 32-bit). Entri "bug" diperkenalkan untuk menahan ini dalam satu fitur maju, dengan gaya yang sama dengan flag CPU x86 .

Sejauh apa yang dimaksud entri dalam praktiknya, seperti yang dapat Anda lihat di pesan, semua yang dijamin adalah bahwa kernel mendeteksi bug perangkat keras. Anda harus mencari di tempat lain (mem-boot pesan, atau /procentri tertentu atau/sys entri tertentu seperti file di /sys/devices/system/cpu/vulnerabilities/) untuk menentukan apakah masalah ditangani.

Kegunaan entri "bug" terbatas dalam dua cara. Yang pertama adalah bahwa negatif sejati tidak dapat dibedakan dari yang tidak dikenal: jika bidang tidak menentukan "cpu_meltdown", Anda tidak bisa tahu (hanya dari bidang) apakah itu berarti bahwa kernel tidak tahu tentang Meltdown, atau bahwa CPU Anda tidak terpengaruh oleh Meltdown. Yang kedua adalah bahwa deteksi bisa terlalu sederhana; itu salah di sisi hati-hati, sehingga mungkin melaporkan bahwa CPU Anda rentan ketika tidak. Karena "deteksi" digerakkan oleh tabel, akurasinya tergantung pada versi kernel yang Anda jalankan.

Dalam kasus bug Meltdown dan Specter, proses deteksi yang mengumpankan nilai dalam /proc/cpuinfo karya sebagai berikut , pada x86:

Stephen Kitt
sumber
2
Dalam kasus momok dan kehancuran mereka bahkan tidak terdeteksi tetapi hanya diasumsikan . Saya memiliki in-order x86 yang tidak terpengaruh oleh keduanya, tetapi kernel hanya melaporkan bahwa itu karena aturan hardcoded yang pada dasarnya mengatakan "cpu Intel yang lebih tua dari X tanpa patch mikrokode yang diterapkan rentan terhadap krisis".
R ..
2
@ R .. apakah CPU Anda termasuk dalam tabel urutan dalam kernel? (Carilah "cpu_no_speculation" di sini untuk melihat tabel terbaru.) Itu memang salah satu masalah dengan entri "bug" wrt. Meltdown, Specter, dan co., Akurasinya benar-benar tergantung pada seberapa baru kernel Anda sejak “deteksi” mereka digerakkan oleh tabel.
Stephen Kitt
Tidak, ini Centerton Bonnell dan hilang dari sana. Saya akan melihat tentang mengirim tambalan.
R ..
Adakah yang tahu apakah ini masih benar ketika pembaruan mikrokode telah diterapkan saat boot tetapi setelah memuat kernel?
Bachsau
12

Kerentanan Meltdown / Spectre ada pada desain / arsitektur chipset CPU, dan kekurangan untuk membeli perangkat keras masa depan, patch adalah ilusi keamanan yang bagus untuk jangka panjang . Metode baru untuk mengeksploitasi kelemahan mungkin muncul dari waktu ke waktu yang dapat memotong patch saat ini.

Singkatnya, perangkat lunak saat ini patch / microcode memitigasi masalah terhadap metode eksploit yang diketahui dari keluarga Spectre / Meltdown, tetapi tidak memecahkan masalah desain CPU yang mendasarinya yang memungkinkan mereka di tempat pertama. CPU yang terpengaruh (beberapa generasi) tidak berhenti menjadi rentan dalam jangka panjang (dan kemungkinan besar tidak akan pernah).

Namun, seperti yang dinyatakan @Gilles dengan benar, memiliki peringatan itu tidak berarti metode Spectre / Meltdown eksploit yang diketahui saat ini akan berfungsi; mereka tidak akan bekerja jika tambalan diinstal.

Dalam kasus yang disebutkan dalam pertanyaan, kernel hanya memeriksa model CPU yang diketahui dipengaruhi oleh Specter / Meltdown (semua CPU x86 untuk saat ini jika kita hanya berbicara tentang x86), dan karenanya cpu-insecuremasih terdaftar di bagian bug / baris dalam /proc/cpuinfo.

Periksa Anda /proc/cpuinfo. Ini akan berisi cpu_insecure jika kernel Anda memiliki patch KPTI

Saya telah menemukan bahwa tambalan KPTI memiliki kode ini:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

Dan setelah pembaruan kernel, Anda mendapatkan:

bugs      : cpu_insecure

PS. Sudah ada putaran pembaruan untuk metode baru untuk mengeksploitasi "bug" Spectre / Meltdown. Mungkin bukan yang terakhir.

Rui F Ribeiro
sumber
2
mis. Jika Anda dapat menunda membeli jam tangan sebentar, tunggu generasi CPU baru. Bola kristal saya memberi tahu kami bahwa kami akan memiliki banyak server tangan kedua yang menjual kacang dalam jangka menengah.
Rui F Ribeiro
Bug CPU terdaftar /proc/cpuinfobahkan jika mereka sepenuhnya dimitigasi oleh tambalan perangkat lunak. Kehadiran mereka tidak berarti bahwa sistem Anda rentan terhadap bug tertentu.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles dikabulkan, Anda tidak akan dapat menerapkan eksploitasi yang diketahui. Namun kami telah melakukan serangkaian eksploitasi seputar generasi ke-1 tambalan, dan saya berani mengatakan bahwa ada banyak kepentingan komersial di luar sana membungkam kritik bahwa ini adalah cacat desain mendasar yang akan memaksa pendesainan ulang CPU yang besar.
Rui F Ribeiro
1
Itu berlaku untuk eksploitasi tipe Spectre / Meltdown, itu adalah masalah desain mendasar yang akan terus memberi. Tetapi Anda menulis bahwa ini benar untuk bugspertunjukkan garis, dan ini hanya salah. Sebagian besar bug desain CPU memiliki solusi perangkat lunak lengkap yang hanya membutuhkan sedikit kinerja. Jika kernel menerapkan solusi, maka bug tidak berbahaya.
Gilles 'SANGAT berhenti menjadi jahat'
1
@Rui oh saya pikir saya tidak mengekspresikan diri saya dengan cukup jelas - maksud saya artikel itu tidak menjawab pertanyaan yang diajukan oleh judulnya sendiri, bukan karena tidak menjawab pertanyaan ini ;-). (Seperti dalam, judul artikel itu adalah "Bagaimana bug Spectre pemecah industri tetap rahasia selama tujuh bulan", tetapi artikel itu tidak menjelaskan bagaimana IMO.)
Stephen Kitt