eBPF alt sistemindeki, Spectre saldırılarına karşı korumanın atlanmasına izin veren güvenlik açıkları

Linux çekirdeğinde (CVE-2021-33624), eBPF alt sisteminin Spectre sınıfı güvenlik açıklarına karşı korumayı atlamak için kullanılmasına izin veren ve bu güvenlik açığı için koşulların oluşturulması sonucunda bellek içeriğinin belirlenmesini mümkün kılan bir güvenlik açığı tespit edildi. belirli operasyonların spekülatif olarak yürütülmesi. Spectre saldırısı, ayrıcalıklı kodda talimatların spekülatif olarak yürütülmesine yol açan belirli bir komut dizisinin varlığını gerektirir. Yürütmek üzere iletilen BPF programlarını manipüle ederek, eBPF'de benzer talimatlar oluşturmak ve çekirdek belleğinin içeriğini ve fiziksel belleğin rastgele alanlarını yan kanallar aracılığıyla sızdırmak mümkündür.

Güvenlik açığı, BPF programlarındaki hataları ve kabul edilemez etkinlikleri tespit etmek için kullanılan doğrulayıcıdaki kusurlardan kaynaklanmaktadır. Doğrulayıcı olası kod yürütme yollarını sıralar, ancak talimat seti mimarisinin semantiği açısından kabul edilemez olan dallanma seçeneklerini atlar. Bir BPF programı yürütülürken, doğrulayıcı tarafından dikkate alınmayan bu tür dallanma seçenekleri, işlemci tarafından yanlış tahmin edilebilir ve spekülatif modda yürütülebilir. Örneğin, "yükleme" işlemini analiz ederken doğrulayıcı, talimatın, değeri her zaman belirtilen sınırlar içinde olan bir adrese sahip bir kayıt kullanmasını bekler, ancak bir saldırgan, işlemcinin spekülatif olarak bir işlemi gerçekleştirmeye çalışacağı koşullar yaratabilir. doğrulama koşullarını karşılamayan bir adres.

Sorun, çekirdek 4.15'in piyasaya sürülmesinden bu yana ortaya çıkıyor ve yamalar (1, 2, 3, 4) şeklinde düzeltildi. Güvenlik açığı dağıtımlarda (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch) düzeltilmedi.

Ayrıca Spectre güvenlik açıklarına karşı koruma sağlayan araçların performans etkisi hakkındaki notu da not edebilirsiniz. Not, bir zamanlar Mozilla'da Firefox'ta tekrarlanması zor hataları ayıklamak için oluşturulmuş olan rr (Kaydet ve Tekrar Oynat) hata ayıklayıcısının optimizasyonunun sonuçlarını özetlemektedir. Dizinlerin varlığını kontrol etmek için kullanılan sistem çağrılarının önbelleğe alınması, test projesi için "rr kaynakları" işlemini 3 dakika 19 saniyeden 36 saniyeye düşürdü.

Optimizasyon yazarı, Spectre korumasını devre dışı bıraktıktan sonra performansın nasıl değişeceğini kontrol etmeye karar verdi. Sistem “mitigations=off” parametresi ile başlatıldıktan sonra “rr kaynaklarının” optimizasyon olmadan yürütme süresi 2 dakika 5 saniye (1.6 kat daha hızlı), optimizasyon ile 33 saniye (%9 daha hızlı) oldu. İlginç bir şekilde, Spectre korumasını devre dışı bırakmak yalnızca çekirdek seviyesinde kod yürütme süresini 1.4 kat azaltmakla kalmadı (2 dakika9 saniyeden 1 dakika 32 saniyeye) aynı zamanda muhtemelen CPU önbellek işleminin ve TLB'nin verimliliğindeki azalma nedeniyle kullanıcı alanındaki yürütme süresini de yarıya indirdi (1 dakika9'dan 0 dakika 33 saniyeye) Spectre koruması etkinleştirildiğinde sıfırlanır.

Kaynak: opennet.ru

Yorum ekle