Kaedah untuk melumpuhkan perlindungan Lockdown dalam Ubuntu untuk memintas UEFI Secure Boot dari jauh

Andrey Konovalov daripada Google diterbitkan cara untuk melumpuhkan perlindungan dari jauh kuncianditawarkan dalam pakej kernel Linux yang dihantar dengan Ubuntu (teknik secara teorinya dicadangkan mempunyai bekerja dengan kernel Fedora dan pengedaran lain, tetapi ia tidak diuji).

Lockdown menyekat akses pengguna root kepada kernel dan menyekat laluan pintasan UEFI Secure Boot. Contohnya, dalam mod lokap, akses kepada /dev/mem, /dev/kmem, /dev/port, /proc/kcore, debugfs, mod penyahpepijatan kprobes, mmiotrace, tracefs, BPF, PCMCIA CIS (Struktur Maklumat Kad), beberapa antara muka adalah terhad ACPI dan daftar MSR CPU, panggilan ke kexec_file dan kexec_load disekat, mod tidur adalah dilarang, penggunaan DMA untuk peranti PCI adalah terhad, import kod ACPI daripada pembolehubah EFI adalah dilarang, manipulasi dengan port I/O adalah dilarang. dibenarkan, termasuk menukar nombor gangguan dan port I/O untuk port bersiri.

Mekanisme Lockdown baru-baru ini telah ditambahkan pada kernel Linux utama 5.4, tetapi dalam kernel yang dibekalkan dalam pengedaran ia masih dilaksanakan dalam bentuk patch atau ditambah dengan patch. Salah satu perbezaan antara alat tambah yang disediakan dalam kit pengedaran dan pelaksanaan terbina dalam kernel ialah keupayaan untuk melumpuhkan penguncian yang disediakan jika anda mempunyai akses fizikal kepada sistem.

Dalam Ubuntu dan Fedora, kombinasi kekunci Alt+SysRq+X disediakan untuk melumpuhkan Lockdown. Difahamkan bahawa gabungan Alt+SysRq+X hanya boleh digunakan dengan akses fizikal kepada peranti, dan dalam kes penggodaman jauh dan mendapatkan akses root, penyerang tidak akan dapat melumpuhkan Lockdown dan, sebagai contoh, memuatkan modul dengan rootkit yang tidak ditandatangani secara digital ke dalam kernel.

Andrey Konovalov menunjukkan bahawa kaedah berasaskan papan kekunci untuk mengesahkan kehadiran fizikal pengguna adalah tidak berkesan. Cara paling mudah untuk melumpuhkan Lockdown adalah dengan memprogramkan simulasi menekan Alt+SysRq+X melalui /dev/uinput, tetapi pilihan ini pada mulanya disekat. Pada masa yang sama, adalah mungkin untuk mengenal pasti sekurang-kurangnya dua lagi kaedah penggantian Alt+SysRq+X.

Kaedah pertama melibatkan penggunaan antara muka "sysrq-trigger" - untuk mensimulasikannya, hanya dayakan antara muka ini dengan menulis "1" ke /proc/sys/kernel/sysrq, dan kemudian tulis "x" ke /proc/sysrq-trigger. Kata celah dihapuskan dalam kemas kini kernel Ubuntu Disember dan dalam Fedora 31. Perlu diperhatikan bahawa pembangun, seperti dalam kes /dev/uinput, pada mulanya cuba menyekat kaedah ini, tetapi menyekat tidak berfungsi kerana Kesilapan dalam kod.

Kaedah kedua melibatkan emulasi papan kekunci melalui USB/IP dan kemudian menghantar urutan Alt+SysRq+X daripada papan kekunci maya. Kernel USB/IP yang dihantar dengan Ubuntu didayakan secara lalai (CONFIG_USBIP_VHCI_HCD=m dan CONFIG_USBIP_CORE=m) dan menyediakan modul usbip_core dan vhci_hcd yang ditandatangani secara digital yang diperlukan untuk operasi. Penyerang boleh untuk mencipta peranti USB maya, berlari pengendali rangkaian pada antara muka gelung balik dan menyambungkannya sebagai peranti USB jauh menggunakan USB/IP. Mengenai kaedah yang ditentukan dilaporkan kepada pembangun Ubuntu, tetapi pembetulan masih belum dikeluarkan.

Sumber: opennet.ru

Tambah komen