Keşfedilen iki yeni ciddi güvenlik açığı var, Spectre ve Meltdown .
Raspberry Pi, Spectre ve / veya Meltdown için savunmasız mı?
Keşfedilen iki yeni ciddi güvenlik açığı var, Spectre ve Meltdown .
Raspberry Pi, Spectre ve / veya Meltdown için savunmasız mı?
Yanıtlar:
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:
Pi 1 ve Sıfır (W) : ARM11
Pi 2 V1 : ARM Cortex-A7
Pi 2 V1.2 ve Pi 3 : ARM Cortex-A53
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.
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.
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.