Ahududu Pi, Spectre veya Meltdown istismarına karşı savunmasız mıdır?


58

Keşfedilen iki yeni ciddi güvenlik açığı var, Spectre ve Meltdown .

Raspberry Pi, Spectre ve / veya Meltdown için savunmasız mı?


1
Araştırmacılara göre: Şu anda, ARM ve AMD işlemcilerin Meltdown'dan da etkilenip etkilenmediği açık değil.
Janghou

1
Bir tarayıcıda Javascript ile bir şifre çalabileceğiniz bir örnek var (Chrome / Firefox).
Janghou

4
@ alex2003super: Çıldırma. Etkilenen cihazların ölçeği şaşırtıcı olsa da, bu sorundan gerçekten herhangi bir şekilde etkilenme ihtimaliniz oldukça düşüktür. Olmasalar bile, çıldırmak işe yaramazdı. :)
Monica

1
Görünüşe göre savunmasız değiller, işte raspberrypi.org/blog/…
Omar Elabd

5
Bu
yazıyı

Yanıtlar:


61

ARM'in kendilerine göre , Pi 4'ten önceki tüm modellerde kullanılan işlemci çekirdeği korunmasız .

Arm işlemcilerin çoğu, bu yan kanal spekülasyon mekanizmasındaki herhangi bir değişiklikten etkilenmez. Duyarlı olan Arm tasarımlı işlemcilerin küçük alt kümesinin kesin bir listesi aşağıda bulunabilir. [tablo için bağlantıya bakınız]

Eski Pis tarafından kullanılan işlemci çekirdeği:

Yukarıdaki çekirdeklerin hiçbiri saldırının herhangi bir sürümüne karşı savunmasız olarak listelenmiyor (aslında bu saldırılar için bilinen bir güvenlik açığı olmadığı için listelenmiyorlar).

Ahududu Pi 4 kullanan Korteks-A72 , zayıf olarak listelenen belirtildiği gibi 4. varyant 1, 2, 3a ve Spectre patlatır karşı savunmasız Ahududu Pi 4 mi? Raspbian, bu güvenlik açıklarına karşı yazılım azaltımları içerdiğinden, sömürü riski düşük olmalıdır. Diğer işletim sistemleri uygun azaltmalar içermeyebilir ve ARM , Cortex-A72 için bir donanım azaltmanın serbest bırakıldığını söylerken, bunun Pi4'e uygulanıp uygulanmadığı açık değildir.

Varyant 1 ve 2'nin (CVE-2017-5753 ve CVE-2017-5715) Spectre olarak bilindiğini ve Varyant 3'ün (CVE-2017-5754) ve 3a'nın (ARM tarafından araştırılan ilgili bir saldırı) Meltdown olarak adlandırıldığını unutmayın . Bu nedenle Pi4'ten önceki Raspberry Pi cihazlarının hiçbirinin Spectre veya Meltdown'a karşı savunmasız olduğuna inanılmaktadır.


Acaba Linux çekirdeğindeki değişikliklerin diğer mimariler için yapılması gerekenler Ahududu Pi ile çalışan Linux sürümlerine aktarılacak mı? Güya bu değişiklikler sistemi yavaşlatır, böylece yamalar gerekmese bile RP etkilenir.
Bobby Durrett

4
Çekirdek düzeltme eki hangi işlemci üzerinde çalıştığını algılar ve etkilenen bir model değilse, kendisini otomatik olarak devre dışı bırakır. Ek olarak, Raspberry Pi'nin (ve diğer birçok tek kartlı bilgisayarın) çekirdeği, özellikle mevcut donanım için özel olarak üretilmiştir ve bakıcıların söz konusu yamayı eklemesi veya etkinleştirmesi için hiçbir neden yoktur.
Perkins,

1
@BobbyDurrett, Meltdown'un çekirdeğe yaptığı değişiklikler kod tabanının x86'ya özgü bölümünde oturuyor. Spectre ile ilgili değişiklikler her yerde, ancak çoğu kodun işlemciye özel bölümlerinde veya derleyici tarafından gerçekleştiriliyor. Ağ kodunda yapısal değişiklikler gibi bazı parçalar Pi'nin içine sızabilir, ancak çoğu olmaz.
Mark

Yorumlarınız için teşekkürler. Linux çekirdek kodunun hangi bölümlerinin işlemciye özgü olduğunu düşünmek ilginçtir. Bir çok farklı türde CPU üzerinde çalışan bir işletim sistemiyle, her bir işlemciye özel olan kodu bölmek için iyi bir iş çıkarmanız gerektiğini düşünüyorum.
Bobby Durrett

22

Pi (tüm sürümler) savunmasız değildir.

Spectre ve Meltdown, sıra dışı çalıştırma gerektirir. Cortex-A7 erken Pi 2 ve kullanılan Cortex A53 sonra Pi 2 ve Pi 3 kullanılan bir katı halinde sipariş mimarisidir. ARM11 Pi 1 'de kullanılan çalışma Spectre veya Meltdown izin verecek bir şekilde, kısmen dışı amacıyla, fakat değildir.

ARM bunu onaylar : yalnızca çok sınırlı bir ARM işlemci grubu onları Spectre'ye karşı savunmasız kılan donanımlara sahiptir, hatta daha sınırlı bir alt küme Meltdown'a karşı savunmasızdır ve hepsinin tehdidin azaltılmasına izin verdiğine inanılmaktadır.


10

Bu konuda farklı yaklaşımlarımı sunmak isterim.

Meltdown hakkında, bazı işlemcilerde çok açık bir güvenlik açığı var. ARM, Raspberry Pi'deki CPU'nun savunmasız olmadığını söylüyorsa, muhtemelen güvenilir olabilir.

Ancak, Spectre daha genel bir güvenlik açığıdır. Şimdiye kadar, sadece iki değişken gösterildi, ancak daha fazla değişken olduğuna eminim. İşlemcideki hata, bağlamsal anahtarlama yapılırken dal tahmincisi durumunun temizlenmemesi ve dal tahmincisi durumunun branş yönlendirme adresinin düşük sıra bitleri tarafından endekslenmesi ve hiç etiketlenmemesidir. Bu nedenle, işlem sınırları boyunca bile aynı şube tahmin durumunu paylaşan iki kolunuz olabilir.

Tüm Raspberry Pi modellerinde bulunan CPU'nun, şube belirleyicisinin sadece 2 bitlik doygunluk gösteren büyük bir dizi (kuvvetle alınmış, zayıf bir şekilde alınmış, zayıf bir şekilde alınmamış, güçlü bir şekilde alındığı) olduğu için, diğer tüm işlemcilere benzemektedir. alınmadı). Bu dizinin indeksi, dal talimat adresinin düşük sıra bitleridir ve etiket yoktur ve bu yordayıcı durum hiçbir zaman temizlenmez.

Şimdi, eğer iki dal aynı tahminde bulunuyorsa, belirli bir dalın son geçmişte hangi yolu kullandığını ölçebilirsiniz. Spectre bilgi sızıntısı bu yüzden orada! Tarayıcınızda, şifrenizde JavaScript’ten bazı kod dallandırma işlemleri yürütmek ve dalların hangi yoldan gittiğini ölçmek için güvenilir bir şekilde tetikleyebilirseniz, gerçekten de şifreyi çıkarabilirsiniz. Şimdi bu aşırı bir örnek, kimse aklı başında şifrenizin tetiklenebileceği bir şekilde şifrenizin her bir parçasına dalmaz, ancak bu sorunu gösterir.

ARM'ın söylediği her şeye inanma. ARM, muhtemelen Google’ın geliştirdiği istismarların bu ARM CPU’larda çalışmadığını gösterir. Bu onların Spectre'ye yenilmez olacağı anlamına gelmez. Başka bir çeşit istismar da işe yarayabilir.

Bu soruya bakınız: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix ve cevabının anlamlarını anlayın. Tarayıcınızda çalışan sahte bir JavaScript kodu, Spectre'nin işlemdeki diğer dalların hangi yollardan geçtiğini ölçmesinden kaynaklanabilir. Bir şube belirleyici temizleme talimatı bile, tarayıcı güvenilir olmayan kod çalıştırmadan önce şube belirleyiciyi aktif olarak temizlemediği sürece bu sahte JavaScript sorununu çözmez.

İndeks olarak 14 bit kullanan dal tahmincisi, 32 bit adres alanının kalan 18 bitiyle etiketlenmemiş olduğundan, o zaman 20 bit (2 doygunluk sayacı , 18 bit etiketi) yerine sadece 2 bit. Bu, şube belirleyici boyutunu on ile çarpacaktır! CPU üreticilerinin, özel ayrıcalıklara sahip olmayan kullanıcı alanı ve bağlam değiştirme sırasında kullanmak için çekirdeği ve güvenilmeyen JITed kodu çalıştırırken kullanmak için kullanıcı alanını bile çalıştıran bir şube belirleyici temizleme talimatı eklemelerini bekliyorum. Bu, çoğu Spectre problemini pratikte, ancak teoride, hepsini çözmeyecektir.


Şimdi, iki şube aynı öngörücü durumu paylaşıyorsa, yakın geçmişte belirli bir dalın hangi yoldan geçtiğini ölçebilirsiniz. ” Bunu spekülatif uygulama olmadan nasıl yapıyorsunuz?
Peter Taylor

@PeterTaylor, bu ARM işlemcilerinde dal kestiricisi var ve bu nedenle spekülatif yürütmeleri var. Kaçırdıkları şey sıra dışı idam.
juhist

Spekülatif talimat alma yetkisine sahip oldukları belgelenmiştir, ancak bu spekülatif bir uygulama değildir. Onu bir kehanet olarak kullanmanın hala mümkün olabileceği adil bir nokta.
Peter Taylor,

Küçük ama ölçülebilir bir gecikme farkı olacağı için spekülatif alım bile yeterli olabilir.
juhist

Linux zaten çekirdek adres randomizasyonu ekliyordu; bir şubenin adresini tahmin edemezsiniz.
MSalters,
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.