Методы отключения защиты Lockdown в Ubuntu для удалённого обхода UEFI Secure Boot

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 3 Feb 2020.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    1,992
    Likes Received:
    4,763
    Reputations:
    693
    Андрей Коновалов из компании 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, но исправление пока не выпущено.

     
    seostock, Spinus and DartPhoenix like this.
  2. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    573
    Likes Received:
    6,145
    Reputations:
    15
    Потому что UEFI все переводят в режим совместимости и юзают старую добрую MBR :)
     
Loading...