Кейс #1 «Ой, да мы сами знаем, что у нас всё плохо!»
Объект: модуль удаленного управления (IPMI), установленный на критичных серверах — более 500 шт.
Уязвимость: уровень критичности (CVSS Score) — 7.8
CVE-2013−4786 — уязвимость в протоколе IPMI, позволяющая злоумышленнику получить доступ к хэшам паролей пользователей, что приведет к несанкционированному доступу и потенциальному захвату аккаунта атакующим.
Описание кейса: о самой уязвимости заказчик знал, однако по ряду причин, описанных ниже, дальше «принятия рисков» дело не пошло.
Сложность самого кейса в том, что патчи есть далеко не для всех материнских плат, использующих данный модуль, да и обновлять прошивки на таком большом количестве серверов крайне ресурсоёмко.
Были и альтернативные способы смягчения – списки доступа (ACL) на сетевом оборудовании (очень сложно так как админы сильно распределены и пользуются IPMI откуда придётся) и отключить IPMI, тут, думаю, комментарии излишни (на всякий случай: 500 распределённых серверов регулярно управлять «ногами» ради безопасности никто не будет)
Тут обычно и заканчивается история, однако с нашей стороны был произведён дополнительный анализ уязвимости и стало ясно, что хеш пароля учётной записи возвращается сервером только в случае запроса с существующим на сервере логином, поэтому было принято решение:
1. Изменить идентификаторы учётных записей на сложно подбираемые
Безусловно, это не панацея. И если, не торопясь, чтобы не «светиться», перебирать логины, то рано или поздно его можно будет подобрать. Но скорее всего это займёт достаточно много времени, чтобы успеть реализовать дополнительные меры.
2. Изменить пароль, чтобы хеш пришлось дольше брутить
Ситуация схожая с П.1 – брутить SHA1 хеш 16-ти символьного пароля придётся бесконечно долго.
Как результат, опасная уязвимость, о которой было известно, и которая могла быть легко проэксплуатирована даже Script kiddie, была закрыта минимальными ресурсами.