Previous Entry Share Next Entry
photo25

0-day in GRUB2

Браво, браво!

Оригинал взят у malaya_zemlya в 0-day in GRUB2
Если кто не видел - в популярном загрузчике Grub2 обнаружена уязвимость, позволяющая обходить защиту паролем, и дающая полный доступ к шеллу.

Эксплоит: вместо введения пароля нажать на Backspace ровно 28 раз, а потом Enter

Нет, это не секретный бекдор и не шутка девелоперов. Тут произошло нечто потрясающее. Постараюсь передать вкратце (если кому интересны все детали, то смотрите линк).

Если вместо ввода пароля нажимать на Backspace, то из-за пропущенной проверки программа заезжает за пределы буфера и начинает затирать нулями память с отрицательным смещением. Бывает.
В результате затирается стек, включая адрес возврата из текущей функции. Ок.
Соответственно, процессор прыгает на адрес 0, при чем в регистре esi остается текущая длина пароля, то есть -28.
По адресу 0, как водится, расположена таблица IVT, где лежат адреса обработчиков системных прерываний, но процессор ее сейчас интерпретирует не как адреса, в как исполняемый код. Оказывается, что в такой интерпретации IVT содержит функцию копирования блока памяти, где адрес, куда копировать, берется из регистра edi (он у нас установлен тоже в 0), а адрес откуда - из того самого регистра esi.
Получается, что функция начинает править собственный код и копировать данные из адреса -28 прямо поверх самой себя. Причем в цикле.
На первый раз портятся несколько инструкций в начале, но не критично.
На второй раз добавляются какие-то инструкции, меняющие содержимое стека,
А дальше... дальше появляется инструкция retw. Она берет со стека число и прыгает по обозначенному им адресу. А на стеке в этот момент лежит адрес встроенного шелла.

Занавес.



  • 1
sab123 December 16th, 2015
Ну, удивительно, что у них вообще есть пароль. В массе своей в линуксах вроде до сих пор приходи кто хочешь, редактируй аргументы ядра, получай шелл.

Edited at 2015-12-16 10:10 pm (UTC)

nicka_startcev December 17th, 2015
так ведь при наличии физического доступа к консоли почти всегда можно поиметь физ.доступ к винчестеру. с лайфсиди какого-нибудь, например.

так что пароль на биос плюс пломба на корпусе покрывают практически всю ЦА пароля на грабе.

kodt_rsdn December 16th, 2015
В грубе есть пароль? Окак.

dmytrish December 17th, 2015
Поддерживаю, в паролях на grub смысла никакого. Пароль на BIOS наше все.

anonim_legion December 17th, 2015
Си такой си.

denisioru December 17th, 2015
Надежность и открытость опенсурс в очередной раз показала свою эффективность!

blackyblack December 17th, 2015
Чё-то меня груб ни про какой юзернейм никогда не спрашивал. Хотя, в принципе, логично как-то его защищать от модификации.

thedeemon December 17th, 2015
Epic!

sharpc December 17th, 2015
Наглый, откровенный бэкдор. Автор не потрудился даже следы замести.

  • 1
?

Log in

No account? Create an account