SBAT būtības analīze un problēmas ar atjaunināšanu uz Windows, kas ietekmēja iekraušanu Linux

Metjū Garets, slavens kodola izstrādātājs Linux, kurš savulaik saņēma Brīvās programmatūras fonda balvu par ieguldījumu brīvās programmatūras izstrādē, runāja par SBAT (Secure Boot Advanced Targeting) mehānisma būtību, kas izveidots, lai bloķētu ievainojamības sāknēšanas ielādētājā, neatsaucot digitālo parakstu, kā arī par tā lomu nesenajā incidentā ar atjauninājumu. Windows, kas izraisīja dažu izplatījumu ielādes pārtraukšanu Linux, uzstādīts paralēli ar Windows sistēmās ar iespējotu UEFI Secure Boot. Īsāk sakot, vainīgi ir gan Microsoft, kas pilnībā nepārbaudīja atjauninājumu un to neieviesa sistēmās, kurās to nevajadzēja darīt, gan dažu izplatījumu izstrādātāji. Linux, kas neatjaunināja GRUB sāknēšanas ielādētāju un SBAT ģenerēšanas numuru, kad GRUB tika atklātas ievainojamības.

Tālāk ir sniegts Gareta piezīmes tulkojums:

Kad tika izstrādāta UEFI Secure Boot specifikācija, visi tās dalībnieki bija, teiksim, nedaudz naivi. Drošas sāknēšanas pamata drošības modelis ir tāds, ka viss kods, kas darbojas priviliģētā vidē kodola līmenī, ir jāpārbauda pirms izpildes — programmaparatūra pārbauda sāknēšanas ielādētāju, sāknēšanas ielādētājs pārbauda kodolu, kodols pārbauda jebkuru papildu kodola kodu, kas tiek ielādēts izpildlaikā, un tagad mums ir uzticama vide, lai uzspiestu jebkuru citu drošības politiku, kādu mēs vēlamies. Acīmredzot cilvēki var kļūdīties, taču specifikācijā tika nodrošināts veids, kā atsaukt parakstītos komponentus, kas tika atzīti par neuzticamiem: vienkārši pievienojiet neuzticamā koda jaucējkodu mainīgajam un pēc tam atsakieties ielādēt neko ar šo jaucējkodu, pat ja tas bija parakstīts ar uzticamu atslēgu.

Diemžēl izrādās, ka problēma ir mērogā. Katrs sadalījums Linux, kas darbojas drošās sāknēšanas ekosistēmā, ģenerē savus sāknēšanas ielādētāja bināros failus, katram ar savu jaucējkodu. Ja šāda sāknēšanas ielādētāja pirmkodā tiek atklāta ievainojamība, ir jāatsauc liels skaits dažādu bināro failu. Atmiņas vieta mainīgā, kas satur visus šos jaucējkodus, glabāšanai ir ierobežota. Vienkārši nav pietiekami daudz vietas, lai pievienotu jaunu jaucējkodu kopu katru reizi, kad GRUB (sāknēšanas ielādētājs, kas sākotnēji tika rakstīts pirms drošās sāknēšanas ēras, ar vairākiem atsevišķiem .img parsētājiem un fontu parsētāju) tiek konstatēts vēl viens mehānisms, lai uzbrucējs varētu izpildīt patvaļīgu kodu, tāpēc bija nepieciešams cits risinājums.

Šis risinājums bija SBAT. Vispārējā BAT koncepcija ir diezgan vienkārša. Katrs sāknēšanas ķēdes kritiskais komponents deklarē drošības paaudzi, kas ir iekļauta parakstītajā binārajā failā. Kad ievainojamība tiek atklāta un novērsta, šī paaudze palielinās. Pēc tam var tikt izdots atjauninājums, kas nosaka minimālo paaudzi — sāknēšanas komponenti apskatīs nākamo ķēdes vienumu, salīdzinās tā nosaukumu un paaudzes numuru ar programmaparatūras mainīgajā saglabātajiem un, pamatojoties uz to, izlems, vai to izpildīt. . Tā vietā, lai atsauktu lielu skaitu atsevišķu jaucēju, varat izdot vienu atjauninājumu, kurā vienkārši teikts: "Jebkura GRUB versija, kuras drošības paaudze ir zemāka par šo skaitli, tiek uzskatīta par neuzticamu."

Kāpēc tas pēkšņi kļuva aktuāli? SBAT tika izstrādāts, sadarbojoties ar kopienu. Linux un Microsoft un Microsoft nolēma izlaist atjauninājumu Windows, kas lika sistēmām neuzticēties GRUB versijām ar drošības paaudzi zem noteikta līmeņa. Tas tika darīts tāpēc, ka šīm GRUB versijām bija reālas drošības ievainojamības, kas ļāva uzbrucējiem pārraut drošo sāknēšanas ķēdi. Windows, un mēs esam redzējuši reālus ļaunprogrammatūras piemērus, kas vēlējās to darīt (Black Lotus izmantoja ievainojamību sāknēšanas ielādētājā Windows, bet GRUB ievainojamība bija tikpat efektīva). No tīri drošības viedokļa šī ir pilnīgi pamatota vēlme.

Runājot par ziņojumu "Kaut kas nogāja nopietni greizi" un nespēju ielādēt sistēmu šī atjauninājuma rezultātā, to izvada Shim, nevis kāds Microsoft kods. Shim ņem vērā SBAT atjauninājumus, un, lai nepārkāptu citu sistēmas ielādētāju pieņemtos drošības principus, un, lai gan Microsoft ir izlaidis SBAT atjauninājumu, par to ir atbildīgs ielādētājs. Linux Tā rezultātā tā atsakās palaist vecākas GRUB versijas. Viss darbojas, kā paredzēts.

Problēma, ar kuru cilvēki ir saskārušies, ir vairāki sadalījumi Linux nav izlaiduši GRUB versijas ar jaunākas paaudzes drošību, un tāpēc šīs GRUB versijas tiek uzskatītas par nedrošām (jāatzīmē, ka GRUB paraksta paši izplatījumi, nevis Microsoft, tāpēc šeit nav ārēji ieviestas aizkaves). Saskaņā ar Microsoft plānu atjauninājums Windows Atjauninājumam bija paredzēts lietot SBAT atjauninājumu tikai sistēmām, kas darbojas tikai Windows, un jebkuras divkāršās palaišanas instalācijas paliktu neaizsargātas pret uzbrukumiem, līdz instalētā izplatība atjauninātu GRUB un SBAT paaudzi. Diemžēl, kā tagad ir skaidrs, tas nedarbojās, kā paredzēts, un vismaz dažas divkāršās palaišanas sistēmas lietoja atjauninājumu, un izplatījuma Shim atteicās ielādēt GRUB.

Kāda ir būtība? Microsoft (acīmredzamu iemeslu dēļ) to nevēlējās Windows varētu tikt uzbrukts, izmantojot neaizsargātu GRUB versiju, kuru varētu apmānīt, lai tā izpildītu patvaļīgu kodu un pēc tam ievadītu sāknēšanas komplektu kodolā Windows sāknēšanas laikā. Microsoft to panāca, izlaižot atjauninājumu Windows, kas atjaunināja SBAT mainīgo, lai norādītu, ka šajās sistēmās nevajadzētu palaist neaizsargātas GRUB versijas. Shim izplatīšanas nodrošinātais pirmā posma sāknēšanas ielādētājs nolasīja šo mainīgo, nolasīja SBAT nodalījumu no instalētās GRUB kopijas, saprata, ka tie konfliktē, un atteicās ielādēt GRUB ar ziņojumu "Kaut kas nogāja nopietni greizi". Šis atjauninājums nebija paredzēts lietošanai divkāršās sāknēšanas sistēmās, taču tas tik un tā tika lietots.

Vispārīgi:

1) Microsoft lietoja atjauninājumu sistēmām, kurām tas nebija paredzēts.

2) Daži sadalījumi Linux neatjaunināja GRUB sāknēšanas programmu un SBAT drošības ģenerēšanu, kad GRUB tika atklātas ievainojamības.

Tā rezultātā daži cilvēki nevar palaist savas sistēmas. Es domāju, ka šeit ir vainojami daudzi cilvēki. Microsoft vajadzēja veikt vairāk testu, lai nodrošinātu, ka var precīzi noteikt dubultās sāknēšanas instalācijas. Bet izplatījumiem, kas nodrošina parakstītus sāknēšanas ielādētājus, ir jāpārliecinās, ka tie ir jāatjaunina un jāatjaunina drošības paaudze, lai tā atbilstu, jo pretējā gadījumā tie nodrošina uzbrukuma vektoru, ko var izmantot, lai uzlauztu citas operētājsistēmas, un tas ir sava veida sociālā līguma pārkāpums. visi.

Diemžēl upuri šeit galvenokārt ir gala lietotāji, kuri saskaras ar faktu, ka sistēma pēkšņi atsakās ielādēt OS, kuru viņi vēlas ielādēt. Tam nekad nevajadzētu notikt. Es nedomāju, ka galalietotāju jautāšana, vai viņi vēlas Secure Boot atjauninājumus, dos labu rezultātu, un, lai gan es sliecos domāt, ka UEFI Secure Boot nedod labumu lielākajai daļai galalietotāju, tas ir arī tas, ko jūs nedarāt. Es nevēlos to uzzināt pēc šādiem gadījumiem, tāpēc es jūtu līdzjūtību, ka tas ir iespējots pēc noklusējuma, tāpēc atbalstu tā iespējošanu pēc noklusējuma un piekrītu Microsoft izvēlei, izņemot neveiksmīgo mēģinājumu izvairīties no atjaunināšanas duālās sāknēšanas sistēmās.

Jebkurā gadījumā es biju cieši iesaistīts šī mehānisma ieviešanā. Linux 2012. gadā un uzrakstīju pirmo Shim prototipu (kas tagad ir ievērojami labāks sāknēšanas ielādētājs, ko atbalsta plašāks cilvēku loks un kuru es neesmu aizticis vairākus gadus), tāpēc, ja vēlaties kādu vainot, lūdzu, jūtieties brīvi vainot mani. Tam nevajadzēja notikt, un, ja vien neesat Microsoft vai distro Linux, tad tā nav tava vaina. Atvainojos.

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster