eBPF'de Spectre 4 saldırı korumasını atlayabilecek güvenlik açıkları

Linux çekirdeğinde, eBPF alt sisteminin Spectre v4 saldırısına (SSB, Spekülatif Mağaza Atlaması) karşı korumayı atlamak için kullanılmasına izin veren iki güvenlik açığı belirlendi. Ayrıcalıksız bir BPF programı kullanan bir saldırgan, belirli işlemlerin spekülatif olarak yürütülmesi için koşullar oluşturabilir ve çekirdek belleğinin rastgele alanlarının içeriğini belirleyebilir. Çekirdekteki eBPF alt sistemlerinin bakımcıları, pratikte saldırı gerçekleştirme yeteneğini gösteren bir prototip istismara erişim elde etti. Sorunlar, bir sonraki Linux çekirdek güncellemesinde yer alacak yamalar (1, 2) halinde giderildi. Dağıtım kitlerindeki güncellemeler henüz oluşturulmadı (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Spectre 4 saldırı yöntemi, dolaylı adresleme kullanarak alternatif yazma ve okuma işlemlerini işlerken işlemlerin spekülatif olarak yürütülmesinin sonucunun atılmasından sonra işlemci önbelleğinde depolanan verilerin geri yüklenmesine dayanır. Bir okuma işlemi bir yazma işlemini takip ettiğinde (örneğin, mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), gerçekleştirilen benzer işlemler nedeniyle okuma adresinin ofseti zaten biliniyor olabilir (okuma işlemleri çok daha sık gerçekleştirilir ve okumalar önbellekten gerçekleştirilebilir) ve işlemci, yazmanın dolaylı sapmasının hesaplanmasını beklemeden spekülatif olarak yazmadan önce okumalar gerçekleştirebilir.

Ofseti hesapladıktan sonra, yazma ve okuma için bellek alanlarının kesişimi tespit edilirse, işlemci zaten spekülatif olarak elde edilen okuma sonucunu atacak ve bu işlemi tekrarlayacaktır. Bu özellik, depolama işlemi henüz tamamlanmadığında okuma komutunun bazı adreslerdeki eski bir değere erişmesine olanak tanır. Başarısız bir spekülatif işlemin atılmasından sonra, yürütmesinin izleri önbellekte kalır; bundan sonra, önbellek içeriğini belirleme yöntemlerinden biri, önbelleğe alınmış ve önbelleğe alınmamış verilere erişim süresindeki değişikliklerin analizine dayanarak onu almak için kullanılabilir.

İlk güvenlik açığı (CVE-2021-35477), BPF program doğrulama mekanizmasındaki bir kusurdan kaynaklanmaktadır. Doğrulayıcı, Spectre 4 saldırısına karşı koruma sağlamak için, potansiyel sorunlu depolamaların ardından, önceki işlemin izlerini değiştirmek için boş bir değer saklayan belleğe ek bir talimat ekler. Boş yazma işleminin çok hızlı olması ve yalnızca BPF yığın çerçevesine yönelik bir işaretçiye bağlı olması nedeniyle spekülatif yürütmeyi engellemesi bekleniyordu. Ancak gerçekte, spekülatif uygulamaya yol açan bir talimatın, önleyici depolama işleminden önce yürütülmesini sağlayacak koşullar yaratmanın mümkün olduğu ortaya çıktı.

İkinci güvenlik açığı (CVE-2021-3455), BPF doğrulayıcının potansiyel olarak tehlikeli bellek kaydetme işlemlerini belirlediğinde, ilk yazma işlemi korunmayan BPF yığınının başlatılmamış alanlarını hesaba katmaması nedeniyledir. Bu özellik, depolama talimatını yürütmeden önce başlatılmamış bir hafıza alanına bağlı olarak spekülatif bir okuma işleminin gerçekleştirilmesine olanak sağlar. BPF yığını için yeni bellek, ayrılmış bellekte bulunan içerik kontrol edilmeden tahsis edilir ve BPF programı çalıştırılmadan önce, daha sonra BPF yığını için tahsis edilecek olan bellek bölgesinin içeriğini değiştirmek için bir yol vardır.

Kaynak: opennet.ru

Yorum ekle