SWAPGS - CPU'nun spekülatif yürütme mekanizmasındaki yeni bir güvenlik açığı

Bitdefender'dan araştırmacılar açıklığa kavuşmuş yeni güvenlik açığı (CVE-2019-1125) modern CPU'ların spekülatif talimat yürütme mekanizmasında, SWAPGS adı verilen ve soruna neden olan işlemci talimatının adına karşılık gelen. Güvenlik Açığı verir Ayrıcalığı olmayan bir saldırganın çekirdek bellek alanlarının veya çalışan sanal makinelerin içeriğini belirlemesine izin verir. Sorun tarafından onaylandı Intel işlemcilerde (x86_64) ve kısmen etkiler Ana saldırı vektörünün görünmediği AMD işlemciler. Spectre ve Meltdown güvenlik açıklarına karşı koymak için daha önce uygulanan yöntemler, Intel işlemcileri kullanırken SWAPGS saldırısına karşı koruma sağlamaz, ancak Linux, ChromeOS, Android ve Windows için düzeltmeler zaten önerilmiştir.

Güvenlik açığı Spectre v1 sınıfına ait ve talimatların spekülatif olarak yürütülmesinden sonra kalan verilerin işlemci önbelleğinden geri yüklenmesi fikrine dayanıyor. Performansı artırmak için, modern CPU'ların dallanma tahmin birimleri, yürütülme olasılığı en yüksek olan bazı talimatların önleyici olarak yürütülmesini kullanır, ancak bunların yürütülmesini belirleyen tüm faktörlerin hesaplanmasını beklemeden (örneğin, dallanma koşulları veya erişim parametreleri henüz belirlenmediğinde). henüz hesaplanmıştır). Tahmin doğrulanmazsa, işlemci spekülatif yürütmenin sonucunu atar, ancak bu sırada işlenen veriler işlemci önbelleğinde kalır ve önbellek içeriğini yan kanallar aracılığıyla belirleme, erişimdeki değişikliği analiz etme yöntemleri kullanılarak geri yüklenebilir. önbelleğe alınan ve önbelleğe alınmayan veriler için gereken süre.

Yeni saldırının özelliği, kontrol kullanıcı alanından işletim sistemi çekirdeğine (GS) geçtiğinde GS kaydının değerini değiştirmek için işletim sistemlerinde kullanılan SWAPGS komutunun spekülatif yürütülmesi sırasında meydana gelen bir sızıntının kullanılmasıdır. Kullanıcı alanında kullanılan değer, çekirdekteki işlemler sırasında kullanılan değerle değiştirilir). Linux çekirdeğinde GS, çekirdek verilerine erişmek için kullanılan bir per_cpu işaretçisini saklar ve kullanıcı alanı işaretçileri TLS'ye (İş Parçacığı Yerel Depolama) depolar.

Çekirdeğe çekirdek alanından tekrar erişirken veya GS kayıt değişikliği gerektirmeyen kodu çalıştırırken SWAPGS komutunun iki kez çağrılmasını önlemek için, komuttan önce bir kontrol ve koşullu dallanma gerçekleştirilir. Spekülatif yürütme motoru, kontrolün sonucunu beklemeden SWAPGS talimatıyla proaktif olarak kod yürütmeye devam eder ve seçilen dal onaylanmazsa sonucu atar. Bu nedenle, SWAPGS yürütmesini içermeyen bir dal spekülatif olarak seçildiğinde, ancak spekülatif yürütme sırasında GS kaydının değeri SWAPGS talimatı tarafından değiştirilecek ve CPU önbelleğinde sona eren bağımlı bellek işlemlerinde kullanılacaksa bir durum ortaya çıkabilir.

Araştırmacılar, istismar prototipleri hazırlanan iki saldırı senaryosu önerdiler. İlk senaryo, SWAPGS komutunun gerçekte yürütmede kullanılmasına rağmen spekülatif olarak yürütülmediği duruma dayanmaktadır ve ikincisi ise SWAPGS talimatının gerçekte yürütülmemesi gerekmesine rağmen spekülatif olarak yürütüldüğü duruma dayanmaktadır. Her senaryo için, istismar için iki seçenek vardır: Saldırgan, çekirdek alanındaki belirli bir adresteki değeri belirleyebilir ve saldırgan, çekirdekteki rastgele adreslerde belirli bir değeri arayabilir. Bir saldırının gerçekleştirilmesi uzun zaman alır ve istismarın sızıntıyı tamamlaması birkaç saat sürebilir.

Linux çekirdeğinde bir sorun var elendi Diğer Spectre v1 sınıfı güvenlik açıklarının düzeltilmesine benzer şekilde, SWAPGS talimatını çağırma mantığını değiştirerek (spekülatif yürütmeyi engelleyerek). Ek korumanın tipik iş yüklerinin performansı üzerinde minimum etkiye sahip olması bekleniyor. Kullanıcı ile çekirdek alanı arasındaki geçiş aşamasında gecikme meydana gelir ve bu, örneğin uygulamadan yoğun sistem çağrısı olduğunda veya sık sık NMI ve kesinti oluştuğunda performansın düşmesine neden olabilir.

Düzeltme, hem ana bilgisayar sistemine hem de konuk ortamlarına bir çekirdek güncellemesinin yüklenmesini ve ardından sistemin yeniden başlatılmasını gerektirir. Linux'ta korumayı devre dışı bırakmak için, SWAPGS güvenlik açığını engellemeye yönelik önlemleri de devre dışı bırakan "nospectre_v1" seçeneği kullanılabilir. Düzeltme şu şekilde mevcuttur: yama sürümlere zaten dahil olan Linux çekirdeği için 4.19.65, 5.2.7, 4.14.137, 4.9.188 ve 4.4.188. Linux dağıtımlarına yönelik güncellemeler henüz yayınlanmadı (Debian, RHEL, Fötr şapka, Arch Linux, SUSE/openSUSE, Ubuntu). Windows'ta sorun sessizce çözüldü Temmuz güncellemesi. Google Şirketi tedarikli ChromeOS ile birlikte gönderilen çekirdek 4.19 için düzeltme ve Android.

Bitdefender araştırmacılarına göre Intel, sorun hakkında geçen yılın ağustos ayında bilgilendirildi. Microsoft, Google ve Linux çekirdeği geliştiricilerinin bir düzeltmenin koordineli geliştirilmesine dahil olduğu sorunun programlı olarak çözülmesine karar verildi. Açıklardan yararlanmada kullanılan WRGSBASE talimatının desteklenmemesi nedeniyle Ivy Bridge öncesi eski Intel işlemcilere saldırılması çok daha zordur. ARM, POWER, SPARC, MIPS ve RISC-V sistemleri SWAPGS komutunu desteklemedikleri için sorundan etkilenmezler.

Sorun esas olarak Intel işlemci sahiplerini etkiliyor -
AMD sistemlerinde, rastgele bellek alanlarında belirli değerleri aramak için kullanılabilen GS kaydının temel değerinin spekülatif olarak işlenmesiyle sınırlı olan yalnızca ikinci saldırı senaryosu yeniden üretilebildi. Bu saldırı seçeneğini engellemek için yeterli Spectre v1'e karşı mevcut koruma yöntemleri.

Kaynak: opennet.ru

Yorum ekle