Zen+ ve Zen 2 mikro mimarilerini temel alan AMD işlemcilerinde Meltdown sınıfı bir güvenlik açığı keşfedildi

Dresden Teknik Üniversitesi'nden bir grup araştırmacı, Zen+ ve Zen 2020 mikro mimarilerini temel alan AMD işlemcilerde Meltdown sınıfı saldırıya izin veren bir güvenlik açığı (CVE-12965-2) tespit etti. Başlangıçta AMD Zen+ ve Zen 2 işlemcilerinin Meltdown güvenlik açığından etkilenmediği varsayılmıştı ancak araştırmacılar, kanonik olmayan sanal adresler kullanıldığında korunan bellek alanlarına spekülatif erişime yol açan bir özellik tespit etti.

AMD64 mimarisi sanal adresin yalnızca ilk 48 bitini kullanır ve kalan 16 biti yok sayar. 48'den 63'e kadar olan bitlerin her zaman 47. bitin (işaret biti uzantısı) değerini kopyalaması gerektiği belirtilmiştir. Bu koşul ihlal edilirse ve üst bitlerin keyfi değerlerine sahip bir adrese erişim girişiminde bulunulursa işlemci bir istisna oluşturur. Üst bitlerin tekrar tekrar doldurulması, mevcut adres alanının iki bloğa bölünmesine neden olur - üst bitlerin 0'a ayarlandığı alt blok (00007'dan 800000000000FFFFFFFFFFFFFF'ye) ve üst bitlerin 1'a ayarlandığı üst blok (FFFFXNUMX'den FFFFFFFFFFFFFFFFF'ye) tüm üst bitler XNUMX'e ayarlanmıştır.

Belirtilen blokların içine düşen adreslere kanonik, üst bitlerin keyfi içeriğine sahip yanlış adreslere ise kanonik olmayan adresler denir. Kurallı adreslerin alt aralığı tipik olarak süreç verileri için tahsis edilir ve üst aralık çekirdek verileri için kullanılır (bu adreslere kullanıcı alanından erişim ayrıcalık ayırma düzeyinde engellenir).

Klasik Meltdown güvenlik açığı, talimatların spekülatif olarak yürütülmesi sırasında işlemcinin özel bir veri alanına erişebilmesi ve daha sonra, ayarlanan ayrıcalıkların kullanıcının işlemine bu tür erişimi yasaklaması nedeniyle sonucu atabilmesi gerçeğine dayanmaktadır. Programda, spekülatif olarak yürütülen blok, gerçek koşullarda her zaman tetiklenen koşullu bir dal ile ana koddan ayrılır, ancak koşullu ifadenin, işlemcinin önleyici yürütme sırasında bilmediği hesaplanmış bir değer kullanması nedeniyle. kod, tüm şube seçenekleri spekülatif olarak gerçekleştirilir.

Spekülatif olarak yürütülen işlemler, normal olarak yürütülen talimatlarla aynı önbelleği kullandığından, spekülatif yürütme sırasında, önbellekte özel bir bellek alanındaki bireysel bitlerin içeriğini yansıtan işaretleyiciler ayarlamak ve ardından normal olarak yürütülen kodda zamanlama yoluyla değerlerini belirlemek mümkündür. analiz, önbelleğe alınmış ve önbelleğe alınmamış verilere erişim sağlar.

AMD Zen+ ve Zen 2 işlemcilerini etkileyen yeni güvenlik açığının bir özelliği de CPU'ların, üstteki 16 biti göz ardı ederek geçersiz, kanonik olmayan adresler kullanarak belleğe erişen spekülatif okuma ve yazma işlemlerine izin vermesidir. Böylece, spekülatif kod yürütme sırasında işlemci her zaman yalnızca alt 48 biti kullanır ve adresin geçerliliği ayrıca kontrol edilir. Kanonik olmayan bir sanal adresi, ilişkisel çeviri arabelleğindeki (TLB) fiziksel bir adrese çevirirken, adresin kanonik kısmında bir eşleşme tespit edilirse, spekülatif yükleme işlemi, içeriği dikkate almadan değeri döndürecektir. iş parçacıkları arasındaki bellek paylaşımının atlanmasına izin veren üst 16 bitten oluşur. Daha sonra işlem geçersiz sayılacak ve atılacaktır, ancak belleğe erişim tamamlanacak ve veriler önbelleğe alınacaktır.

Deney sırasında araştırmacılar, FLUSH+RELOAD önbelleğinin içeriğini belirleme tekniğini kullanarak, saniyede 125 bayt hızında gizli veri aktarımı için bir kanal organize edebildiler. Sorun, AMD çiplerinin yanı sıra klasik Meltdown güvenlik açığına duyarlı tüm Intel işlemcileri de etkiliyor. LFENCE talimatlarını kullanmak gibi Meltdown saldırılarını engellemeye yardımcı olan aynı teknikler, bu yeni saldırı türüne karşı koruma sağlamak için kullanılabilir. Örneğin, bir Intel işlemci Meltdown'a karşı donanım koruması içeriyorsa veya sistemde yazılım koruması etkinse, bu tür yapılandırmalar yeni saldırı türüne karşı savunmasızdır.

Araştırmacılar aynı zamanda Intel işlemcilerle karşılaştırıldığında AMD işlemci mimarisinin gerçek saldırı gerçekleştirme olasılığını sınırladığını ancak bunların etkinliğini artırmak için diğer mikro mimari saldırılarla birlikte yeni bir yöntemin kullanılmasını dışlamadığını belirtiyor. Özellikle önerilen saldırı, çekirdeğin bellek alanlarının ve diğer süreçlerin içeriğini belirlemeye izin vermiyor, ancak aynı sanal bellek alanında çalışan aynı programın diğer iş parçacıklarına erişim sağlama yeteneğiyle sınırlı.

Güvenlik açığı olmayan bir program, kendi iş parçacıklarına erişim sağlama yeteneğine sahip olduğundan, pratik açıdan bakıldığında, yöntem, sanal alan izolasyonunu atlamak ve üçüncü taraf yazılımların yürütülmesine izin veren programlarda diğer iş parçacıklarının çalışmalarına müdahaleyi düzenlemek için ilgi çekicidir. web tarayıcıları ve JIT motorları gibi kodlar. Araştırmacılar, SpiderMonkey JavaScript motorunun ve Linux çekirdeğinin saldırılara yönelik güvenlik açığını incelediler ancak bir saldırı gerçekleştirmek için kullanılabilecek güvenlik açığı bulunan kod dizilerini bulamadılar. Uygulamalara saldırmanın yanı sıra bu yöntem, diğer mikro mimari güvenlik açıklarından yararlanırken işlemcinin mikro mimari öğeleri arasında kabul edilemez veri akışlarını zorlamak için de kullanılabilir.

Kaynak: opennet.ru

Yorum ekle