Одна картинка — $7 миллионов. Вы — следующие
Осенью 2023 года нашли критическую уязвимость в библиотеке, которая отвечает за формат WebP — тот, что сегодня используют почти все сайты для ускорения загрузки.
Через специально сжатое изображение злоумышленник мог выполнить произвольный код на устройстве или сервере. Под угрозой — Chrome, Firefox, Safari, Edge, мессенджеры. Миллиарды устройств. Google подтвердил: уязвимость использовалась в реальных атаках.
$7 миллионов за одну ссылку 17 октября 2023 года криптофонд Fantom Foundation потерял больше $7 миллионов. Не за неделю — за несколько часов. Никто не взламывал инфраструктуру. Всё случилось на рабочем компьютере одного сотрудника. Ему пришло сообщение в Telegram. Человек представился основателем крупного блокчейн-фонда из Азии. Сказал, что хочет вложиться, предложил созвониться по видео. Обычная деловая история. Таких сообщений у любого в крипте — десятки. Ссылка на видеозвонок. Сотрудник перешёл. Вместо звонка — «Доступ ограничен». И тут же вторая ссылка: вот инструкция, запустите, и всё заработает. Сотрудник запустил. Скрипт не вызвал подозрений у антивируса. Тихо собрал все данные из Chrome — пароли, куки, кошельки MetaMask с приватными ключами. Через сутки деньги начали исчезать. Позже эксперты ООН приписали атаку северокорейской группировке Lazarus Group. А теперь главное. Скрипт не сработал бы, если бы в Chrome не было уязвимой версии libwebp. Та самая уязвимость в библиотеке для картинок стала последним звеном цепочки на $7 миллионов.
Почему это касается вас «Я не кликаю по подозрительным ссылкам» — не работает. Эта ссылка не выглядела подозрительной. Солидный человек, деловое предложение. И даже если вы осторожны — уязвимость остаётся. Она срабатывает, когда браузер просто отображает изображение. Достаточно, что картинка загрузилась. Уязвимость до сих пор работает на многих проектах. libwebp — встроенная зависимость. Она собирается внутрь других библиотек. Когда вы обновляете CMS, вы обновляете только то, что обновил разработчик CMS. Если он не пересобрал пакет — вы уязвимы. И не узнаете: в интерфейсе нигде не написано «внутри меня старая libwebp».
Что делать: три уровня
1. Инвентаризация. Нельзя защитить то, чего не знаешь. Составьте полный список зависимостей проекта. Результат — таблица: версия, известные уязвимости, дата обновления.
2. Мониторинг. Список — это фотография. Уязвимости появляются каждую неделю. Подпишитесь на базы CVE. Настройте оповещения: критическая уязвимость — узнаёте в тот же день, а не через полгода из новостей.
3. Управление обновлениями. Обновить и не сломать проект. Четыре привычки: Регулярно по графику: раз в месяц — некритичные, раз в неделю — проверка критичных. Внепланово по триггеру: вышла критическая — обновляете вне графика. Тестовый контур: сначала копия проекта, потом продакшен. Точка отката: снимок перед обновлением. Сломалось — вернулись за минуты. Финал Ваш проект — это не только ваш код. Это сотни чужих библиотек. Каждая может стать точкой входа. Безопасность — не разовое мероприятие, а постоянный процесс. Разница между «спокойно» и «катастрофа» — не удача, а системная работа. Всем добра. И да пребудет с вами сила обновлений :)
Полная версия — на Дзене. Ссылка в комментариях.
Проверяли свой сайт на такие уязвимости? Напишите в комментариях.