/ Proc / cpuinfo dosyasının "hata" bölümü gerçekte ne gösterir?


23

Güncel bir çekirdeğe ve kurulu bir mikro koduna sahip olan bir Debian Stretch ve test / Buster sisteminde hala hata olarak listelenen erime ve hayaletleri görüyorum /proc/cpuinfo.

Ancak, spectre-meltdown-checkerşovları çalıştırmak savunmasız değil.

Bu yüzden ne /proc/cpuinfogösterdiğini merak ediyorum . Bunlar sadece bu cpu için güvenlik açıkları mı ve yamalanmış bir sisteme rağmen her zaman listelenecekler mi?

Yanıtlar:


22

“Hatalar” alanının amacı, onu tanıtan/proc/cpuinfo taahhüt mesajında ​​açıklanmıştır :

x86/cpufeature: Hata bayrakları ekle /proc/cpuinfo

Tespit ettiğimizi ve / veya üzerinde çalıştığımız CPU'yu hata çözümlerini uyguladığımız bayrakları, özellik bayraklarına benzer şekilde boşaltın.

Bunun avantajı, CPU özellikleri gibi zaman içinde biriken olmamasıdır.

Önceden, çekirdeğin algıladığı donanım hataları ayrı özellikler olarak listeleniyordu ( örn . 32 bit x86 sistemlerinde kendi f00f_buggirişi olan rezil F00F hatası /proc/cpuinfo). "Hatalar" girişi, bunları ileriye dönük, x86 CPU bayrakları ile aynı tarzda, tek bir özellikte tutmak için tanıtıldı .

Girdilerin pratikte ne anlama geldiğine bakıldığında, mesajda görebileceğiniz gibi, garantili olan tek şey çekirdeğin bir donanım hatası algılamasıdır . Sorunların çözülüp çözülmediğini belirlemek için başka bir yere bakmanız gerekir (önyükleme iletileri veya dosyalar gibi belirli /procgirişler veya /sysgirişler /sys/devices/system/cpu/vulnerabilities/).

“Hata” girişlerinin faydası iki şekilde sınırlıdır. Birincisi, gerçek negatiflerin bilinmeyenlerden ayırt edilememesidir: alan “cpu_meltdown” belirtmiyorsa, çekirdeğin Meltdown hakkında bilmediği anlamına gelmediğini (sadece alandan) bilemezsiniz veya CPU'nuzun Meltdown'dan etkilenmediğini İkincisi, tespitin çok basit olabileceğidir; Dikkatli olduğu için, CPU'nuzun olmadığı zaman savunmasız olduğunu bildirebilir. “Algılama” tabloya dayalı olduğundan, doğruluğu, çalıştığınız çekirdeğin hangi sürümüne bağlı olduğuna bağlıdır.

Meltdown ve Spectre hataları durumunda, değerleri değerleri besleyen algılama işlemi x86'da /proc/cpuinfo şöyle çalışır :


2
Hayalet ve erime durumunda, onlar bile algılanmazlar, sadece varsayılırlar . Her ikisinden de etkilenmeyen bir sıra x86'm var, ancak çekirdek, temelde "mikro kod düzeltme eki uygulanmamış X'ten daha eski herhangi bir Intel işlemci erime için savunmasız" diyen bir kodlanmış kural nedeniyle zaten olduğunu bildirdi.
R. ..

2
@R .. CPU'nuz çekirdek içindeki sıralı tablolara dahil edildi mi? ( En son tabloları görmek için buradaki “cpu_no_speculation” ifadesini arayın .) Bu gerçekten “hata” giriş wrt ile ilgili sorunlardan biridir. Meltdown, Spectre ve ortaklarının doğruluğu, çekirdeğinin “algılanması” masaya dayalı olduğundan beri ne kadar yeni olduğuna bağlıdır.
Stephen Kitt

Hayır, bu bir Centerton Bonnell ve oradan kayıp. Bir yama göndermeyi göreceğim.
R. ..

Mikro kod güncellemeleri önyükleme sırasında ancak çekirdeği yükledikten sonra uygulandığında bunun hala doğru olup olmadığını bilen var mı?
Bachsau

12

Meltdown / Spectre güvenlik açıkları CPU yonga seti tasarımında / mimarisinde ve gelecekteki yeni donanımları satın almanın ötesinde yamalar , uzun vadede güzel bir güvenlik yanılsaması oluşturuyor . Kusurlardan yararlanmanın yeni yöntemleri, zaman içinde mevcut yamaları atlayabilen yüzeyler oluşturabilir.

Kısacası, mevcut yazılım yamaları / mikro kodları , Spectre / Meltdown istismar ailesinin bilinen yöntemlerine karşı olan sorunları hafifletir , ancak ilk başta onlara izin veren temel CPU tasarım sorunlarını çözmez. CPU'ların etkilenen (birkaç kuşak) uzun vadede savunmasız kalmayı bırakmadı (ve büyük olasılıkla asla).

Bununla birlikte, @Gilles'in doğru bir şekilde belirttiği gibi, bu uyarıya sahip olmak mevcut bilinen istismarların Spectre / Meltdown yöntemlerinin işe yarayacağı anlamına gelmez; yamalar kurulursa çalışmayacaklar.

Soruda söz konusu olan durumda, çekirdek yalnızca Spectre / Meltdown'dan etkilendiği bilinen CPU modellerini (sadece x86 hakkında konuşuyorsak şu an için tüm x86 CPU'ları) kontrol ediyor ve bu nedenle cpu-insecurehata bölümünde listeleniyor. / satırına /proc/cpuinfo.

Git kontrol et /proc/cpuinfo. Çekirdeğinizde KPTI yaması varsa, cpu_insecure içerecektir

KPTI yamasının bu kod parçasına sahip olduğunu buldum:

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

Ve çekirdek güncellemesinden sonra şunları alırsınız:

bugs      : cpu_insecure

PS. Spectre / Meltdown "bug" larını kullanmak için yeni bir yöntem için bir çok güncelleme yapıldı. Muhtemelen bu son olmayacak.


2
Örneğin, bir süredir saate kadar satın alabilirseniz, yeni nesil CPU'ları bekleyin. Kristal topum, orta vadede yer fıstığı satan çok sayıda 2. el sunucuya sahip olduğumuzu söylüyor.
Rui F Ribeiro

CPU hataları, /proc/cpuinfobir yazılım yaması tarafından tamamen azaltılsa bile listelenir . Onların varlığı yok değil sistem söz konusu hatadan savunmasız olduğu anlamına gelir.
Gilles 'SO- kötülük olmayı bırak'

@Gilles onayladıysa, bilinen istismarları uygulayamazsın. Bununla birlikte, zaten 1. nesil yamalar etrafında dolaşan bir dizi istismara uğradık ve buradaki büyük bir CPU yeniden tasarımını zorlayacak temel bir tasarım hatası olduğu yönündeki eleştiriyi susturarak bir sürü ticari çıkar olduğunu söylemeye teşebbüs ediyorum.
Rui F Ribeiro

1
Bu, Spectre / Meltdown tipi istismarlar için geçerlidir, bunlar vermeye devam edecek temel tasarım sorunlarıdır. Ama bunun bugsçizgi dizileri için doğru olduğunu ve bunun yanlış olduğunu yazdın . Çoğu CPU tasarım hatası, yalnızca küçük bir performansa mal olan tam bir yazılım geçici çözümüne sahiptir. Çekirdek geçici çözümü uygularsa, böcek zararsızdır.
Gilles 'SO- kötülük olmayı bırak'

1
@Rui oh sanırım kendimi yeterince açık ifade etmedim - makalenin kendi başlığının sorduğu soruyu cevaplamadığını, bu soruyu cevaplamadığını; (Makalede olduğu gibi, “Endüstride Çarpıcı Spectre böceğinin yedi ay boyunca nasıl gizli kaldığını” açıklıyor, ancak makale IMO'nun nasıl olduğunu açıklamıyor .)
Stephen Kitt
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.