The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

03.02.2020 10:20

Андрей Коновалов из компании 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, но исправление пока не выпущено.

  1. Главная ссылка к новости (https://twitter.com/andreyknvl...)
  2. OpenNews: Релиз ядра Linux 5.4
  3. OpenNews: В ядро Linux 5.4 приняты патчи для ограничения доступа root к внутренностям ядра
  4. OpenNews: Локальная root-уязвимость в реализации сокетов AF_PACKET в ядре Linux
  5. OpenNews: В USB-драйверах из состава ядра Linux выявлено 15 уязвимостей
  6. OpenNews: 15 уязвимостей в USB-драйверах, поставляемых в ядре Linux
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52286-lockdown
Ключевые слова: lockdown, usbip, usb, keyboard, sysrq
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (53) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:38, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > Второй способ связан с эмуляцией клавиатуры через USB/IP и последующей отправкой последовательности Alt+SysRq+X с виртуальной клавиатуры.

    А ведь еще есть WebUSB в браузерах, интересно, через этот API можно проводить вектор атаки через клавиатуру, открыв в браузере вкладку с эксплоитом?

     
     
  • 2.2, Аноним (2), 10:55, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    разве webusb это не обертка над вышеназванным?
     
  • 2.5, Аноним (-), 11:49, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Что значит - через клавиатуру? Нестандартно что-то сделать с клавиатурой в теории можно. На практике там часто бывает однократно программируемый или mask rom контроллер-капля, с которым врядли можно что-то интересное. Хотя может кто не жадный и флешовую версию встроил? В некоторых логитехах вроде STM32 даже поставили, но это в хайэндовых моделях только. Вот там можно приколоться, клаву перешить. А вот тогда... тогда ядро хакать ни к чему! Клава сама все ваши пароли запомнит в своем RAM :)
     
     
  • 3.7, ыы (?), 11:50, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    и отошлет куда надо через бесплатный спутниковый интернет
     
     
  • 4.11, Аноним (-), 12:19, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Пока таких клавиатур вроде не делают. А жаль, я бы некоторым такую подарил.
     
     
  • 5.20, mickvav (?), 12:34, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На масс-маркете еще может и нет, но можно спорить на что угодно - у разведок большинства стран такая штука уже лет 10 как должна быть в арсенале ;)
     
     
  • 6.49, Аноним (-), 05:08, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Спутниковому интернету с глобальным покрытием планеты - без году неделя. Особо наглый народец конечно юзал NATO'вские геостационары как релеи черт знает сколько, но для такого развлечения антенна размером с две клавы и незаметно ее пристроить... эээ... ну попробуйте :)
     
  • 2.36, колба (?), 18:46, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    WebUSB работает в обратную сторону. давая удалённому серверу работать с локальным USB устройством так как если бы оно было воткнуто не в ваш компьютер а в сервер. и если вы не пишите такой странный сервер который вдруг не в виртуалке крутится, а прям на сыром железе под локдауном и хотите так подключать клавиатуру.. то в общем да можно заморочиться чтоб отключать так локдаун режим.. но ни о каких вкладках с эксплойтом речь уже не идёт.
     
     
  • 3.38, Аноним (38), 21:33, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    BadUSB. Устройство перешивается в клавиатуру и посылает коды клавиш, нужные атакующему.
     
     
  • 4.46, 1513150215011502 (?), 01:41, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    блин, УДАЛЕННЫЙ доступ!
     
  • 2.47, Kuromi (ok), 03:02, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это вряд ли. Во первых, WebUSB очень ограниченный и весь такой защищенный, так что вот так просто взять и что-то сделать не получится, пользователь как минимум должен явно разрешить, а во вторых сам протокол рассчитан на взаимодейтсвие браузера (вэб-приложения) по USB с конкретным физическим устройством, там нужны совпадения VID\PID, в третьих WebUSB может либо читать из USB либо писать. Например Хром вот может обновлять прошивку в Пикселе. Как браузер будет атаковать через клавиатуру?
     
     
  • 3.50, Аноним (-), 05:10, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Хватит лишь перешить ваш смарт, как в соседней новости предлагалось. При следующем ребуте его фирмвари он объявит себя клавой и напечатает все что захочет :)
     

  • 1.3, ыы (?), 11:44, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    а как насчет экранной клавиатуры?
     
     
  • 2.4, Аноним (-), 11:46, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Никак - для кернела ее не существует.
     
     
  • 3.6, ыы (?), 11:49, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    ну нажатия то на кнопки есть...
     
     
  • 4.8, Аноним (8), 11:54, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Написано же, что отправка sysrq через /dev/uinput блокируется.
     
  • 4.15, Аноним (-), 12:22, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > ну нажатия то на кнопки есть...

    Есть какие-то там события ввода, и утверждается что это блокируется :)

     

  • 1.9, CrazyAlex (?), 12:06, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    А зачем этот lockdown вообще? Зачем может понадобиться защищаться от живого рута?
     
     
  • 2.12, Аноним (12), 12:19, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для тивоизации
     
     
  • 3.19, Аноним (-), 12:27, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Я себе его врубил - это что, я себя тивоизировал чтоли? А вот и нет - у меня ключик для подписи ядерных модулей в загашнике есть :)
     
     
  • 4.29, Ант о Ним (?), 15:27, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    А теперь отберём рута и прошьём в DVD-TV медиа плеер. Примерно такой кейс. Как с Ведроидом.
     
     
  • 5.51, Аноним (-), 05:11, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Будет надо - отберем и прошьем. Но ключик у меня все же останется. Хорошо быть с правильной стороны пулемета, что ни говори :)
     
  • 3.24, Твой Отец (?), 13:16, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Тивоизация цисгендера что ли? Таким ходом Linux скоро превратится в в мечеть воинственных SJW под крылом Microsoft.
     
     
  • 4.48, test (??), 05:07, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Поздно пить баржоми, как говориться....
     
  • 2.17, anonymous (??), 12:24, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы быть уверенным, что никто не добавил закладок/бэкдоров. Хотя можно было и просто Extend-ить какой-нибудь PCR -- гораздо меньше проблем, а полезный почти результат тот же.
     
  • 2.18, Аноним (-), 12:25, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > А зачем этот lockdown вообще? Зачем может понадобиться защищаться от живого рута?

    - Для DRMщиков - защита от пользователей.
    - Для безопасников - защита от "крутых" взломщиков.
    - Для дистров - уменьшение поломаных юзеров с руткитами.
    - Для вас - ? Зависит от того кто вы и что хотите.

     

  • 1.10, Аноним (-), 12:11, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +36 +/
    Был биос да биос, простой как семейные трусы, никому не мешал, запускали ракеты, шатлы, писали игры, разрабатывали высокосложный софт для промышленных целей. Всё было замечательно. Потом появился хренUEFI, интелМЕ, компутрэйс и прочая чушь, которая мало того, что полушпионская (как минимум компы - зомби), так ещё и решёто (а как максимум - закладкии и бэкдуры). А ведь кругом много клаунов, которые защищают все эти модные и довольно бестолковые новшества, мол там видео режим не меняется и прочие аргументы в стиле "вилы по воде".
     
     
  • 2.14, Аноним (14), 12:21, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Картель wintel не любит конкурентов
     
  • 2.16, Аноним (-), 12:24, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > интелМЕ, компутрэйс и прочая чушь, которая мало того, что полушпионская (как минимум компы - зомби)

    Ну так промышленные цели и прочие ракеты видите ли штука довольно интересно, порулить ими хочет каждый :). По крайней мере такую возможность на пиковый случай.

     
  • 2.22, Ordu (ok), 13:00, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    > Был биос да биос, простой как семейные трусы

    Он может быть был простой как семейные трусы в первых IBM PC, но затем, последовательными патчами, из них сделали брюки, а потом скафандр. При этом трусы и брюки никуда не делись, ибо обратная совместимость.

    Биос был уродливейшим выпердышем обратной совместимости. UEFI имеет свои недостатки, и может быть они перевешивают недостатки биоса, но я не ковырялся в UEFI поэтому не могу судить.

    > запускали ракеты, шатлы, писали игры, разрабатывали высокосложный софт для промышленных целей

    Когда всё это делали при помощи биоса? В 80-х? В 90-х наверное тоже, да? Но уже в 2000 биос был нужен только для того, чтобы запустить ОС. Всё остальное в биосе превратилось в никому не нужный мусор.

    Хотя игры писать полагаясь на биос -- этого по-моему никто никогда не делал. Биос тормозной до невыносимости (и тому есть неустранимые причины), поэтому всё что игры могли сделать самостоятельно, они делали самостоятельно. Вся работа с видеокартой и звуком по-любому выполнялась в обход биоса, а скорее всего и с устройствами ввода игра взаимодействовала напрямую, игнорируя возможности биоса.

    > А ведь кругом много клаунов, которые защищают все эти модные и довольно бестолковые новшества

    Кругом много клоунов, которые в глаза не видели ни биос, ни UEFI, но мнение имеют.

    Я могу понять ностальгию по 16-бит кодингу для IBM PC, но не ностальгию по биосу. Биос всегда путался под ногами, дос ещё можно было терпеть ради файловой системы и некоторых других плюшек, но всё что было полезного в биосе, было, во-первых, ущербно в плане функциональности, во-вторых, тормозно. А это значит, что в любом случае приходилось дополнять прерывания биоса общением с железом напрямую, а это значит, что биос начинал мешать. Например, чтобы выводить графику через VGA, тебе надо было подружиться со всеми этими VGA регистрами и научиться ими пользоваться, но когда ты достиг этого уровня, то зачем тебе после этого биос?

     
     
  • 3.23, Ю.Т. (?), 13:15, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Например, чтобы выводить графику через VGA, тебе надо было подружиться со всеми этими VGA регистрами и научиться ими пользоваться, но когда ты достиг этого уровня, то зачем тебе после этого биос?

    Например, включать расширенные видеорежимы.

     
     
  • 4.43, Ordu (ok), 00:14, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >> Например, чтобы выводить графику через VGA, тебе надо было подружиться со всеми этими VGA регистрами и научиться ими пользоваться, но когда ты достиг этого уровня, то зачем тебе после этого биос?
    > Например, включать расширенные видеорежимы.

    Да и вообще видеорежимы включать. Что делается, как правило, два раза за время работы программы -- в начале и в конце.

     
  • 3.26, Сергей (??), 14:10, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Насколько я помню, через десятое прерывание устанавливался видеорежим и номер отображаемой страницы. Вывод графики - прямая запись в видеопамять... По крайней мерии делал так, если нечего не запамятствовал...
    Да и тринадцатое прерывание использовалось активно, для работы с дискетами.
     
     
  • 4.32, Ноним (?), 16:24, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >Вывод графики - прямая запись в видеопамять

    Не-а, там есть возня с latch регистрами

     
  • 4.45, Ordu (ok), 00:20, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Насколько я помню, через десятое прерывание устанавливался видеорежим и номер отображаемой
    > страницы. Вывод графики - прямая запись в видеопамять... По крайней мерии
    > делал так, если нечего не запамятствовал...

    Не, там всё гораздо интереснее. Я очень рекомендую поковыряться, может зайдёт. Мне так точно заходит, разбираться со всяким древним железом. Видеопамять позволят быстро копировать спрайты из одного места видеопамяти в другой -- это тоже делается чтением/записью в видеопамять, но предварительно надо подёргать регистры видеокарты. Всякие интересности типа плавной прокрутки экрана, что в скроллерах используется постоянно -- это опять же делается регистрами видеокарты. Палитровая анимация -- на каждый кадр менять палитру через биос, убьёшся, а вот через регистры это делается.

    > Да и тринадцатое прерывание использовалось активно, для работы с дискетами.

    Не очень активно. С дискетами чаще работали всё же через DOS, который предоставлял интерфейс файловой системы. С дискетами напрямую работать имело смысл либо ради защиты от копирования, либо ради каких-нибудь заморочных форматов, но это опять же лучше было делать через работу с портами ввода/вывода.

     
  • 3.39, Аноним (38), 21:37, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    UEFI с одной стороны хороший, ибо есть драйвера, а с другой, для того чтобы мало-мальски в нём разобраться прижётся прочитать немаленькую книжку beyond bios.
     
     
  • 4.52, Аноним (52), 05:15, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот как раз ничего хорошего в мутных блободрайверах, в черт знает какой фирмвари, которая делает хз что и которую никто никогда не чинит сроду. Неведома блобофигня на пути данных - это заявка на залет. Особенно когда господа из интела Management Engine наворачивая, деятельно намекая what they are up to.
     
     
  • 5.57, Аноним (38), 22:26, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    не ставьте мутные блободрайверы, ставьте опенсорсные.
     
  • 3.53, Аноним (52), 05:22, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И хотя это правда, поскольку фиксили господа из wintel, лекарство получилось хуж... большой текст свёрнут, показать
     
  • 2.28, IRASoldier_registered (ok), 15:25, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >Был биос да биос, простой

    А до того был калькулятор, арифмометр, счёты и прочие абаки и веревочки с узелками. Кому они мешали? Придумали компьютеры, мол, считают быстрее и прочие аргументы в стиле "вилы по воде". (#сарказм)

     
  • 2.30, Ант о Ним (?), 15:34, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Был биос да биос

    Не совсем простой, в BIOS нормальное кол-во проприетарного.

    Цель - сделать невозможным сохранение видео из ютубчика, без оплаты по безналу.

    Средство: блокировать юзерские возможности устанавливать другие программы.

    Препятствие: весь этот свободный софт позволяет вставлять своё, делать альтернативы. С открытым кодом, но с запрещениями менять, можно обойти препятствие на пути бизнеса.

     
  • 2.33, Аноним84701 (ok), 17:33, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    С кучей вендоро-расширений http www ctyme com intr int-10 htm code InstallC... большой текст свёрнут, показать
     
  • 2.34, Ананимус (?), 17:59, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > простой как семейные трусы

    Ахахахаха. Нет, не был. UEFI не то чтобы лучше, но BIOS был жутким уродцем с пятью ногами.

     
     
  • 3.40, Аноним (38), 21:39, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    у SPI 4 ноги
     
     
  • 4.44, Аноним (-), 00:17, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Гм... В таком случае у вас один глаз и еще кое-чего из ненужного отсутствует. Потому что у spi, у той, которая нынче самая распространенная soic8, ног внезапно 8. Бывают еще 16, но in the wild встречаются очень редко. До них были plcc32 о 32 ногах, а до них - dip28, тот еще таракан. У некоторых извращенцев (у штеуда, например) также встречались tsop32 и tsop48. Были еще всякие уродцы в исчезающе малом количестве, но их в приличном обществе лучше не упоминать. Такие дела.
     
  • 4.54, Аноним (52), 05:24, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >  у SPI 4 ноги

    Таки минимум 5, иначе он от голода сдохнет :)

     

  • 1.13, Аноним (13), 12:20, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > пытались блокировать данный метод, но блокировка не работала из-за ошибки в коде

    Но они всё равно выкатили это в продакшон.

     
  • 1.25, Smilek (?), 13:41, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    "Давайте запилим chroot_jail."
    - Ну как, есть защита?
    - Не!
    "Давайте запилим Selinux."
    - Ну как, есть защита?
    - Не!
    "Давайте запилим Lockdown"
    - Ну как, есть защита?
    - Не!
    "Давайте запилим...."
     
     
  • 2.35, ffirefox (?), 18:11, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пора уже напоминать анекдот №13 (Про солонку... Если кто не помнит нумерацию)
     
     
  • 3.41, Аноним (41), 21:57, 03/02/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Про штатного хакера и мышьяк? Не в тему. Или ты про тупость авторов?
     

  • 1.37, Аноним (38), 21:30, 03/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >запрещается переход в спящий режим

    Включил секюрбут - не можешь отправить ноут в S3? Или имеется в виду всё же гибернация?

     
     
  • 2.55, Аноним (52), 05:25, 04/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Имеется в виду RAM -> HDD, где ее могут малость пропатчить до разморозки. И кстати если кто шифрует диски и проч - имейте это в виду :)
     

  • 1.58, Michael Shigorin (ok), 12:47, 13/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Lochdown...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру