Google, tarayıcıda JavaScript yürütme yoluyla Spectre güvenlik açıklarından yararlanıldığını gösterdi

Google, önceden eklenen koruma yöntemlerini atlayarak, tarayıcıda JavaScript kodunu çalıştırırken Spectre sınıfı güvenlik açıklarından yararlanma olasılığını gösteren çeşitli yararlanma prototipleri yayınladı. Açıklardan yararlanmalar, geçerli sekmedeki web içeriğini işleyen işlem belleğine erişim sağlamak için kullanılabilir. İstismarın işleyişini test etmek için, sızıntılı.sayfa web sitesi başlatıldı ve işin mantığını açıklayan kod GitHub'da yayınlandı.

Önerilen prototip, Linux ve Chrome 7 içeren bir ortamda Intel Core i6500-88U işlemcili sistemlere saldırmak için tasarlanmıştır. Açıktan yararlanmanın diğer ortamlarda kullanılması için değişiklikler yapılması gerekir. Yararlanma yöntemi Intel işlemcilere özel değildir; uygun uyarlamanın ardından, açıktan yararlanmanın, ARM mimarisine dayalı Apple M1 dahil olmak üzere diğer üreticilerin CPU'larına sahip sistemlerde çalıştığı doğrulandı. Küçük ayarlamalardan sonra bu istismar diğer işletim sistemlerinde ve Chromium motorunu temel alan diğer tarayıcılarda da kullanılabilir.

Standart Chrome 88 ve Intel Skylake işlemcileri temel alan bir ortamda, mevcut Chrome sekmesindeki web içeriğinin işlenmesinden sorumlu süreçten (oluşturucu işlemi) saniyede 1 kilobayt hızla veri sızdırılması mümkündü. Ek olarak alternatif prototipler de geliştirilmiştir; örneğin, 8 mikrosaniyelik (5 milisaniye) bir doğrulukla Performance.now() zamanlayıcısını kullanırken kararlılığı azaltma pahasına sızıntı oranını 0.005 kB/s'ye çıkarmaya olanak tanıyan bir istismar. ). Ayrıca, bir milisaniyelik zamanlayıcı doğruluğuyla çalışan, başka bir işlemin belleğine saniyede yaklaşık 60 bayt hızla erişimi organize etmek için kullanılabilecek bir versiyon da hazırlandı.

Yayınlanan demo kodu üç bölümden oluşmaktadır. İlk kısım, CPU talimatlarının spekülatif olarak yürütülmesinin bir sonucu olarak işlemci önbelleğinde kalan verileri geri yüklemek için gereken işlemlerin yürütme süresini tahmin etmek üzere zamanlayıcıyı kalibre eder. İkinci kısım, JavaScript dizisini tahsis ederken kullanılan bellek düzenini belirler.

Üçüncü bölüm, belirli işlemlerin spekülatif olarak yürütülmesi için koşullar yaratmanın bir sonucu olarak mevcut sürecin bellek içeriğini belirlemek için Spectre güvenlik açığından doğrudan yararlanır; bunun sonucu, başarısız bir tahmin belirlendikten sonra işlemci tarafından atılır, ancak sonuç, başarısız bir tahminin izleri olur. yürütme genel önbellekte saklanır ve önbelleğe alınmış ve önbelleğe alınmamış verilere erişim süresindeki değişiklikleri analiz eden üçüncü taraf kanallar tarafından önbellek içeriğini belirlemeye yönelik yöntemler kullanılarak geri yüklenebilir.

Önerilen yararlanma tekniği, performans.now() API'si aracılığıyla kullanılabilen yüksek hassasiyetli zamanlayıcılar olmadan ve paylaşılan bellekte diziler oluşturmaya izin veren SharedArrayBuffer türü desteği olmadan bunu yapmayı mümkün kılar. Bu istismar, kodun kontrollü spekülatif yürütülmesine neden olan Spectre gadget'ını ve spekülatif yürütme sırasında elde edilen önbelleğe alınmış verileri tespit eden bir yan kanal sızıntı analiz cihazını içeriyor.

Gadget, derleyici tarafından eklenen bir arabellek boyutu kontrolünün varlığı nedeniyle dal tahmin bloğunun durumunu etkileyen, arabellek sınırlarının dışındaki bir alana erişim girişiminde bulunulan bir JavaScript dizisi kullanılarak uygulanır (işlemci spekülatif olarak işlemi gerçekleştirir). önceden erişim sağlar, ancak kontrol edildikten sonra durumu geri alır). Yetersiz zamanlayıcı doğruluğu koşullarında önbellek içeriğini analiz etmek için, işlemcilerde kullanılan Tree-PLRU veri çıkarma stratejisini aldatan ve döngü sayısını artırarak geri dönüş sırasındaki zaman farkını önemli ölçüde artırmaya izin veren bir yöntem önerilmektedir. önbellekten bir değer ve önbellekte değer olmadığında.

Google'ın, Spectre sınıfı güvenlik açıklarını kullanan saldırıların yapılabilirliğini göstermek ve web geliştiricilerini bu tür saldırılardan kaynaklanan riskleri en aza indirecek teknikleri kullanmaya teşvik etmek amacıyla bu istismarın bir prototipini yayınladığı belirtiliyor. Aynı zamanda Google, önerilen prototip üzerinde önemli ölçüde yeniden çalışma yapılmadan, yalnızca gösteriye değil, aynı zamanda yaygın kullanıma da hazır evrensel istismarlar yaratmanın imkansız olduğuna inanıyor.

Riski azaltmak için site sahiplerinin yakın zamanda uygulamaya konulan Cross-Origin Opener Policy (COOP), Cross-Origin Embedder Policy (COEP), Cross-Origin Resource Policy (CORP), Fetch Metadata request, X-Frame- başlıklarını kullanmaları önerilir. Seçenekler, X -İçerik-Türü-Seçenekleri ve SameSite Çerezi. Bu mekanizmalar doğrudan saldırılara karşı koruma sağlamaz, ancak site verilerini saldırganın JavaScript kodunun yürütülebileceği işlemlere sızmaya karşı izole etmenize olanak tanır (sızıntı, saldırganın koduna ek olarak mevcut işlemin belleğinden meydana gelir) , aynı sekmede açılan başka bir sitedeki verileri de işleyebilir). Ana fikir, site kodunun farklı işlemlerde yürütülmesini, örneğin bir iframe aracılığıyla dahil edilen güvenilmez kaynaklardan alınan üçüncü taraf kodlardan ayırmaktır.



Kaynak: opennet.ru

Yorum ekle