Ubuntu-ում Lockdown պաշտպանությունն անջատելու մեթոդներ՝ UEFI Secure Boot-ը հեռակա շրջանցելու համար

Անդրեյ Կոնովալով Google-ից հրատարակվել պաշտպանությունը հեռակա կարգով անջատելու միջոց Մեկուսացումառաջարկվում է Ubuntu-ով առաքված Linux միջուկի փաթեթում (տեսականորեն առաջարկվող տեխնիկա ունենալ աշխատել Fedora-ի և այլ բաշխումների միջուկի հետ, բայց դրանք չեն փորձարկվել):

Lockdown-ը սահմանափակում է արմատային օգտվողի մուտքը միջուկ և արգելափակում է UEFI Secure Boot-ի շրջանցման ուղիները: Օրինակ՝ արգելափակման ռեժիմում մուտք գործել դեպի /dev/mem, /dev/kmem, /dev/port, /proc/kcore, վրիպազերծումներ, kprobes կարգաբերման ռեժիմ, mmiotrace, tracefs, BPF, PCMCIA CIS (Քարտի տեղեկատվական կառուցվածք), որոշ միջերեսները սահմանափակ են CPU-ի ACPI և MSR ռեգիստրները, դեպի kexec_file և kexec_load զանգերն արգելափակված են, քնի ռեժիմն արգելված է, DMA-ի օգտագործումը PCI սարքերի համար սահմանափակ է, ACPI կոդի ներմուծումը EFI փոփոխականներից արգելված է, I/O պորտերով մանիպուլյացիաները արգելված են: թույլատրվում է, ներառյալ՝ փոխելով ընդհատման համարը և մուտքի/ելք պորտը սերիական պորտի համար:

Lockdown մեխանիզմը վերջերս ավելացվել է հիմնական Linux միջուկին 5.4, բայց բաշխումներում մատակարարվող միջուկներում այն ​​դեռ իրականացվում է patches-ի տեսքով կամ լրացվում է patches-ով։ Բաշխման փաթեթներում տրամադրվող հավելումների և միջուկում ներկառուցված իրագործման տարբերություններից մեկը տրամադրված կողպումն անջատելու հնարավորությունն է, եթե դուք ֆիզիկական մուտք ունեք համակարգ:

Ubuntu-ում և Fedora-ում Alt+SysRq+X ստեղների համակցությունը տրամադրվում է Lockdown-ն անջատելու համար: Հասկանալի է, որ Alt+SysRq+X համակցությունը կարող է օգտագործվել միայն սարքի ֆիզիկական մուտքի դեպքում, իսկ հեռակա հաքերային հարձակման և արմատային հասանելիություն ձեռք բերելու դեպքում հարձակվողը չի կարողանա անջատել 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-ի ծրագրավորողներին, սակայն ուղղումը դեռ չի հրապարակվել:

Source: opennet.ru

Добавить комментарий