Загруженное изображение выполняло чужой код: WordPress закрыл 10-летнюю дыру
WordPress 7.0.4: уязвимость, о которой стоит знать
Когда вы последний раз задумывались о безопасности изображений, загружаемых на ваш сайт? Скорее всего, давно. Но WordPress 7.0.4 заставляет пересмотреть это отношение.
Команда безопасности WordPress выпустила патч для уязвимости, которая скрывалась на виду почти десять лет. Проблема позволяла специально созданным PNG-файлам содержать код на PostScript, который выполнялся на сервере при загрузке через медиабиблиотеку.
Тихая опасность в медиабиблиотеке
Самое неприятное: это не было уязвимостью из исследовательской работы. Она годами существовала на работающих сайтах WordPress. Эксплойт работает просто — злоумышленники встраивают исполняемые инструкции внутрь файла изображения. А системы обычно доверяют картинкам без вопросов.
Схема атаки изящна в своей простоте. Создаётся PNG с кодом PostScript, загружается через стандартный загрузчик WordPress. При определённых конфигурациях сервера файл не просто сохраняется — он обрабатывается, и встроенные команды выполняются.
Права автора: почти открытые ворота
Теперь самое интересное для разработчиков и администраторов. Для эксплуатации уязвимости требовался уровень доступа автора. Если у вас мультиавторский сайт, вы доверяли контрибьюторам не только создание контента, но и потенциально — выполнение команд на сервере.
Это напоминание: права пользователей — это не просто контроль качества материалов. Это первая линия защиты от компрометации сервера.
Что делать прямо сейчас
Обновитесь до WordPress 7.0.4. Но одной версией дело не ограничивается. Пора провести ревизию архитектуры сайта:
- Проверьте роли пользователей. Кому реально нужна возможность загрузки файлов?
- Добавьте дополнительную валидацию файлов поверх стандартной WordPress
- Пересмотрите настройки PHP на сервере для загружаемых файлов
- Включите автоматические обновления для критических патчей
Главный вывод
Уязвимость демонстрирует класс проблем, которые часто остаются в тени: доверие к форматам файлов. Мы научились чистить текстовые поля и SQL-запросы, но изображения, документы и другие «пассивные» файлы по-прежнему получают индульгенцию доверия.
Для стартапов и разработчиков на WordPress урок очевиден: считайте каждый загруженный файл потенциально враждебным, пока не доказано обратное. Медиабиблиотека — это не хранилище контента, а зона возможной атаки.
То, что уязвимость существовала почти десять лет, подчёркивает важность регулярных обновлений. Возможно, прямо сейчас вы работаете на уязвимом коде и даже не подозреваете об этом — до поры до времени.
Обновляйтесь. Будьте бдительны. И, возможно, дважды подумайте, прежде чем загружать очередное изображение.