Бюллетень безопасности FreeBSD-SA-16:36.telnetd (неофициальный перевод)

Первоисточник: https://www.freebsd.org/security/advisories/FreeBSD-SA-16:36.telnetd.asc
 
Тема: Возможность внедрения login аргумента в telnetd
Категория: ядро
Модуль: telnetd
Анонсировано: 06.12.2016
Благодарности: Brooks Davis (при поддержке: DARPA, AFRL)
Влияет на: Все поддерживаемые версии FreeBSD.
Исправлено в: 2016-12-06 18:52:02 UTC (stable/11, 11.0-STABLE)
2016-12-06 18:49:38 UTC (releng/11.0, 11.0-RELEASE-p4)
2016-12-06 18:52:18 UTC (stable/10, 10.3-STABLE)
2016-12-06 18:49:48 UTC (releng/10.3, 10.3-RELEASE-p13)
2016-12-06 18:49:54 UTC (releng/10.2, 10.2-RELEASE-p26)
2016-12-06 18:49:59 UTC (releng/10.1, 10.1-RELEASE-p43)
2016-12-06 18:52:33 UTC (stable/9, 9.3-STABLE)
2016-12-06 18:50:06 UTC (releng/9.3, 9.3-RELEASE-p51)
CVE ID: CVE-2016-1888
 
Для получения общей информации о рекомендациях по безопасности FreeBSD, посетите https://security.FreeBSD.org/.
 
I. Общая информация
 
telnet демон FreeBSD, telnetd, реализует на стороне сервера протокол виртуального терминала TELNET. Он был отключен по умолчанию в FreeBSD с августа 2001 года. Из-за отсутствия криптографической защиты в протоколе TELNET, настоятельно рекомендуется использовать вместо него протокол SSH. telnet демон FreeBSD может быть включен с помощью файла конфигурации /etc/inetd.conf и inetd демона.
 
После того, как пользователь подключается, telnetd выполняет программу login или аналогичную, указанную в аргументе -p loginprog. Для того чтобы сделать это, он создает массив аргументов для командной строки, которые передаются execv.
 
II. Описание проблемы
 
Неожиданная последовательность ошибок выделения памяти, в сочетании с недостаточным уровнем проверки на ошибки, может привести к созданию и выполнению ложной последовательности аргументов.
 
III. Влияние
 
Злоумышленник, который управляет последовательностью ошибок выделения памяти, может запустить login без аутентификации.
 
В настоящее время не известно ни одного практического способа управления ошибками выделения памяти.
 
IV. Временное решение
 
Временных решений нет, однако системы, не запускающие telnet демона, не подвержены этой уязвимости.
 
Обратите внимание, что telnet демон обычно запускается с помощью inetd, следовательно, если соединение в данный момент не активно, он не будет отображаться в списке процессов; чтобы определить, включен ли он, запустите:

$ ps ax | grep telnetd | grep -v grep
$ grep telnetd /etc/inetd.conf | grep -vE '^#'

 

V. Решение
 
Выполните одно из следующих действий:
 
1) Обновите вашу систему до поддерживаемой FreeBSD stable или release / releng версии, выпущенной датой после устранения уязвимости.
 
2) Обновите систему бинарными патчами:
 
Системы с RELEASE версией FreeBSD на i386 и amd64 платформах могут быть обновлены утилитой freebsd-update.

# freebsd-update fetch
# freebsd-update install

 

3) Обновите систему при помощи исходного кода патча:
 
Ниже указанные патчи будут добавлены в релизные ветки FreeBSD.
 
а) Загрузите соответствующий патч, используя ниже приведенные ссылки и проверьте PGP подпись, используя вашу утилиту PGP.

# fetch https://security.FreeBSD.org/patches/SA-16:36/telnetd.patch
# fetch https://security.FreeBSD.org/patches/SA-16:36/telnetd.patch.asc
# gpg --verify telnetd.patch.asc

 

b) Примените патч, используя следующие команды под пользователем root:

# cd /usr/src
# patch < /path/to/patch

 

с) Перекомпилируйте операционную систему, используя buildworld и installworld, как описанно в https://www.FreeBSD.org/handbook/makeworld.html.
 
Убейте все запущенные telnetd процессы или перезагрузите систему.
 
VI. Сведения об исправлении
 
Список ниже содержит номера ревизий каждой из уязвимых ветвей FreeBSD.

Ветвь                                                             Ревизия
- -------------------------------------------------------------------------
stable/9/                                                         r309643
releng/9.3/                                                       r309637
stable/10/                                                        r309642
releng/10.1/                                                      r309636
releng/10.2/                                                      r309635
releng/10.3/                                                      r309634
stable/11/                                                        r309641
releng/11.0/                                                      r309633
- -------------------------------------------------------------------------

 

Чтобы узнать, какие файлы были изменены в конкретной ревизии, запустите на машине с установленным Subversion указанную ниже команду, заменив NNNNNN на номер ревизии.

# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base

 

Или посетите следующий URL, заменив NNNNNN на номер ревизии:

URL: https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN

 

VII. Рекомендации
 
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-1888
 

Новости

Оставить комментарий