Equifax: когда патч лежал три месяца, а потом утекло 143 миллиона записей
Взлом Equifax через CVE-2017-5638 в Apache Struts: уязвимость закрыта в марте, взлом - в мае. Разбираем хронологию и сверяем свой patch-management с реальностью.
7 сентября 2017 Equifax раскрыл компрометацию 143 млн записей через уязвимость Apache Struts CVE-2017-5638, эксплуатировавшуюся с мая 2017
Вчера Equifax объявил, что с мая по июль у них незаметно утекали данные 143 миллионов человек. Вектор атаки - CVE-2017-5638 в Apache Struts 2, уязвимость в обработке Content-Type заголовка, позволяющая выполнить произвольный код без какой-либо аутентификации. Патч для неё вышел 7 марта 2017. Взлом начался в мае. Два с лишним месяца прошло между «патч доступен» и «мы наконец-то его поставили» - и за эти месяцы кто-то терпеливо скачивал базы.
Масштаб неприятный даже по меркам крупных утечек. Имена, номера социального страхования, даты рождения, адреса, в части случаев - номера водительских удостоверений и банковских карт. Equifax - одно из трёх крупнейших кредитных бюро США, то есть данные людей там не по их собственному желанию, а по факту кредитной истории. Выбора «не храниться» у людей не было.
Мы следили за CVE-2017-5638 с марта - уязвимость получила CVSS 10.0 и активно эксплуатировалась уже через несколько дней после публикации PoC. В нашей практике аудита это стандартный маркер: если уязвимость имеет публичный эксплойт и CVSS выше 9, счёт идёт на часы, не на недели.
Хронология, которая всё объясняет. 7 марта Apache Foundation выпустил Struts 2.3.32 и 2.5.10.1 с закрытой дырой. Параллельно пошла волна сканирований - боты искали уязвимые инсталляции по всему интернету. По данным исследователей, в первые дни атаки фиксировались тысячами в сутки. В мае - по официальной версии Equifax - злоумышленники нашли их уязвимый сервер. Компания обнаружила активность только 29 июля, когда проводила анализ трафика по другому поводу. Два с лишним месяца незамеченного дампа.
Самое показательное здесь не сам факт взлома, а разрыв между патчем и его применением. В крупных компаниях с легаси-инфраструктурой patch management часто выглядит так: Security присылает бюллетень, команда эксплуатации ставит задачу в очередь, задача висит до ближайшего maintenance window, maintenance window раз в квартал. Это не злой умысел - это инерция больших систем. Но когда у уязвимости CVSS 10 и публичный эксплойт, эта инерция буквально стоит компании существования.
Что у нас по этому поводу. Мы прошлись по своему pipeline-у патчинга и зафиксировали реальные цифры:
- Критические CVE (CVSS >= 9, публичный эксплойт) - целевое окно 72 часа от публикации патча. На практике по последним шести месяцам - укладывались в 48-96 часов в зависимости от сложности тестирования.
- Высокие CVE (CVSS 7-8.9) - 7 рабочих дней, обычно следующий плановый цикл.
- Средние и ниже - плановый цикл, раз в месяц.
Критические выбиваются из обычного ритма принудительно - maintenance window не ждём, откатной план готовим на ходу, уведомляем заказчика за 2 часа вместо обычных суток. Это создаёт трение, но альтернатива понятна из новостей.
Второй момент, который Equifax поднял в голос: обнаружение. Они не заметили утечку полтора месяца. Это не редкость - без нормального мониторинга исходящего трафика и аномалий в обращениях к БД заметить медленный дамп крайне сложно. CVE-2017-5638 позволяет выполнять команды через веб-запросы, которые при беглом взгляде выглядят как обычные ошибки парсинга. Если в логах нет анализа аномального объёма ответов или нетипичных обращений к внутренним ресурсам - пропустить реально.
Что проверяем у себя и у заказчиков после этого кейса:
- Инвентаризация Java-фреймворков - Struts, Spring, Wicket и прочие. Они часто живут в неочевидных местах: внутренние порталы, биллинг, legacy-интеграции. Тот сервер Equifax, через который утекло, был вообще не продакшн-facing, а внутренним порталом для сотрудников.
- Мониторинг аномального исходящего трафика - объём ответов, нетипичные destination IP, запросы к внутренним сегментам из DMZ.
- Тестирование патч-процесса на критических CVE - не процедура на бумаге, а реальное время от публикации до деплоя с логом.
После истории с MS17-010 в марте у нас уже был разговор про приоритизацию патчей. Equifax добавляет к нему следующий вопрос: а у вас вообще есть список всего, что крутится под Java и Apache в инфраструктуре? Не теоретический, а актуальный? Обычно ответ «ну примерно да» - и это уже повод для аудита.
143 миллиона записей - это не абстрактная цифра из пресс-релиза. Это примерно половина взрослого населения США, данные которых теперь гуляют неизвестно где. Patch management - скучная операционная работа, которая оказывается в первом абзаце крупнейших утечек года именно тогда, когда на неё махнули рукой.
- SMB Signing и Protected Users: закрываем вектор NTLM relay после волны атак · 14 августа 2017
- MS17-010: патчим EternalBlue до того, как это стало обязательным · 16 марта 2017