Shim kihis, mida kasutatakse enamikus Linuxi distributsioonides UEFI Secure Boot kontrollitud kĂ€ivitamiseks, on tuvastatud haavatavus (CVE-2023-40547), mis vĂ”ib viia kaugelt koodi tĂ€itmise ja UEFI Secure Booti kontrollitud kĂ€ivitamise mehhanismi ĂŒletamiseni. RĂŒndaja, kes kontrollib Shim'iga ĂŒhendust juhtivat HTTP-serverit, vĂ”ib saata spetsiaalselt vormindatud vastuse, mis viib kontrollitud kirjutamiseni puhverpiirist vĂ€ljas, et korraldada koodi tĂ€itmine kĂ€ivitamise varajases etapis.
Haavatavus on pĂ”hjustatud veast HTTP-failide laadimise koodis, mis ilmneb ebaĂ”igete vastuste töötlemisel, mille HTTP-server, kuhu shim suunab, tagastab. HTTPBoot reĆŸiim shimis on toetatud alates 2016. aastast ja vĂ”imaldab korraldada vĂ”rgulaadimist, kasutades HTTP-protokolli laadimisfaili hankimiseks, mida kutsutakse jĂ€rgmisel etapil. Shim eraldab failide laadimisel HTTP kaudu vastuvĂ”etud andmete jaoks puhvri, arvestades mitte tegelikku andmete suurust, vaid suurust, mis on mĂ€rgitud HTTP-pealkirjas «Content-Length». Seega, kui tagastada Content-Length pealkirjas vĂ€iksem vÀÀrtus, on vĂ”imalik saavutada pĂ€ringu sabade kirjutamine puhvri vĂ€lisse mĂ€llu.
Shim on kinnitatud Microsofti digitaalse allkirjaga ja kinnitab GRUB2 oma sertifikaadiga, mis vĂ”imaldab distributsioonide arendajatel mitte kinnitada igat kernel- ja GRUB-i vĂ€rskendust Microsoftis. Haavatavus shimis vĂ”imaldab sekkuda usaldusketti aktiivse Secure Boot reĆŸiimi ajal ja saada tĂ€ielikku kontrolli edasise laadimisprotsessi ĂŒle, nĂ€iteks teise operatsioonisĂŒsteemi laadimine, operatsioonisĂŒsteemi komponentide modifitseerimine ja Lockdowni kaitse ringi minemine.
Haavatavus on kĂ”rvaldatud Shim 15.8 versioonis, kuid rĂŒnnaku tĂ€ielik blokeerimine Shim'i kaudu nĂ”uab uue versiooni allkirjastamise kinnitust Microsoftilt ja selle rakendamist jaotustes. Haavatavuse kĂ”rvaldamise staatust jaotustes saab hinnata jĂ€rgmistelt lehtedelt: Debian, Ubuntu, SUSE, RHEL, Fedora. Probleem seisneb selles, et ilma vana versiooni allkirjade tagasivĂ”tmiseta on parandamine mĂ”ttetu, kuna rĂŒndaja vĂ”ib kasutada haavatavat Shim'i versiooni UEFI Secure Boot'i kompromiteerimiseks. Kuid allkirjade tagasivĂ”tmine tooks kaasa selle, et jaotuste allkirjastatud laadimine, mis kasutavad vana Shim'i versiooni, pole vĂ”imalik.
Digitaalallkirja tagasi vÔtmata haavatavuse blokeerimiseks vÔivad distributsioonid kasutada SBAT (UEFI Secure Boot Advanced Targeting) mehhanismi, mille toetust on rakendatud GRUB2, shim ja fwupd enamikus populaarsetes Linuxi distributsioonides. SBAT on vÀlja töötatud koostöös Microsoftiga ning see hÔlmab tÀiendavate metainformatsioonide lisamist UEFI komponente sisaldavatesse tÀiturfailidesse, sealhulgas tootja, toote, komponendi ja versiooni teavet. Mainitud metainformatsioon on digitaalallkirjaga allkirjastatud ja seda saab eraldi lisada lubatud vÔi keelatud komponentide loetellu UEFI Secure Boot jaoks.
SBAT vĂ”imaldab blokeerida digitaalallkirja kasutamise ĂŒksikute komponentide versioonide numbrite jaoks ilma Secure Boot'i vĂ”tmete tagasivĂ”tmiseta. Haavatavuste blokeerimine SBAT-i kaudu ei nĂ”ua UEFI tagasivĂ”etud sertifikaatide loendi (dbx) kasutamist, vaid toimub allkirjade koostamiseks ja GRUB2, shim'i ning teiste jaotustega tarnitud laadimisartefaktide vĂ€rskendamiseks sisemise vĂ”tme asendamise tasandil.
Shim 15.8-s on mainitud haavatavuse kÔrval on parandatud ka mitu vÀhem ohtlikku lokaalset probleemi:
- CVE-2023-40548 â tĂ€isarvu ĂŒlevool funktsioonis verify_sbat_section, mis pĂ”hjustab 32-bitistes sĂŒsteemides puhversalvi ĂŒlevoolu.
- CVE-2023-40546 â mĂ€lu lugemine puhversalvist vĂ€ljapoole vigade logimise funktsiooni LogError() kaudu.
- CVE-2023-40549 â mĂ€lu lugemine puhversalvist vĂ€ljapoole, kui funktsioon verify_buffer_authenticode() töötleb spetsiaalselt vormindatud PE-faili.
- CVE-2023-40550 â mĂ€lu lugemine puhversalvist vĂ€ljapoole funktsioonis verify_buffer_sbat().
- CVE-2023-40551 â mĂ€lu lugemine puhversalvist vĂ€ljapoole MZ-failide töötlemisel.
Allikas: opennet.ru
