Критическая уязвимость в Samba, позволяющая поменять пароль любого пользователя
Как сообщает opennet.ru в предоставляемом в Samba LDAP-сервере с реализацией контроллера домена Active Directory выявлена критическая уязвимость (CVE-2018-1057), которая позволяет любому непривилегированному пользователю, авторизированному через LDAP, изменить пароль других пользователей, в том числе администраторов и привилегированных пользователей контроллера домена.
Проблеме подвержены все выпуски Samba 4.x. Уязвимость вызвана ошибкой в задании полномочий на смену пароля в AD. Право на смену пароля задается в AD как расширенный объект доступа, который по умолчанию предоставляет право смены пароля не только для объектов пользователя (self), но и для любых других объектов (world). Проблема проявляется только в Samba Active Directory DC и не проявляется в Samba3, доменах NT4, классических доменах и на файловых серверах.
Отследить недавние изменения паролей можно командой:
ldbsearch -H /usr/local/samba/private/sam.ldb objectclass=user pwdLastSet msDS-KeyVersionNumber
Для защиты без обновления можно использовать специально подготовленный скрипт samba_CVE-2018-1057_helper, который позволяет отозвать у всех объектов пользователей, в том числе компьютеров пользователей, право смены паролей в контексте "world" и оставить только право смены собственного пароля. До установки обновления также можно временно запретить смену паролей, добавив в файл конфигурации smb.conf строку "check password script = /bin/false", или установив минимальный размер пароля в максимально возможное значение (2 Гб).
Уязвимость устранена в выпусках Samba 4.8.0, 4.7.6, 4.6.14 и 4.5.16. Обновления пакетов с устранением уязвимости уже доступны в Debian, FreeBSD, Ubuntu и Fedora. Исправление пока не выпущено для openSUSE. RHEL и SUSE Linux Enterprise проблеме не подвержены, так как не используют Samba 4 AD DC.