Возвращаемся к крупному прошлому инциденту — не чтобы воспроизвести атаку, а ради уроков, которые всё ещё применимы к вашей эксплуатации.
Что произошло: запись строки в лог стала путём атаки
Log4j занимался обыденной задачей записи логов и очень широко использовался в Java-приложениях. Уязвимость: библиотека интерпретировала определённый шаблон внутри логируемых строк как нечто, что нужно «разрешить, обратившись наружу», и в итоге выполняла указанный извне код.
Так злоумышленник, подсунувший сформированную строку в «куда-то, что логируется» (имя пользователя, заголовок), мог добраться до выполнения кода. То, что пассивное действие вроде логирования может стать путём атаки, стало большой неожиданностью.
Почему было трудно понять, затронуты ли вы
Большинство приложений никогда не устанавливали Log4j напрямую. Его подтягивал фреймворк или SDK. Это транзитивная зависимость: зависимость зависимости зависимости. Без вашей «ведомости материалов» вы не могли даже определить, затронуты ли вы.
Главной проблемой было незнание, используете ли вы это
Когда вы «не можете определить, используете ли вы это», вы не можете даже приоритизировать реагирование. Была ли у вас ведомость материалов (SBOM) во многом определяло, как быстро вы могли отреагировать.
Хронология
2021-12-09–10
Уязвимость становится широко известной; мир спешно проверяет «затронуты ли мы?».сразу после
Развёртываются экстренный патчинг и временные меры; всплеск попыток эксплуатации.впоследствии
Публикуется несколько последующих CVE (исправления к исправлению) — «исправлено один раз» не было концом.
Уроки, которые всё ещё применимы
Имейте SBOM (ведомость материалов)
Сделайте видимым, что ваше приложение использует внутри: npm ls, lock-файлы и инструменты SBOM показывают, что реально работает. Смотреть только на «что вы установили напрямую» недостаточно.
Машинно мониторьте зависимости
В момент выхода CVE автоматически узнавайте, применим ли он (Dependabot / osv-scanner), включая транзитивные зависимости. Ручные проверки всегда что-то упускают.
Делайте патчинг быстрым
Регулярно отрабатывайте цикл «обновить, проверить, выкатить», чтобы в экстренном случае сделать это быстро. См. построение мониторинга зависимостей.
Отслеживайте последующие CVE
После Log4Shell появились исправления к исправлению. Не останавливайтесь на «исправлено один раз»; отслеживайте продолжения.
Читать дальше
- Глоссарий: Что такое RCE · Что такое CVE
- Защита: Встройте мониторинг зависимостей в эксплуатацию
- Инцидент: Запущенный известный CVE привёл к утечке 147M
- Инцидент: Heartbleed — критическая уязвимость OpenSSL
- Фреймворк: Безопасность Spring Boot — CVE зависимостей, Actuator, авторизация
Источники и область проверки
Первоисточники ниже подтверждают рассмотренные настройки, область влияния или меры; ссылки проверены 23 октября 2026 года. Учитывайте версии и конфигурации. Приоритеты и выводы — рекомендации сайта, а не повторная проверка всей статьи или гарантия безопасности.