LINUX.ORG.RU

«Новая» (всего-то с 1997 года существующая) локальная уязвимость в ядре.


0

0

Недавно в во всех версиях ядра была обнаружена "новая" уязвимость, позволяющая выполнить произвольный код от другого пользователя(от рута в том числе). Идея заключается в следующем: локальный пользователь может запустить loadkeys, чтобы загрузить свою раскладку клавиатуры. Только вот изменения отразятся не только на его терминале, а на всех вообще, и останутся даже после того, как он выйдет из системы. В результате, можно сделать примерно такое:

loadkeys keycode 15 = F23 string F23 = "^V^C^V^Mecho hello world^V^M" ^D

После чего выйти, зайти под рутом, и попытаться нажать tab для дополнения комманды. Но этот пример безобидный, а можно добавить строчку в /etc/passwd, или сделать еще какую-нить гадость. А что самое смешное, так это то, что об этой узявимости известно уже с 1997 года. Вот кусочек man'а к loadkeys от 9 oct 1997: Note that anyone having read access to /dev/console can run loadkeys and thus change the keyboard layout, possi- bly making it unusable. Note that the keyboard translation table is common for all the virtual consoles, so any changes to the keyboard bindings affect all the virtual consoles simultaneously.

Note that because the changes affect all the virtual consoles, they also outlive your session. This means that even at the login prompt the key bindings may not be what the user expects.

>>> Подробности



Проверено: Shaman007 ()

это к физическем же только соединениям относится?

anonymous
()

На нормальных системах (debian stable/testing, RH7-9, FC3, FC4, MDK2000) никто кроме рута не имеет доступ на чтение из /dev/console.

anonymous
()

$ l /dev/console crw------- 1 root tty 5, 1 Окт 20 11:38 /dev/console

г-м-м... кажись, всё очевидно. Если в чьей-то системе иначе, то она и так уже дырявая.

anonymous
()

а еще этот самый пользователь с _физическим_ доступом к консоли (только так, ssh клиент не канает) может загрузить livecd зачрутиться в установленную систему как рут и ....

также может вытащить винт, выдернуть кабель, загрузиться в singlemode и т.д. и т.п. - додумайте остальное сами

Tester ★★★
()
Ответ на: комментарий от Tester

> также может вытащить винт, выдернуть кабель, загрузиться в singlemode и т.д. и т.п. - додумайте остальное сами

А как насчёт hardware HDD encryption?

birdie ★★★★★
()
Ответ на: комментарий от Shaman007

Эту тему обсуждают сейчас на debian-kernel@. Есть мысль, что такие "дырки" надо решать административным путем, поскольку эксплойт имеет смысл только на компьютере общего пользования, а на таких компах есть более простые способы подловить администратора.

darth
()
Ответ на: комментарий от Tester

>>с _физическим_ доступом к консоли
Как насчёт терминалоьных систем?

anonymous
()

хм... crw------- 1 root tty 5, 1 Окт 11 17:17 /dev/console А в новости чего-то про powerpc говорится...

UserUnknown ★★★★★
()
Ответ на: комментарий от hangy

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

birdie ★★★★★
()

Да-да. Для корректной установки вируса необходимо изменить права на /dev/console

Я тоже такую уязвимость знаю. Дайте мне права на /dev/hda1 (или где там у вас корень), я вас так уязвлю, что руту даже не надо будет что-то нажимать :)

Teak ★★★★★
()
Ответ на: комментарий от anonymous

хм.... :) у мя вот права правильный стаят, то есь: crw------- 1 root root 5, 1 ïËÔ 20 14:31 console а loadkeys серано меняет.. кеймапы на всех косолях... ,

kerzol
()
Ответ на: комментарий от anonymous

> г-м-м... кажись, всё очевидно. Если в чьей-то системе иначе, то она и так уже дырявая.

А crw--w--w- кошерно? :)

anonymous
()

уязвимость?

Для использования нужно  иметь _физический_ доступ... Какая, нафиг,
уязвимость?

Да и кого попало в консоль не пускают 

# из /etc/pam.d/login

auth requisite  pam_listfile.so onerr=fail item=user sense=allow file=/etc/security/local.users 

P.S.

"Fix" особо радует... Теперь в системе будет еще одна suid root 
хренота :(


Dselect ★★★
()

Это скорее ошибка не ядра, а в дистрах.

Я решил проблему следующим образом

ln -s /etc/rc.d/rc.keymap /etc/profile.d/rc.keymap.sh

Slackware 10.2

При входе юзера раскладка клавы восстанавливается

xnix ★★
()

нахер вообще разрешать юзерам менять раскладку клавиатуры в консоли?

anonymous
()

"Я кричал, вы что там, обалдели?"

А если на /etc/passwd права 666 стоят? Тоже уявимстью считать будем?

svyatogor ★★★★★
()
Ответ на: комментарий от svyatogor

> А как насчёт hardware HDD encryption?
>>А ты, например, вовсю этим пользуешься ? ;)
Я пользуюсь. Стоят шифраторы на IDE. Стоят недорого.

anonymous
()
Ответ на: комментарий от anonymous

Действительно. Админ настроил - что ещё нужно? Если действительно нужно - пусть обратятся к админу.

Eldhenn
()
Ответ на: уязвимость? от Dselect

> Для использования нужно иметь _физический_ доступ... Какая, нафиг, уязвимость?

Нормальная такая уязвимость. Никогда не администрили школьный дисплейный класс, где школьники только и делают, что ловят пароли учителей? Им даже рута ловить не обязательно.

darth
()
Ответ на: комментарий от darth

> Нормальная такая уязвимость.

Начнем с того, что "exploit" не работает нифига.

$ cat ./hackme.sh
#!/bin/sh

loadkeys <<EOF
keycode 15 = F23
string F23 = "^V^C^V^Mecho hello world^V^M"
EOF

$ ./hackme.sh
Keymap 0: Permission denied
failed to bind string '^V^C^V^Mecho hello world^V^M' to function F23

$ uname -rms
Linux 2.4.31 i686

Никто не говорит, что вот это:

Note that the keyboard translation table is common for all the virtual
consoles, so any changes to the keyboard bindings affect all the 
virtual consoles simultaneously

правильно, но это _не_ уязвимость.

> Никогда не администрили школьный дисплейный класс, где школьники
> только и делают, что ловят пароли учителей?

1) пароли ловятся кучей других, более простых способов.

Потому one-time passwords рулят.

2) а им что, кто-то разрешает логинится на сам x-терминал?

Dselect ★★★
()
Ответ на: комментарий от Dselect

> Начнем с того, что "exploit" не работает нифига.

Спорить не буду, я только список рассылки читал, сам не пробовал. До дома надо дойти, чтобы проверить.

> 2) а им что, кто-то разрешает логинится на сам x-терминал?

Рабочее место ученика в дисплейном классе - нормальный комп (с жестким диском), заходят с консоли и запускают иксы с командной строки, если нужно. А если не нужно, то так и работают в консоли.

darth
()
Ответ на: комментарий от anonymous

На FreeBSD по default следующая картина:


ansi@bsd007# cat /etc/fbtab
# $FreeBSD: src/etc/fbtab,v 1.3 1999/09/13 17:09:07 peter Exp $
#
#/dev/ttyv0      0600    /dev/console
#/dev/ttyv0      0600    /dev/pcaudio:/dev/pcaudioctl

Вобшем man fbtab

ansi ★★★★
()
Ответ на: комментарий от ansi

l# ll /dev/console
crw------- 1 root wheel 7, 23 20 окт 20:41 /dev/console
l# uname -srm
FreeBSD 7.0-CURRENT i386

anonymous
()
Ответ на: комментарий от Shaman007

$ ll /dev/console crw------- 1 root tty 5, 1 Oct 20 02:01 /dev/console $ uname -rs Linux 2.6.13-gentoo-r3

Эксплоит _прекрасно_ работает. loadkeys работает только на tty - локальные виртуальные консоли ALT-Fx, а не на pts!

anonymous
()
Ответ на: комментарий от anonymous

> Я пользуюсь. Стоят шифраторы на IDE. Стоят недорого.

а как они официально называюся (чтобы в гугле их цены поискать). И примерно почем стоят, и не тормозят ли ввод/вывод?

anonymous
()
Ответ на: комментарий от anonymous

Действительно, работает. Вывод: либо не надо пускать кого попало к серверу, либо самому не работать по tty. Вариант с loadkeys при загрузке пользователя не катит (может случиться так, что из-за смены символов рут вообще не сможет войти или смена произойдёт в середине сеанса рута, позвонить отошёл :) ).

Davidov ★★★★
()
Ответ на: комментарий от anonymous

не вмер Данило, та болячка задавила

> Эксплоит _прекрасно_ работает.

Ага, только запускать надо от root'а :)

Dselect ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.