В Samba устранена одна из самых опасных уязвимостей за всю историю проекта

11/04/2012 12:09

Представлена внеплановая порция обновлений Samba - 3.6.4, 3.5.14 и 3.4.16, в которых устранена критическая уязвимость (CVE-2012-1182), позволяющая удалённому злоумышленнику выполнить свой код с правами пользователя root. Для успешной эксплуатации уязвимости не требуется прохождение стадии аутентификации, атака может быть осуществлена анонимным не аутентифицированным злоумышленником при наличии доступа к сетевому порту Samba. В силу простоты эксплуатации, широты охвата уязвимых версий и возможности проведения атаки без аутентификации, выявленная проблема является одной из наиболее серьёзных уязвимостей за всю историю проекта. Проблеме подвержены все версии Samba с 3.0.x по 3.6.3 включительно. Всем пользователям Samba рекомендуется в экстренном порядке провести обновление до представленных корректирующих выпусков. Для уже не поддерживаемых веток Samba подготовлены патчи. Пакеты с устранением уязвимости пока недоступны, проследить выход обновлений для популярных дистрибутивов можно на данных страницах: FreeBSD, Ubuntu, Gentoo, Slackware, Mandriva, openSUSE, CentOS, Scientific Linux, Fedora, RHEL и Debian. Кроме патча обходного пути решения проблемы не найдено, можно только закрыть доступ к порту Samba. В качестве крайней меры можно ограничить доступ к порту для доверительных хостов при помощи опции "hosts allow" в smb.conf, но это не поможет от атаки с поддельного IP-адреса. Уязвимость была выявлена участниками программы Zero Day Initiative, т.е. не исключено наличие 0-day эксплоита в диком виде. Примечательно, что на исправление ошибки потребовался почти месяц, о проблеме изначально было сообщено ещё 15 марта. Проблема вызвана ошибкой в генераторе кода для механизма RPC (Remote Procedure Call), которая приводит к формированию небезопасного кода, участвующего в осуществлении передаваемых по сети RPC-вызовов. В результате ошибки проверка переменной через которую передаётся размер массива и проверка переменной с запрошенной под этот массив памятью производятся независимо друг от друга. Значение обеих переменных устанавливаются на стороне клиента и полностью контролируются им. Таким образом создаётся возможность передачи массива заведомо большего размера, чем может вместить выделенный под него буфер, что приведёт к наложению "хвоста" массива на другие структуры данных.
Источник