ADG Оставить заявку
Блог Информационная безопасность 5 мин чтения

Badlock и Let's Encrypt GA в один день: обновляем Samba и Windows одновременно

12 апреля 2016 вышли патчи Badlock (CVE-2016-2118) для Samba и Windows. В тот же день - GA Let's Encrypt. Рассказываем, как справляться с двойным патч-днём без паники.

Контекст момента

Badlock (CVE-2016-2118) опубликован 12 апреля 2016 - уязвимость в Samba и Windows SMB/MSRPC, позволяющая перехватывать и подделывать RPC-трафик к Active Directory и файловым серверам

12 апреля будет два события одновременно. Первое - Let's Encrypt переходит в General Availability: мы к этому готовились с марта и это хорошая новость. Второе - выходят патчи Badlock: CVE-2016-2118 для Samba и CVE-2016-0128 для Windows, анонсированные ещё в конце марта с заготовленным сайтом badlock.org. Это новость похуже.

Двойной патч-день - не катастрофа, но требует порядка. Если просто броситься делать всё сразу, к вечеру окажется, что Samba обновлена, а Windows-серверы стоят нетронутые, или наоборот, а Let's Encrypt вообще не при делах.

Что такое Badlock

Механика: атакующий на пути между клиентом и сервером может перехватить SMB- или MSRPC-сессию и провести атаку типа man-in-the-middle против протокола DCE/RPC. Это означает возможность читать или подделывать трафик к Active Directory - в частности, SAM database и LSA. Авторизация нужна, но через NTLM - а NTLM-сессии можно понизить до уязвимого варианта через relay-атаку.

Эксплуатация нетривиальна: нужно быть в сети, нужна возможность перехватывать трафик, нужно уметь работать с DCE/RPC. Но уязвимость затрагивает все версии Samba до 4.4.2 и Windows от Vista до Windows 10 и Server 2012 R2 - это весь парк.

Именно поэтому исследователи выбрали такой необычный способ анонса: сначала создали badlock.org, назначили дату патча, а потом опубликовали детали. Coordinated disclosure в явном виде. Мы через это проходили в марте с DROWN - тогда тоже была заранее объявленная дата раскрытия, и схема работает: у вендоров и сервисных компаний есть время подготовиться до того, как у всех появится PoC.

Приоритизация: что первое

Когда две угрозы накладываются, первый вопрос - что опаснее и что быстрее. Let's Encrypt GA - это не угроза, это возможность. Badlock - это патч с фиксированным окном: чем дольше ждёшь, тем дольше торчишь уязвимым. Ответ очевидный.

Порядок, который мы выбрали для 12 апреля:

  • Первое - Windows-серверы (CVE-2016-0128). Microsoft Patch Tuesday выйдет по расписанию, WSUS это подхватит. Но полагаться только на автообновление при критической CVE - плохая практика. Проверяем статус WSUS, при необходимости запускаем установку вручную, следим за перезагрузками.
  • Второе - Samba на Linux-серверах. Обновление пакета через штатный менеджер пакетов, рестарт smbd/nmbd. Для Samba 4 в роли AD DC - проверить версию до и после, убедиться, что служба поднялась.
  • Третье - Let's Encrypt. После того как с Badlock разобрались, спокойно раскатываем Ansible-роль на клиентские хосты.

Такой порядок не универсален, но для нашего парка он осмысленный: Windows-серверы перезагружаются при установке патчей, и это окно лучше планировать заранее с уведомлением клиентов.

Обновление Samba

Для большинства наших Linux-хостов Samba стоит из пакетов дистрибутива. Проверить версию:

samba --version
# или
smbd --version

Нужная версия - 4.4.2 или выше. Если дистрибутив не предоставляет нужную версию в штатном репозитории - смотреть на репозитории Samba Team для RHEL/CentOS или официальные backports для Debian.

Обновление и рестарт:

# CentOS/RHEL
yum update samba samba-client samba-common
systemctl restart smb nmb

# Debian/Ubuntu
apt-get update && apt-get install --only-upgrade samba
systemctl restart smbd nmbd

После рестарта - проверить, что служба поднялась и что версия действительно обновилась. Казалось бы очевидно, но несколько раз мы ловили ситуацию, когда yum отработал без ошибок, а установленная версия не изменилась - пакет нужной версии в зеркале может запаздывать.

Для хостов, где Samba собрана из исходников (а такое бывает), - пересборка из tarball 4.4.2 с того же набора опций. Это занимает время и требует аккуратности, таких хостов у нас немного, но они есть.

Windows: CVE-2016-0128

CVE-2016-0128 - это Windows-компонент того же Badlock. Патч идёт через обычный Patch Tuesday в составе MS16-047. На хостах под WSUS - проверить, что обновление пришло и установлено. Если WSUS по какой-то причине тормозит, можно установить напрямую через Windows Update или скачать MSU с Microsoft Update Catalog.

Уязвимость требует перезагрузки после установки патча. Для доменных контроллеров - координировать заранее, не перезагружать несколько DC одновременно, проверить репликацию после рестарта.

Проверка через PowerShell, что обновление установлено:

Get-HotFix -Id KB3149090

KB3149090 - номер обновления в составе MS16-047 для Vista/7/Server 2008/2008 R2. Для Windows 8.1 и Server 2012/2012 R2 нужный KB - 3149093, для Windows 10 - 3149094. Если вывод непустой - патч на месте.

Что делать с двойным патч-днём в целом

Наблюдение из сегодняшнего утра: когда одновременно несколько событий, важнее не скорость, а порядок и коммуникация. Клиенты, которым нужны перезагрузки DC, должны знать заранее - даже если патч выходит в патч-день и это ожидаемо. «Завтра ночью перезагружаем DC, репликация проверена» - это другой разговор, чем «почему вчера упал логин?».

Параллельно с Badlock-патчами Let's Encrypt GA остаётся в списке на день - просто чуть ниже. К вечеру всё должно быть закрыто.

Если вы не уверены, касается ли Badlock вашей инфраструктуры - проверьте, есть ли у вас Samba-серверы, файловые шары через SMB, или Windows-серверы с доменом. Если есть хоть что-то из этого - касается. Проверить и обсудить приоритеты всегда лучше до того, как патч-день превращается в аварийный вечер.

По итогам 12 апреля напишем отдельно: что прошло гладко, что нет.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.