Johdanto
Microsoft sai tiedon Windowsin käynnistyksen hallinnan haavoittuvuudesta, jonka avulla hyökkääjä voi ohittaa suojatun käynnistyksen. Käynnistyksen hallinnan ongelma korjattiin ja julkaistiin suojauspäivityksenä. Jäljellä oleva haavoittuvuus on se, että hyökkääjä, jolla on järjestelmänvalvojan oikeudet tai fyysinen käyttöoikeus laitteeseen, voi palauttaa käynnistyksen hallinnan versioon ilman suojauskorjausta. BlackLotus-haittaohjelma käyttää tätä palautushaavoittuvuutta CVE-2023-24932:n kuvaileman suojatun käynnistyksen ohittamiseen. Tämän ongelman ratkaisemiseksi kumoamme haavoittuvassa asemassa olevat käynnistyspäälliköt.
Koska estettävien käynnistyspäälliköiden määrä on suuri, käytämme vaihtoehtoista tapaa estää käynnistyksen valvojat. Tämä vaikuttaa muihin kuin Windows-käyttöjärjestelmiin, sillä näihin järjestelmiin on annettava korjaus, joka estää Windowsin käynnistyspäälliköiden käytön hyökkäysvektorina muissa kuin Windows-käyttöjärjestelmissä.
Lisätietoja
Yksi tapa estää haavoittuvassa asemassa olevien EFI-sovellusten binaaritiedostojen lataaminen laiteohjelmistolla on lisätä haavoittuvien sovellusten hajautuksia UEFI:n kiellettyjen sovellusten luetteloon (DBX).. DBX-luettelo tallennetaan laitteiden laiteohjelmiston hallittuun flash-muistiin. Tämän estomenetelmän rajoitus on rajoitettu laiteohjelmiston flash-muisti, joka on käytettävissä DBX:n tallentamiseen. Tämän rajoituksen ja estettävien käynnistyspäälliköiden suuren määrän vuoksi (Windowsin käynnistyksen valvojat viimeisten 10 vuoden ajalta) täysin DBX:n käyttäminen tässä ongelmassa ei ole mahdollista.
Tässä ongelmassa olemme valinneet yhdistelmämenetelmän, jolla estetään haavoittuvassa asemassa olevat käynnistyksen valvojat. DBX-tiedostoon lisätään vain muutama windowsin aiemmissa versioissa julkaistu käynnistysvalvoja. Windows 10 ja uudemmissa versioissa käytetään WDAC (Windows Defender Application Control) -käytäntöä, joka estää haavoittuvassa asemassa olevat Windowsin käynnistyksen valvojat. Kun käytäntöä käytetään Windows-järjestelmässä, käynnistyksen hallinta lukitsee käytännön järjestelmään lisäämällä muuttujan UEFI-laiteohjelmistoon. Windowsin käynnistyksen valvojat kunnioittavat käytäntöä ja UEFI-lukitusta. Jos UEFI-lukitus on paikallaan ja käytäntö on poistettu, Windowsin käynnistyksen hallinta ei käynnisty. Jos käytäntö on käytössä, käynnistyksen hallinta ei käynnisty, jos käytäntö on estänyt sen.
Ohjeita haavoittuvassa asemassa olevien Windows-käynnistyspäälliköiden estämiseen
HUOMAUTUS Käyttäjille on annettava mahdollisuus käyttää muuttujaa, jotta he voivat hallita sitä, milloin he ovat suojattuja.
Kun UEFI-lukitus otetaan käyttöön, windows-tietovälineen käynnistys lopetetaan, kunnes tietoväline päivitetään 9. toukokuuta 2023 tai sen jälkeen julkaistuilla Windows-päivityksillä. Ohjeita tietovälineen päivittämiseen on artikkelissa KB5025885: CVE-2023-24932:een liittyvien suojatun käynnistyksen muutosten Windows boot Manager -peruutusten hallinta.
-
Suojatun käynnistyksen järjestelmät, jotka käynnistävät vain muita kuin Windows-käyttöjärjestelmiä
Jos järjestelmät käynnistävät vain muita kuin Windows-käyttöjärjestelmiä eivätkä koskaan käynnistä Windowsia, näitä lievennyksiä voidaan soveltaa järjestelmään välittömästi. -
Kaksi käynnistystä käyttävissä järjestelmissä Windows ja toinen käyttöjärjestelmä
Windowsin käynnistävien järjestelmien muut kuin Windowsin lievennykset tulisi ottaa käyttöön vasta sen jälkeen, kun Windows-käyttöjärjestelmä on päivitetty 9. toukokuuta 2023 tai sen jälkeen julkaistuihin Windows-päivityksiin.
UEFI-lukituksen luominen
UEFI Lockissa on kaksi muuttujaa, jotka tarvitaan windowsin käynnistyksen hallinnan palautushyökkäysten estämiseen. Nämä muuttujat ovat seuraavat:
-
SKU SiPolicy -määritteet
Tällä käytännöllä on seuraavat määritteet:
-
Käytännön tyyppitunnus:
{976d12c8-cb9f-4730-be52-54600843238e}
-
SkuSiPolicy.p7b-tiedoston nimi
-
EFI\Microsoft\Bootn fyysinen sijainti
Kuten kaikki allekirjoitetut WDAC-käytännöt, allekirjoitettu SKU-käytäntö on suojattu kahdella UEFI-muuttujalla:
-
SKU_POLICY_VERSION_NAME: "SkuSiPolicyVersion"
-
SKU_POLICY_UPDATE_POLICY_SIGNERS_NAME: "SkuSiPolicyUpdateSigners"
-
-
SKU SiPolicy -muuttujat
Tämä käytäntö käyttää kahta EFI-nimitilaan/toimittajaan tallennettua UEFI-muuttujaa
GUID(SECUREBOOT_EFI_NAMESPACE_GUID):#define SECUREBOOT_EFI_NAMESPACE_GUID \
{0x77fa9abd, 0x0359, 0x4d32, \
{0xbd, 0x60, 0x28, 0xf4, 0xe7, 0x8f, 0x78, 0x4b}};
-
SkuSiPolicyVersion
-
on tyyppiä ULONGLONG/UInt64 suorituksen aikana
-
on määritetty <VersionEx>2.0.0.2</VersionEx> käytännön XML-muodossa (MAJOR). PIENIÄ. VERSIO. KOONTIVERSIONUMERO)
-
Se on käännetty ULONGLONG-
((major##ULL << 48) + (minor##ULL << 32) + (revision##ULL << 16) + buildnumber)
Jokaisessa versionumerossa on 16 bittiä, joten siinä on yhteensä 64 bittiä.
-
Uudemman käytännön version on oltava yhtä suuri tai suurempi kuin UEFI-muuttujaan suorituksen aikana tallennettu versio.
-
Kuvaus: Määritä koodin eheyden käynnistyskäytännön versio.
-
Määritteet:
(EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
-
Namespace Guid:
77fa9abd-0359-4d32-bd60-28f4e78f784b
-
Tietotyyppi:
uint8_t[8]
-
Tietoja:
uint8_t SkuSiPolicyVersion[8] = { 0x2,0x0,0x0,0x0,0x0,0x0,0x2,0x0 };
-
-
SkuSiPolicyUpdateSigners
-
Sen täytyy olla Windows-allekirjoittaja.
-
Kuvaus: Käytännön allekirjoittajan tiedot.
-
Määritteet:
(EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS)
-
Namespace Guid:
77fa9abd-0359-4d32-bd60-28f4e78f784bd
-
Tietotyyppi:
uint8_t[131]
-
Tietoja:
uint8_tSkuSiPolicyUpdateSigners[131] =
{ 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x0b, 0x00, 0x00, 0x00, 0xd0, 0x91, 0x73, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x54, 0xa6, 0x78, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x5c, 0xa6, 0x78, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00, 0x00, 0x00, 0x64, 0xa6, 0x78, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0a, 0x2b, 0x06, 0x01,
0x04, 0x01, 0x82, 0x37, 0x0a, 0x03, 0x06, 0x00,
0x00, 0x00, 0x00};
-
-
DBX:n käyttäminen
Olemme julkaisseet tämän ongelman DbxUpdate.bin-tiedoston UEFI.org. Nämä hajautukset sisältävät kaikki kumotut Windows-käynnistyksen valvojat, jotka on julkaistu Windows 8 välillä, ja Windows 10 ensimmäinen julkaisu, jotka eivät noudata koodin eheyskäytäntöä.
On erittäin tärkeää, että näitä käytetään huolellisesti, koska vaarana on, että ne saattavat rikkoa kaksi käynnistysjärjestelmää, joka käyttää useita käyttöjärjestelmiä ja yhtä näistä käynnistyspäälliköistä. Lyhyellä aikavälillä suosittelemme, että kaikkia järjestelmiä varten nämä hajautukset otetaan valinnaisesti käyttöön.