Zen+ və Zen 2 mikroarxitekturalarına əsaslanan AMD prosessorlarında Meltdown sinfi zəifliyi aşkar edilib.

Drezden Texniki Universitetinin bir qrup tədqiqatçısı Zen+ və Zen 2020 mikroarxitekturalarına əsaslanan AMD prosessorlarında Meltdown sinfi hücumuna imkan verən zəifliyi (CVE-12965-2) müəyyən ediblər. Əvvəlcə ehtimal edilirdi ki, AMD Zen+ və Zen 2 prosessorları Meltdown zəifliyinə həssas deyil, lakin tədqiqatçılar qeyri-kanonik virtual ünvanlardan istifadə edərkən qorunan yaddaş sahələrinə spekulyativ girişə səbəb olan xüsusiyyəti müəyyən ediblər.

AMD64 arxitekturası virtual ünvanın yalnız ilk 48 bitindən istifadə edir və qalan 16 bitinə məhəl qoymur. Müəyyən edilmişdir ki, 48-dən 63-ə qədər bitlər həmişə 47-ci bitin dəyərini kopyalamalıdır (işarə bitinin uzadılması). Bu şərt pozulursa və yuxarı bitlərin ixtiyari dəyərləri olan ünvana daxil olmağa cəhd edilirsə, prosessor bir istisna yaradır. Üst bitlərin təkrar doldurulması mövcud ünvan sahəsinin iki bloka bölünməsinə səbəb olur - aşağı blok (0-dan 00007FFFFFFFFFFFFF), burada yuxarı bitlər 800000000000-a təyin edilir və yuxarı (FFFF1-dan FFFFFFFFFFFFFFFF-ə qədər) bütün yuxarı bitlər XNUMX-ə təyin edilmişdir.

Göstərilən bloklara düşən ünvanlar kanonik adlanır və yuxarı bitlərin ixtiyari məzmunu ilə yanlış ünvanlar qeyri-kanonik adlanır. Kanonik ünvanların aşağı diapazonu adətən proses məlumatları üçün, yuxarı diapazon isə nüvə məlumatları üçün istifadə olunur (istifadəçi məkanından bu ünvanlara giriş imtiyazların ayrılması səviyyəsində bloklanır).

Klassik Meltdown zəifliyi ona əsaslanır ki, təlimatların spekulyativ icrası zamanı prosessor şəxsi məlumat sahəsinə daxil ola və sonra nəticəni ləğv edə bilər, çünki müəyyən edilmiş imtiyazlar istifadəçi prosesinə belə girişi qadağan edir. Proqramda spekulyativ şəkildə yerinə yetirilən blok əsas koddan şərti budaqla ayrılır ki, bu da real şəraitdə həmişə işə düşür, lakin şərti ifadənin qabaqcadan icrası zamanı prosessorun bilmədiyi hesablanmış qiymətdən istifadə etməsi səbəbindən. kodu, bütün şöbə variantları spekulyativ olaraq həyata keçirilir.

Spekulyativ icra edilən əməliyyatlar normal icra edilən təlimatlarla eyni keşdən istifadə etdiyinə görə, spekulyativ icra zamanı xüsusi yaddaş sahəsində ayrı-ayrı bitlərin məzmununu əks etdirən keşdə markerlər təyin etmək, sonra isə onların dəyərini zamanlama vasitəsilə müəyyən etmək üçün normal icra edilən kodda mümkündür. analiz keşlənmiş və keşsiz məlumatlara daxil olur.

AMD Zen+ və Zen 2 prosessorlarına təsir edən yeni zəifliyin özəlliyi ondan ibarətdir ki, CPU-lar sadəcə yuxarı 16 biti nəzərə almayaraq, qeyri-kanonik ünvanlardan istifadə edərək yaddaşa daxil olan spekulyativ oxu və yazma əməliyyatlarına imkan verir. Beləliklə, spekulyativ kodun icrası zamanı prosessor həmişə yalnız aşağı 48 bitdən istifadə edir və ünvanın etibarlılığı ayrıca yoxlanılır. Əgər qeyri-kanonik virtual ünvanı assosiativ tərcümə buferində (TLB) fiziki ünvana tərcümə edərkən, ünvanın kanonik hissəsində uyğunluq aşkar edilərsə, spekulyativ yükləmə əməliyyatı məzmunu nəzərə almadan dəyəri qaytaracaqdır. yuxarı 16 bitdən ibarətdir ki, bu da iplər arasında yaddaş mübadiləsindən yan keçməyə imkan verir. Sonradan əməliyyat etibarsız sayılacaq və atılacaq, lakin yaddaşa giriş tamamlanacaq və məlumatlar keş yaddaşa düşəcək.

Təcrübə zamanı FLUSH+RELOAD keşinin məzmununun müəyyən edilməsi texnikasından istifadə etməklə tədqiqatçılar saniyədə 125 bayt sürətlə gizli məlumatların ötürülməsi üçün kanal təşkil edə biliblər. AMD çipləri ilə yanaşı, problem klassik Meltdown zəifliyinə həssas olan bütün Intel prosessorlarına da təsir göstərir. LFENCE təlimatlarından istifadə kimi Meltdown hücumlarının qarşısını almağa kömək edən eyni üsullar bu yeni hücum növündən qorunmaq üçün istifadə edilə bilər. Məsələn, əgər Intel prosessoru Meltdown-a qarşı hardware qorunmasını ehtiva edirsə və ya sistem proqram təminatının qorunmasını aktivləşdiribsə, bu cür konfiqurasiyalar yeni hücum variantına həssas deyil.

Eyni zamanda, tədqiqatçılar qeyd edirlər ki, Intel prosessorları ilə müqayisədə AMD prosessorlarının arxitekturası real hücumların həyata keçirilməsi imkanlarını məhdudlaşdırır, lakin onların effektivliyini artırmaq üçün digər mikroarxitektura hücumları ilə birlikdə yeni metoddan istifadəni də istisna etmir. Xüsusilə, təklif olunan hücum nüvənin və digər proseslərin yaddaş sahələrinin məzmununu müəyyən etməyə imkan vermir, lakin eyni virtual yaddaş məkanında işləyən eyni proqramın digər mövzularına giriş əldə etmək imkanı ilə məhdudlaşır.

Zəifliyi olmayan bir proqram öz mövzularına giriş əldə etmək qabiliyyətinə malik olduğundan, praktik baxımdan bu üsul, üçüncü tərəflərin icrasına imkan verən proqramlarda sandbox izolyasiyasını keçmək və digər mövzuların işinə müdaxiləni təşkil etmək üçün maraqlıdır. veb brauzerlər və JIT mühərrikləri kimi kod. Tədqiqatçılar SpiderMonkey JavaScript mühərrikinin və Linux nüvəsinin hücuma qarşı zəifliyini araşdırdılar, lakin hücumu həyata keçirmək üçün istifadə oluna biləcək həssas kod ardıcıllıqlarını tapmadılar. Hücum tətbiqləri ilə yanaşı, üsul digər mikroarxitektura zəifliklərindən istifadə edərkən prosessorun mikroarxitektura elementləri arasında qəbuledilməz məlumat axınını məcbur etmək üçün də istifadə edilə bilər.

Mənbə: opennet.ru

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