Mayhem - sudo və OpenSSH autentifikasiyasını keçmək üçün yaddaş biti pozğunluğu hücumu

Worcester Politexnik İnstitutundan (ABŞ) tədqiqatçılar autentifikasiya və təhlükəsizlik yoxlamalarından keçib-keçmədiyinə qərar vermək üçün proqramda bayraq kimi istifadə edilən yığın dəyişənlərinin dəyərlərini dəyişdirmək üçün Rowhammer dinamik RAM bit təhrif texnikasından istifadə edən Mayhem hücumunun yeni növünü təqdim ediblər. Hücumun praktiki nümunələri SUDO, OpenSSH və MySQL-də autentifikasiyadan yan keçmək, həmçinin OpenSSL kitabxanasında təhlükəsizliklə bağlı yoxlamaların nəticəsini dəyişdirmək üçün nümayiş etdirilir.

Hücum, sıfırdan fərqli dəyərləri müqayisə etmək üçün çeklərdən istifadə edən tətbiqlərə tətbiq oluna bilər. Zəif kod nümunəsi: int auth = 0; ... // doğrulama kodu, əgər (auth != 0) AUTH_SUCCESS qaytararsa, autentifikasiya uğurlu olduqda autentifikasiya dəyərini dəyişdirən doğrulama kodu; başqa AUTH_FAILURE qaytarın;

Bu misalın kontekstində uğurlu hücum üçün yığındakı 32 bitlik auth dəyişəni ilə əlaqəli yaddaşdakı istənilən biti korlamaq kifayətdir. Dəyişəndə ​​hər hansı bit pozulubsa, dəyər artıq sıfır olmayacaq və şərti operator autentifikasiyanın uğurla tamamlanmasını müəyyən edəcək. Bu cür doğrulama nümunələri tətbiqlərdə olduqca yaygındır və məsələn, SUDO, OpenSSH, MySQL və OpenSSL-də tapılır.

Mayhem - sudo və OpenSSH autentifikasiyasından yan keçmək üçün yaddaş bitini dəyişdirmə hücumu

Hücum “if(auth == 1)” formasının müqayisələrinə də tətbiq oluna bilər, lakin bu halda onun icrası mürəkkəbləşir, çünki 32-nin heç bir bitini deyil, sonuncu bitini təhrif etmək lazımdır. Metod prosessor registrlərindəki dəyişənlərin dəyərlərinə təsir etmək üçün də istifadə edilə bilər, çünki kontekst açarı, funksiya çağırışı və ya siqnal idarəedicisi işə salındıqda registrlərin məzmunu müvəqqəti olaraq yığına yuyula bilər. Registr dəyərlərinin yaddaşda olduğu müddət ərzində bu yaddaşa təhriflər daxil ola bilər və dəyişdirilmiş dəyər registrdə bərpa olunacaq.

Mayhem - sudo və OpenSSH autentifikasiyasından yan keçmək üçün yaddaş bitini dəyişdirmə hücumu

Bitləri təhrif etmək üçün RowHammer sinif hücumunun modifikasiyalarından biri istifadə olunur. DRAM yaddaşı hər biri bir kondansatör və tranzistordan ibarət ikiölçülü hüceyrələr massivi olduğundan, eyni yaddaş bölgəsinin davamlı oxunuşunu yerinə yetirmək, qonşu hüceyrələrdə kiçik yük itkisinə səbəb olan gərginlik dalğalanmaları və anomaliyalarla nəticələnir. Oxuma intensivliyi yüksək olarsa, o zaman qonşu hüceyrə kifayət qədər böyük miqdarda yük itirə bilər və növbəti regenerasiya dövrü orijinal vəziyyətini bərpa etməyə vaxt tapmayacaq, bu da hüceyrədə saxlanılan məlumatların dəyərinin dəyişməsinə səbəb olacaqdır. . RowHammer-dən qorunmaq üçün çip istehsalçıları TRR (Target Row Refresh) mexanizmini əlavə ediblər ki, bu da xüsusi hallarda hüceyrə korrupsiyasını bloklayır, lakin bütün mümkün hücum variasiyalarından qorunmur.

Mayhem hücumundan qorunmaq üçün, sıfırdan və ya təsadüfdən birə qədər fərqləri qiymətləndirmək üçün deyil, sıfırdan fərqli oktetlərlə təsadüfi toxum dəyərindən istifadə edərək matçları yoxlamaq üçün müqayisələrdən istifadə etmək tövsiyə olunur. Bu halda, dəyişənin istənilən qiymətini təyin etmək üçün bir bitin təhrifindən fərqli olaraq, qeyri-real olan bitlərin əhəmiyyətli sayını dəqiq şəkildə təhrif etmək lazımdır. Hücum olunmayan kod nümunəsi: int auth = 0xbe406d1a; ... // doğrulama kodunu 0x23ab8701 olaraq təyin edən doğrulama kodu, əgər (auth == 0x23ab8701) AUTH_SUCCESS qaytarırsa; başqa AUTH_FAILURE qaytarın;

Göstərilən qorunma üsulu artıq sudo tərtibatçıları tərəfindən istifadə edilib və CVE-1.9.15-2023 zəifliyi üçün düzəliş kimi 42465 buraxılışına daxil edilib. Onlar əsas həssas layihələrdə düzəlişlər edildikdən sonra hücumun həyata keçirilməsi üçün kodun prototipini dərc etməyi planlaşdırırlar.

Mənbə: opennet.ru

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