MS08-067: внеплановый патч Microsoft и три ночных окна на 200+ машин
Microsoft выпускает экстренный патч MS08-067 для Server Service. Закрываем уязвимость на всём парке под управлением, заодно выясняем, где WSUS работает не так.
Microsoft выпускает внеплановый патч MS08-067 (23 октября 2008) - критическая уязвимость Server Service, позволяющая удалённое выполнение кода без аутентификации
Microsoft выпустила внеплановый бюллетень безопасности. Не в «патч-вторник», не по расписанию - отдельным экстренным релизом. Это само по себе сигнал: компания делает так крайне редко, последний раз подобное было с MS06-040 два года назад, и тогда тоже была дыра в Server Service.
MS08-067 - переполнение буфера в Windows Server Service (netapi32.dll). Удалённое выполнение кода без аутентификации, по сети, на порту 445. CVSSv2 10.0. На уязвимых системах без патча и без фаервола между сегментами - полный контроль машины одним пакетом. Затронуты Windows XP, 2000, 2003, Vista, 2008 - практически весь активный парк.
Мы узнали об этом в четверг вечером и начали готовиться к выходным.
Инвентаризация: кто под ударом
Первое, что сделали, - выгрузили из WSUS список всех машин под управлением и отфильтровали по операционной системе. Картина ожидаемо пёстрая: XP SP2, XP SP3, Server 2003 SP1 и SP2, несколько Server 2008, пара машин на Win2000 у одного из клиентов (отдельная боль, об этом ниже).
Сразу выяснилось несколько неприятных вещей:
- Несколько хостов не отчитывались в WSUS больше двух недель. То ли агент завис, то ли машину переименовали и она потеряла привязку к группе, то ли ещё что. Такие машины - слепое пятно: мы не знаем, установлены ли у них предыдущие патчи, и не можем доставить новый через WSUS.
- Один клиент держал Windows 2000 Server на двух машинах. Microsoft MS08-067 для Win2000 выпустила, но эти машины давно вышли из основного цикла поддержки и требуют ручной установки - автоматической раздачи через WSUS нет.
- Несколько хостов были в карантинной группе WSUS - туда попадают машины, которым патчи нужны только после явного одобрения. Часть оказалась там случайно, часть - по требованию клиента, который хочет тестировать каждый апдейт перед раскаткой.
По итогу инвентаризации разбили все машины на три волны. Критерий - скорость доставки патча и риск: сначала периметрные и сервера с портом 445, открытым внутри сети шире необходимого, потом рабочие станции в офисных сетях, последними - изолированные сегменты.
Три ночных окна
Пятница, суббота, воскресенье - с часа до пяти ночи. Схема стандартная для экстренных работ: ночное окно, минимум людей онлайн, максимум машин в нерабочем состоянии.
Первое окно - сервера первой волны. WSUS раздал патч без проблем туда, где агент работал исправно. На машинах с проблемным агентом - ставили вручную через psexec и прямой msu-файл с Microsoft Download Center. На каждую уходило минут пять: скопировать файл, запустить установщик, дождаться перезагрузки, проверить версию dll через wmic. Долго, но надёжно.
Второе окно - рабочие станции и машины второй волны. Здесь WSUS работал хорошо, основная работа - следить за ходом раскатки и ловить машины, которые ушли в WSUS за патчем, но по какой-то причине не перезагрузились. Несколько штук зависло на стадии «ожидает перезагрузки» - пришлось добивать вручную.
Третье окно - хвосты. Windows 2000, карантинные машины, плюс два хоста, которых не было онлайн в первые два окна (один - ноутбук сотрудника в командировке, второй - резервный сервер, который включали раз в неделю).
К утру понедельника MS08-067 был закрыт на всём парке. Не идеально ровно - один ноутбук так и не появился в сети за выходные, но это уже задача на вторник.
Что не так с WSUS
Хосты, которые «потерялись» в WSUS, - это не разовая случайность. Мы проверили историю и нашли, что примерно 8-12% машин в какой-то момент выпадают из регулярной отчётности, и это не замечается, пока не нужно срочно что-то раскатать.
Корневая причина в нескольких местах сразу. Во-первых, агент Windows Update иногда теряет связь с WSUS-сервером после смены IP или переименования машины - и тихо уходит в автономный режим или начинает ломиться напрямую к Microsoft Update. Во-вторых, в нескольких случаях агент завис с незакрытым предыдущим обновлением: служба Automatic Updates зависла в статусе running, но ничего не делала. В-третьих, у одного клиента WSUS-сервер не синхронизировался с Microsoft последние три недели - кончилось место на диске, синхронизация упала с ошибкой, никто не заметил.
По итогу договорились на несколько изменений: добавить мониторинг числа активных хостов в WSUS (резкое падение - алерт), настроить alert на ошибки синхронизации WSUS с Microsoft, и раз в две недели делать сверку - список хостов из WSUS против инвентаря Active Directory. Расхождение больше 5% - разбираемся.
Это немного раздражает: WSUS существует именно для того, чтобы централизованно управлять патчами, а у нас оказалось, что доверять его картине нельзя без дополнительной проверки. Но лучше узнать это сейчас, чем при следующей критической уязвимости.
Про порт 445
Отдельный вывод - состояние фаервольных правил между сегментами. MS08-067 эксплуатируется через SMB, порт 445. Внутри плоской офисной сети без сегментации одна заражённая машина может свободно атаковать всех остальных. Мы заглянули в правила нескольких клиентов и нашли пару мест, где 445-й открыт шире, чем нужно: между сетью разработки и продакшеном, между гостевым сегментом и основным офисом.
Это не исправили за выходные - изменение фаервольных правил требует согласования и понимания, что сломается. Но список на проработку составили.