Метады адключэння абароны Lockdown у Ubuntu для выдаленага абыходу UEFI Secure Boot

Андрэй Канавалаў з кампаніі Google апублікаваў спосаб выдаленага адключэння абароны Lockdown, прапанаванай у пакеце з ядром Linux, які пастаўляецца ў Ubuntu (тэарэтычна прапанаваныя метады павінны працаваць з ядром Fedora і іншых дыстрыбутываў, але яны не пратэставаны).

Lockdown абмяжоўвае доступ карыстача root да ядра і блакуе шляхі абыходу UEFI Secure Boot. Напрыклад, у рэжыме lockdown абмяжоўваецца доступ да /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, адладкавага рэжыму kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Card Information Structure), некаторым інтэрфейсам ACPI і MSR-рэгістрам CPU, блакуюцца выклікі kexec_file і kexec_load, забараняецца пераход у спячы рэжым, лімітуецца выкарыстанне DMA для PCI-прылад, забараняецца імпарт кода ACPI са зменных EFI, не дапушчаюцца маніпуляцыі з партамі ўводу/высновы, у тым ліку змена нумара перапынення і порта ўводу/высновы для паслядоўнага порта.

Механізм Lockdown нядаўна быў дададзены ў асноўны склад ядра Linux 5.4, Але ў пастаўляюцца ў дыстрыбутывах ядрах ён па-ранейшаму рэалізаваны ў форме патчаў ці дапоўнены патчамі. Адным з адрозненняў якія прадстаўляюцца ў дыстрыбутывах надбудоў ад убудаванай у ядро ​​рэалізацыі з'яўляецца магчымасць адключэння якая прадстаўляецца блакавання пры наяўнасці фізічнага доступу да сістэмы.

У Ubuntu і Fedora для адключэння Lockdown прадугледжана камбінацыя клавіш Alt+SysRq+X. Мяркуецца, што камбінацыю Alt+SysRq+X можна выкарыстоўваць толькі пры фізічным доступе да прылады, а ў выпадку выдаленага ўзлому і атрыманні root-доступу атакавалы не зможа адключыць Lockdown і, напрыклад, загрузіць у ядро ​​незавераны лічбавым подпісам модуль з rootkit-ом.

Андрэй Канавалаў паказаў, што звязаныя з выкарыстаннем клавіятуры метады пацвярджэння фізічнай прысутнасці карыстальніка неэфектыўныя. Найпростым спосабам адключэння Lockdown была б праграмная мадэляванне націскі Alt+SysRq+X праз /dev/uinput, але дадзены варыянт першапачаткова блакіраваны. Пры гэтым атрымалася выявіць прынамсі яшчэ два спосабу падстаноўкі Alt+SysRq+X.

Першы спосаб звязаны з выкарыстаннем інтэрфейсу "sysrq-trigger" - для сімуляцыі дастаткова ўключыць гэты інтэрфейс, запісаўшы "1" у /proc/sys/kernel/sysrq, а затым запісаць "x" у /proc/sysrq-trigger. Указаная шчыліна ліквідавана у снежаньскім абнаўленні ядра Ubuntu і ў Fedora 31. Характэрна, што распрацоўнікі, як у выпадку з /dev/uinput, першапачаткова спрабавалі блакаваць дадзены метад, але блакіроўка не працавала з-за памылкі у кодзе.

Другі спосаб звязаны з эмуляцыяй клавіятуры праз USB/IP і наступнай адпраўкай паслядоўнасці Alt+SysRq+X з віртуальнай клавіятуры. У пастаўляемым у Ubuntu ядры USB/IP па змаўчанні ўключаны (CONFIG_USBIP_VHCI_HCD=m і CONFIG_USBIP_CORE=m) і прадстаўлены неабходныя для працы завераныя лічбавым подпісам модулі usbip_core і vhci_hcd. Атакуючы можа стварыць віртуальнае USB-прылада, запушчаны сеткавы апрацоўшчык на loopback-інтэрфейсе і падлучыўшы яго як выдаленае USB-прылада пры дапамозе USB/IP. Аб паказаным метадзе паведамлена распрацоўнікам Ubuntu, але выпраўленне пакуль не выпушчана.

Крыніца: opennet.ru

Дадаць каментар