Məşhur kernel geliştiricisi Matthew Garrett LinuxBir vaxtlar Azad Proqram Təminatı Fondundan pulsuz proqram təminatının inkişafına verdiyi töhfəyə görə mükafat almış cənab, rəqəmsal imzanı ləğv etmədən yükləmə cihazındakı zəiflikləri bloklamaq üçün yaradılan SBAT (Təhlükəsiz Önyükləmə Qabaqcıl Hədəfləmə) mexanizminin mahiyyəti, eləcə də yeniləmə ilə bağlı son hadisədəki rolu barədə danışdı. Windows, bu da bəzi paylanmaların yüklənməsini dayandırmasına səbəb oldu Linux, paralel olaraq quraşdırılmışdır Windows UEFI Secure Boot aktivləşdirilmiş sistemlərdə. Bir sözlə, həm yeniləməni tam sınaqdan keçirməyən və onu etməməli olduğu sistemlərə tətbiq edən Microsoft, həm də bəzi distributivlərin tərtibatçıları günahkardırlar. Linux, GRUB-da zəifliklər aşkar edildikdə GRUB bootloader və SBAT generasiya nömrəsini yeniləmədi.
Aşağıda Garrettin qeydinin tərcüməsi var:
UEFI Secure Boot spesifikasiyası hazırlanarkən, iştirak edən hər kəs, deyək ki, bir qədər sadəlövh idi. Əsas Təhlükəsiz Yükləmə təhlükəsizlik modeli ondan ibarətdir ki, nüvə səviyyəsində imtiyazlı mühitdə işləyən bütün kodlar icra edilməzdən əvvəl yoxlanılmalıdır — mikroproqram yükləyicini yoxlayır, yükləyici kerneli yoxlayır, nüvə iş vaxtında yüklənmiş istənilən əlavə nüvə kodunu yoxlayır və indi bizim hər hansı digər təhlükəsizlik siyasətini tətbiq etmək üçün etibarlı mühitimiz var. Aydındır ki, insanlar səhv edə bilər, lakin spesifikasiya etibarsız olduğu aşkar edilmiş imzalanmış komponentləri ləğv etmək üçün bir yol ehtiva edir: sadəcə olaraq etibarsız kodun heşini dəyişənə əlavə edin və sonra etibarlı açarla imzalanmış olsa belə, bu hash ilə hər hansı bir şeyi yükləməkdən imtina edin.
Təəssüf ki, problem miqyasdadır. Hər paylanma LinuxSecure Boot ekosistemində fəaliyyət göstərən , hər birinin öz heşi olan öz bootloader binar fayllarını yaradır. Belə bir bootloader-in mənbə kodunda bir zəiflik aşkar edilərsə, çox sayda fərqli binar fayl geri çağırılmalıdır. Bütün bu heşləri ehtiva edən dəyişəni saxlamaq üçün yaddaş sahəsi məhduddur. GRUB-da (əvvəlcə Secure Boot dövründən əvvəl yazılmış, bir neçə ayrı .img parseri və şrift parseri olan bir bootloader) hər dəfə yeni heş dəsti əlavə etmək üçün kifayət qədər yer yoxdur, buna görə də təcavüzkarın ixtiyari kodu icra etməsi üçün başqa bir mexanizmə sahib olduğu aşkar edildikdə, başqa bir həll yoluna ehtiyac var idi.
Bu həll SBAT idi. SBAT-ın ümumi konsepsiyası olduqca sadədir. Yükləmə zəncirindəki hər bir vacib komponent, imzalanmış binar sistemə daxil olan təhlükəsizlik nəslini elan edir. Zəiflik aşkar edildikdə və düzəldildikdə, bu nəsil artır. Daha sonra minimum nəsli təyin edən yeniləmə buraxıla bilər - yükləmə komponentləri zəncirdəki növbəti elementə baxacaq, onun adını və nəsil nömrəsini mikroproqram dəyişənlərində saxlananlarla müqayisə edəcək və buna əsasən onun icra edilib-edilməməsinə qərar verəcək. Çox sayda fərdi hashları ləğv etmək əvəzinə, sadəcə olaraq, "Bu saydan aşağı təhlükəsizlik nəslinə malik GRUB-un istənilən versiyası etibarsız hesab olunur" deyən tək yeniləmə verilə bilər.
Niyə bu birdən-birə aktuallaşdı? SBAT icma tərəfindən birgə hazırlanmışdır. Linux və Microsoft və Microsoft bir yeniləmə buraxmaq qərarına gəldilər Windows, sistemlərə müəyyən bir səviyyədən aşağı təhlükəsizlik generasiyası olan GRUB versiyalarına etibar etməməyi tapşırdı. Bu, bu GRUB versiyalarında təcavüzkarların təhlükəsiz yükləmə zəncirini pozmasına imkan verən real təhlükəsizlik zəifliklərinə malik olması səbəbindən edildi. Windowsvə bunu etmək istəyən zərərli proqramların real nümunələrini gördük (Black Lotus bootloader-dəki zəiflikdən istifadə etdi) Windows, lakin GRUB zəifliyi də eyni dərəcədə təsirli idi). Tamamilə təhlükəsizlik baxımından bu, tamamilə qanuni bir istəkdir.
İndi isə, "Nəsə ciddi şəkildə səhv getdi" mesajı və bu yeniləmə nəticəsində yüklənə bilməməsi ilə bağlı, onu çıxaran Microsoft-dan hansısa kod deyil, Shim-dir. Shim, SBAT yeniləmələrini nəzərə alır və sistemdəki digər yükləyicilər tərəfindən qəbul edilmiş təhlükəsizlik prinsiplərini pozmamaq üçün, Microsoft SBAT yeniləməsini yayımlasa da, məsuliyyət daşıyan yükləyicidir. Linux Nəticədə, GRUB-un köhnə versiyalarını işə salmaqdan imtina edir. Hər şey lazım olduğu kimi işləyir.
İnsanların qarşılaşdığı problem çoxsaylı paylanmaların olmasıdır Linux GRUB-un daha yeni nəsil təhlükəsizlik versiyasını buraxmayıblar və buna görə də GRUB-un bu versiyaları təhlükəsiz deyil (qeyd etmək lazımdır ki, GRUB Microsoft tərəfindən deyil, distributivlərin özləri tərəfindən imzalanıb, ona görə də burada xarici tətbiq olunan gecikmə yoxdur). Microsoft-un planına görə, yeniləmə Windows Yeniləmənin SBAT yeniləməsini yalnız işləyən sistemlərə tətbiq etməsi nəzərdə tutulurdu Windows, və quraşdırılmış distributiv GRUB və SBAT nəslini yeniləyənə qədər hər hansı ikili yükləmə qurğuları hücumlara qarşı həssas qalacaqdı. Təəssüf ki, indi aydın olduğu kimi, bu, nəzərdə tutulduğu kimi işləmədi və ən azı bəzi ikili yükləmə sistemləri yeniləməni tətbiq etdi və distributivin Shim-i GRUB-u yükləməkdən imtina etdi.
Əsas məsələ nədir? Microsoft (açıq səbəblərdən) istəmirdi Windows GRUB-un həssas versiyasından istifadə edərək hücuma məruz qala bilər və bu versiya ixtiyari kodu icra etməyə və sonra nüvəyə bootkit yeritməyə aldadıla bilər. Windows açılış zamanı. Microsoft bunu bir yeniləmə buraxmaqla etdi Windows, bu da SBAT dəyişənini GRUB-un həssas versiyalarının bu sistemlərdə yüklənməməli olduğunu göstərmək üçün yenilədi. Shim distributivi tərəfindən təmin edilən birinci mərhələli yükləyici bu dəyişəni oxudu, GRUB-un quraşdırılmış nüsxəsindən SBAT bölməsini oxudu, onların ziddiyyət təşkil etdiyini anladı və "Nəsə ciddi şəkildə səhv getdi" mesajı ilə GRUB-u yükləməkdən imtina etdi. Bu yeniləmə ikili yükləmə sistemlərinə tətbiq edilmək üçün nəzərdə tutulmayıb, lakin hər halda tətbiq edildi.
Ümumiyyətlə:
1) Microsoft yeniləməni tətbiq etməməli olduğu sistemlərə tətbiq etdi.
2) Bəzi paylanmalar Linux GRUB-da zəifliklər aşkar edildikdə GRUB bootloader və SBAT təhlükəsizlik generasiyasını yeniləmədi.
Nəticədə, bəzi insanlar sistemlərini yükləyə bilmirlər. Düşünürəm ki, burada çox günah var. Microsoft ikili yükləməli quraşdırmaların dəqiq aşkarlanmasını təmin etmək üçün daha çox sınaq keçirməli idi. Lakin imzalanmış yükləyiciləri təmin edən paylamalar həm də onları yeniləməyi və təhlükəsizlik nəslini aktual saxlamağı təmin etməlidir, çünki əks halda onlar digər əməliyyat sistemlərini təhlükə altına almaq üçün istifadə oluna biləcək hücum vektorunu təmin edirlər və bu, bütün bunları əhatə edən sosial müqavilənin pozulmasıdır.
Təəssüf ki, burada qurbanlar əsasən sistemlərinin istədikləri OS-ni yükləməkdən imtina etdiyini görən son istifadəçilərdir. Bu heç vaxt baş verməməlidir. Mən düşünmürəm ki, son istifadəçilərin təhlükəsiz yükləmə yeniləmələrini istəyib-istəməmələri ilə bağlı sorğular yaxşı nəticə versin və mən UEFI təhlükəsiz yükləmənin əksər son istifadəçilərə fayda gətirən bir şey olmadığına inanmağa meylli olsam da, bu kimi bir hadisədən sonra kəşf etmək istəmədiyiniz bir şeydir. Beləliklə, mən onun standart olaraq aktiv olmasına rəğbət bəsləyirəm və onu defolt olaraq aktivləşdirməyi dəstəkləyirəm və ikili yükləmə sistemlərində yeniləmələrin qarşısını almaq üçün uğursuz cəhd istisna olmaqla, Microsoft-un seçimi ilə razıyam.
Hər halda, mən bu mexanizmin tətbiqində yaxından iştirak etmişəm Linux 2012-ci ildə Shim-in ilk prototipini yazdı (indi daha yaxşı bir bootloaderdir, daha geniş insan dairəsi tərəfindən dəstəklənir və bir neçə ildir toxunmamışam), ona görə də kimisə günahlandırmaq istəyirsinizsə, xahiş edirəm məni günahlandırmaqdan çəkinməyin. Bu, baş verməməli bir şey idi və əgər siz Microsoft və ya distro deyilsinizsə. Linux, onda bu sənin günahın deyil. Üzr istəyirəm.
Mənbə: opennet.ru
