Google brauzerdə JavaScript icra etməklə Spectre zəifliklərinin istismarını nümayiş etdirir

Google əvvəllər əlavə edilmiş qorunma üsullarından yan keçərək, brauzerdə JavaScript kodunu icra edərkən Spectre sinfinin zəifliklərindən istifadə etmək imkanını göstərən bir neçə ekspluit prototipini dərc edib. İstismarlar cari tabda veb məzmunu emal edən prosesin yaddaşına daxil olmaq üçün istifadə edilə bilər. İstismarın işini yoxlamaq üçün leaky.page saytı işə salınıb və işin məntiqini təsvir edən kod GitHub-da yerləşdirilib.

Təklif olunan prototip Linux və Chrome 7 mühitində Intel Core i6500-88U prosessorları olan sistemlərə hücum etmək üçün nəzərdə tutulub. İstismarın digər mühitlərə tətbiqi üçün dəyişikliklər tələb olunur. İstismar üsulu Intel prosessorlarına xas deyil - müvafiq uyğunlaşmadan sonra istismarın ARM arxitekturasına əsaslanan Apple M1 də daxil olmaqla digər istehsalçıların CPU-ları ilə sistemlərdə işləməsi təsdiqlənib. Kiçik düzəlişlərdən sonra istismar digər əməliyyat sistemlərində və Chromium mühərrikinə əsaslanan digər brauzerlərdə də işləyir.

Standart Chrome 88 və Intel Skylake prosessorlarına əsaslanan mühitdə cari Chrome sekmesinde (renderer prosesi) saniyədə 1 kilobayt sürətlə veb məzmunun işlənməsi üçün məsul olan prosesdən məlumatlar sızdırılıb. Bundan əlavə, alternativ prototiplər işlənib hazırlanmışdır, məsələn, 8 mikrosaniyə (5 millisaniyə) dəqiqliklə performans.now() taymerindən istifadə edərkən sabitliyi azaltmaq hesabına sızma sürətini 0.005kB/s-ə qədər artırmağa imkan verən istismar. . Təxminən saniyədə 60 bayt sürətlə başqa bir prosesin yaddaşına girişi təşkil etmək üçün istifadə oluna bilən bir millisaniyəlik taymer dəqiqliyi ilə işləyən variant da hazırlanmışdır.

Dərc edilmiş demo kodu üç hissədən ibarətdir. Birinci hissə CPU təlimatlarının spekulyativ icrası nəticəsində prosessorun keşində qalan məlumatların bərpası üçün tələb olunan əməliyyatların icra müddətini qiymətləndirmək üçün taymeri kalibrləyir. İkinci hissə JavaScript massivinin ayrılması zamanı istifadə olunan yaddaş planını müəyyən edir.

Üçüncü hissə, müəyyən əməliyyatların spekulyativ icrası üçün şərait yaradılması nəticəsində cari prosesin yaddaşının məzmununu müəyyən etmək üçün birbaşa Spectre zəifliyindən istifadə edir, nəticəsi uğursuz proqnozu təyin etdikdən sonra prosessor tərəfindən atılır, lakin icra. izlər ümumi keşdə saxlanılır və keşlənmiş və keşlənməyən məlumatlara giriş vaxtındakı dəyişiklikləri təhlil edən üçüncü tərəf kanalları tərəfindən keşin məzmununu təyin etmək üsullarından istifadə etməklə bərpa edilə bilər.

Təklif olunan istismar texnikası, performans.now() API vasitəsilə və paylaşılan yaddaşda massivlər yaratmağa imkan verən SharedArrayBuffer tipini dəstəkləməyən yüksək dəqiqlikli taymerləri aradan qaldırır. İstismar, idarə olunan spekulyativ kodun icrasına səbəb olan Spectre qadceti və keş-xəttə daxil olan spekulyativ icra zamanı əldə edilən məlumatları təyin edən yan kanal sızması analizatorunu əhatə edir.

Qadcet JavaScript massivindən istifadə etməklə həyata keçirilir, burada buferin hüdudlarından kənar əraziyə daxil olmağa cəhd edilir, kompilyator tərəfindən əlavə edilmiş bufer ölçüsünün yoxlanılması (prosessor, irəliyə baxması) səbəbindən filialın proqnozlaşdırılması blokunun vəziyyətinə təsir göstərir. , spekulyativ olaraq girişi həyata keçirir, lakin yoxlamadan sonra vəziyyəti geri qaytarır). Taymerin qeyri-kafi dəqiqliyi şəraitində keşin məzmununu təhlil etmək üçün prosessorlarda istifadə olunan Tree-PLRU önbelleği çıxarma strategiyasını aldadan və dövrlərin sayını artırmaqla, geri qayıtdıqda vaxt fərqini əhəmiyyətli dərəcədə artırmağa imkan verən bir üsul təklif olunur. keşdən dəyər və keşdə heç bir dəyər olmadıqda.

Qeyd olunur ki, Google Spectre sinfinin zəifliklərindən istifadə edərək hücumların reallığını göstərmək və veb tərtibatçılarını bu cür hücumlardan yaranan riskləri minimuma endirən üsullardan istifadə etməyə təşviq etmək üçün istismarın prototipini dərc edib. Eyni zamanda, Google hesab edir ki, təklif olunan prototipə əhəmiyyətli dərəcədə yenidən baxılmadan, təkcə nümayiş üçün deyil, həm də geniş istifadə üçün hazır olan universal istismarlar yaratmaq mümkün deyil.

Riski azaltmaq üçün sayt sahiblərinə bu yaxınlarda tətbiq edilmiş Çarpaz Mənşə Açıcı Siyasətdən (COOP), Çarpaz Mənşəli Yerləşdirmə Siyasətindən (COEP), Çarpaz Mənşəli Resurs Siyasətindən (CORP), Metaməlumat Sorğunu, X-Frame-Seçimlərindən istifadə etmək tövsiyə olunur. X -Məzmun Növü Seçimləri və SameSite kukiləri. Bu mexanizmlər birbaşa hücumlardan qorunmur, lakin sayt məlumatlarını təcavüzkarın JavaScript kodunun icra oluna biləcəyi proseslərə sızmasından təcrid etməyə imkan verir (sızma, təcavüzkarın koduna əlavə olaraq, məlumatların daxil olduğu cari prosesin yaddaşından baş verir. həmin tabda açılan başqa saytdan). Əsas ideya müxtəlif proseslərdə sayt kodunun icrasını etibarsız mənbələrdən əldə edilən, məsələn, iframe vasitəsilə daxil edilmiş üçüncü tərəf kodundan ayırmaqdır.



Mənbə: opennet.ru

Добавить комментарий