UEFI Secure Boot программасын кыйгап өтүүгө мүмкүндүк берген GRUB2деги оңдоо кыйын кемчиликтери

GRUB8 жүктөөчүсүнүн 2 алсыздыгы жөнүндө маалымат ачылды, алар UEFI Secure Boot механизмин айланып өтүп, текшерилбеген кодду иштетүүгө мүмкүндүк берет, мисалы, жүктөгүч же ядро ​​деңгээлинде иштеген кесепеттүү программаны ишке ашыруу.

Көпчүлүк Linux дистрибуцияларында UEFI Secure Boot режиминде текшерилген жүктөө үчүн Microsoft тарабынан санариптик кол коюлган кичинекей бир катмар колдонулат. Бул катмар GRUB2ди өзүнүн сертификаты менен текшерет, бул дистрибьютордук иштеп чыгуучуларга Microsoft тарабынан тастыкталган ар бир ядро ​​жана GRUB жаңыртууларына ээ болбоого мүмкүндүк берет. GRUB2деги алсыздыктар сизге кодуңузду ийгиликтүү текшерүү стадиясында ишке ашырууга мүмкүндүк берет, бирок операциялык системаны жүктөөдөн мурун, Secure Boot режими активдүү болгондо ишеним чынжырына кирүү жана андан аркы жүктөө процессин толук көзөмөлдөөгө, анын ичинде башка OS жүктөө, операциялык тутум компоненттеринин системасын өзгөртүү жана Lockdown коргоону айланып өтүү.

Өткөн жылдагы BootHole аялуулугундагыдай эле, жүктөгүчтү жаңыртуу көйгөйдү бөгөттөө үчүн жетишсиз, анткени чабуулчу колдонулган операциялык тутумга карабастан, UEFI Secure Boot программасын бузуу үчүн эски, санарип кол коюлган, GRUB2дин аялуу версиясы менен жүктөлүүчү медианы колдоно алат. Маселе сертификатты жокко чыгаруу тизмесин жаңыртуу менен гана чечилиши мүмкүн (dbx, UEFI Revocation List), бирок бул учурда Linux менен эски орнотуу медиасын колдонуу мүмкүнчүлүгү жоголот.

Жаңыртылган тастыктамаларды жокко чыгаруу тизмеси бар микропрограммасы бар системаларда UEFI Secure Boot режиминде Linux дистрибуцияларынын жаңыланган түзүлүшү гана жүктөлүшү мүмкүн. Бөлүштүрүүлөргө орнотуучуларды, жүктөгүчтөрдү, ядро ​​пакеттерин, fwupd микропрограммасын жана жабдык катмарын жаңыртып, алар үчүн жаңы санариптик кол тамгаларды жаратышы керек. Колдонуучулардан орнотуу сүрөттөрүн жана башка жүктөлүүчү медианы жаңыртуу, ошондой эле UEFI микропрограммасына сертификатты жокко чыгаруу тизмесин (dbx) жүктөө талап кылынат. dbx'ти UEFIге жаңыртуудан мурун, OSде жаңыртуулардын орнотулушуна карабастан, система аялуу бойдон кала берет. Алсыздыктын абалын бул баракчалардан баалоого болот: Ubuntu, SUSE, RHEL, Debian.

Жокко чыгарылган сертификаттарды таратууда пайда болгон көйгөйлөрдү чечүү үчүн келечекте GRUB2, shim жана fwupd үчүн колдоого алынган SBAT (UEFI Secure Boot Advanced Targeting) механизмин колдонуу пландаштырылууда жана кийинки жаңыртуулардан баштап dbxtool пакети тарабынан берилген функциянын ордуна колдонулат. SBAT Microsoft менен биргеликте иштелип чыккан жана UEFI компоненттеринин аткарылуучу файлдарына жаңы метаберилиштерди кошууну камтыйт, анда өндүрүүчү, продукт, компонент жана версия жөнүндө маалымат камтылган. Көрсөтүлгөн метадайындар санарип кол тамгасы менен тастыкталган жана UEFI Secure Boot үчүн уруксат берилген же тыюу салынган компоненттердин тизмесине кошумча киргизилиши мүмкүн. Ошентип, SBAT сизге Secure Boot үчүн ачкычтарды кайра жаратпастан жана ядро, shim, grub2 жана fwupd үчүн жаңы кол тамгаларды жаратпастан, жокко чыгаруу учурунда компоненттердин версиясынын номерлерин башкарууга мүмкүндүк берет.

Белгиленген кемчиликтер:

  • CVE-2020-14372 – GRUB2деги acpi буйругун колдонуу менен, жергиликтүү тутумдагы артыкчылыктуу колдонуучу SSDTди (Кошумча системанын сүрөттөмө таблицасын) /boot/efi каталогуна жайгаштыруу жана grub.cfg дарегинде орнотууларды өзгөртүү аркылуу өзгөртүлгөн ACPI таблицаларын жүктөй алат. Коопсуз жүктөө режими активдүү болсо да, сунушталган SSDT ядро ​​тарабынан аткарылат жана UEFI Secure Boot айланып өтүү жолдорун бөгөттөөчү LockDown коргоосун өчүрүү үчүн колдонулушу мүмкүн. Натыйжада, чабуулчу санарип кол тамгасын текшербестен, өзүнүн ядро ​​модулун же иштеп жаткан кодду kexec механизми аркылуу жүктөөгө жетише алат.
  • CVE-2020-25632 - бул rmmod буйругун ишке ашырууда эстутумга кийин бош колдонуу мүмкүнчүлүгү, ал кандайдыр бир модулду ага байланышкан көз карандылыктарды эсепке албастан түшүрүү аракети жасалганда пайда болот. Алсыздык Secure Boot текшерүүсүн кыйгап өтүү менен коддун аткарылышына алып келиши мүмкүн болгон эксплойт түзүүнү жокко чыгарбайт.
  • CVE-2020-25647 USB түзмөктөрүн инициализациялоодо чакырылган grub_usb_device_initialize() функциясында чектен тышкары жазуу. Көйгөй USB түзүмдөрү үчүн бөлүнгөн буфердин өлчөмүнө туура келбеген параметрлерди чыгарган атайын даярдалган USB түзүлүштү туташтыруу аркылуу пайдаланылышы мүмкүн. Чабуулчу USB түзмөктөрүн манипуляциялоо аркылуу Secure Boot программасында текшерилбеген коддун аткарылышына жетише алат.
  • CVE-2020-27749 — grub_parser_split_cmdline() функциясындагы буфердин ашып кетиши, ал GRUB2 буйрук сабында 1 КБдан чоңураак өзгөрмөлөрдү көрсөтүүдөн келип чыгышы мүмкүн. Алсыздык коддун аткарылышын Secure Boot'ту айланып өтүүгө мүмкүндүк берет.
  • CVE-2020-27779 – cutmem буйругу чабуулчуга Коопсуз жүктөөнү айланып өтүү үчүн эстутумдан бир катар даректерди алып салууга мүмкүндүк берет.
  • CVE-2021-3418 - shim_lock өзгөртүүлөрү өткөн жылдагы CVE-2020-15705 аялуулугун пайдалануу үчүн кошумча векторду түздү. dbxде GRUB2ге кол коюу үчүн колдонулган сертификатты орнотуу менен GRUB2 кол тамганы текшербестен, каалаган ядрону түздөн-түз жүктөөгө уруксат берди.
  • CVE-2021-20225 - Өтө көп сандагы опциялар менен буйруктарды иштетүүдө чектен тышкаркы маалыматтарды жазуу мүмкүнчүлүгү.
  • CVE-2021-20233 - Тырмакчаларды колдонууда буфер өлчөмүн туура эмес эсептөөдөн улам маалыматтарды чектен тышкары жазуу мүмкүнчүлүгү. Өлчөмдү эсептөөдө бир тырмакчадан качуу үчүн үч символ талап кылынат деп болжолдонгон, чындыгында төрт белги талап кылынган.

Source: opennet.ru

Комментарий кошуу