Новости · Безопасность файлов

WordPress 7.0.4 закрыл уязвимость: поддельный PNG запускал код через Imagick

12 августа 2026 года вышел WordPress 7.0.4 — экстренный патч для CVE-2026-65640 (CVSS 8.8). Любой пользователь с правами Автора мог загрузить файл с расширением .png, внутри которого скрывался PostScript-код: WordPress принимал его как картинку, а Imagick передавал Ghostscript — и тот исполнял произвольные команды на сервере.

18 августа 2026 Редакция Loadfile Чтение 5 мин
Голографический PNG-файл с вредоносным кодом внутри на тёмно-синем фоне — CVE-2026-65640 в WordPress

Коротко: WordPress 7.0.4 (12 августа 2026) закрыл CVE-2026-65640 с оценкой CVSS 8.8. Уязвимость в цепочке WordPress → Imagick → Ghostscript позволяла авторам сайтов выполнить произвольный код, спрятав PostScript в PNG-файл. Исправление — обновить WordPress. Эксплойта в открытом доступе нет, но уязвимость активно обсуждается после публикации PoC-подробностей командой pwn.ai.

Содержание
  1. Что произошло
  2. Механизм атаки: PNG как упаковка для PostScript
  3. Цепочка WordPress → Imagick → Ghostscript
  4. Кого касается уязвимость
  5. Что делать прямо сейчас
  6. Источники

Что произошло

12 августа 2026 года команда WordPress выпустила версию 7.0.4 — внеплановое обновление безопасности, закрывающее единственную, но критически опасную уязвимость. CVE-2026-65640 (GHSA-8vr3-7mxf-gx8w) получила оценку CVSS 8.8 по шкале из 10 — это высокий уровень серьёзности.

Уязвимость была обнаружена и ответственно раскрыта исследователями компании pwn.ai. Согласно их данным, ошибка связана не с логикой бизнес-правил, а с тем, как WordPress определяет тип загружаемого файла: движок опирается на расширение имени файла, тогда как Imagick при обработке читает реальное содержимое — и это расхождение создаёт зазор для атаки.

Патч вышел через несколько дней после того, как исследователи передали технические подробности команде WordPress. Бэкпорты подготовлены для всех актуальных веток — начиная с 4.7 и до 7.0.3 включительно. Эксплойт в открытом доступе не публиковался, однако технический разбор механизма атаки доступен в блоге pwn.ai.

Механизм атаки: PNG как упаковка для PostScript

Суть уязвимости — в несовпадении двух моделей определения типа файла: по расширению (как делает WordPress при проверке загрузки) и по содержимому (как делает Imagick при обработке).

Атака выглядит так:

  1. Злоумышленник готовит файл с именем foto.png. Внутри — не PNG-растр с заголовком 89 50 4E 47, а PostScript-скрипт.
  2. WordPress проверяет загрузку по расширению .png и пропускает файл — он выглядит как допустимое изображение.
  3. При дальнейшей обработке через редактор изображений WordPress вызывает Imagick. Imagick читает реальное содержимое файла и распознаёт его как PostScript или EPS.
  4. Для обработки PostScript Imagick вызывает Ghostscript в качестве делегата. Ghostscript исполняет содержимое файла как программу — и в этот момент произвольный код оказывается запущен с привилегиями веб-сервера.
!
Это не новый класс атак

Подмена типа файла через несовпадение расширения и содержимого — давно известный вектор. Именно поэтому определение формата по сигнатуре байтов надёжнее проверки расширения: PNG всегда начинается с 89 50 4E 47 0D 0A 1A 0A, а PostScript — с %! или %PS-Adobe. WordPress до версии 7.0.4 не проверял сигнатуру перед передачей файла в Imagick.

Альтернативный путь атаки — через XML-RPC: метод wp.uploadFile позволял загрузить вредоносный файл, минуя некоторые проверки интерфейса. Ещё один маршрут — обложки аудиофайлов (cover-art): WordPress извлекает изображение из MP3 через функцию wp_upload_bits(), и загруженный PostScript мог пройти по этому пути тоже.

Цепочка WordPress → Imagick → Ghostscript

Imagick — PHP-расширение для работы с изображениями, обёртка над библиотекой ImageMagick. WordPress использует его как один из бэкендов для редактирования загружаемых картинок: изменение размера, обрезка, генерация превью. Imagick поддерживает десятки форматов, в том числе PostScript и PDF.

Ghostscript — интерпретатор PostScript и PDF с открытым кодом. Imagick вызывает его как внешнюю программу («делегат») для форматов, которые не может обработать самостоятельно. Это стандартная практика в экосистеме ImageMagick: делегаты прописаны в файле конфигурации delegates.xml.

Цепочка выглядит так: WordPress upload → WP_Image_Editor_Imagick::load() → Imagick::readImage() → Ghostscript delegate → shell execution. На уязвимых установках переход от «загрузки картинки» к выполнению кода происходил автоматически при обработке изображения сервером.

Исправление в коммите 7daaa50 переписывает функцию load(): теперь перед созданием объекта Imagick проверяется реальное содержимое файла на наличие PostScript/EPS-сигнатур и признаков замаскированного PDF. Файлы, не прошедшие проверку, отклоняются до передачи в Imagick.

Кого касается уязвимость

Уязвимость затрагивает установки WordPress, на которых одновременно выполнены два условия:

  • Установлено PHP-расширение Imagick (не GD — альтернативный бэкенд GD не использует Ghostscript и не подвержен этой уязвимости).
  • Установлен Ghostscript — интерпретатор PostScript/PDF, настроенный как делегат ImageMagick.

Оба компонента нередко присутствуют в стандартной конфигурации хостинга, особенно на VPS и выделенных серверах. Многие провайдеры managed WordPress hosting устанавливают Imagick по умолчанию.

Атака требует аутентификации: воспользоваться уязвимостью может только пользователь с правами Автора (capability upload_files) или выше — Редактор, Администратор. Анонимная эксплуатация невозможна. Тем не менее сайты с открытой регистрацией или несколькими авторами находятся в группе повышенного риска.

Затронуты версии WordPress 7.0.0 — 7.0.3. Бэкпорты доступны для веток 4.7–6.9 (например, 5.8.15, 6.8.8, 6.9.7 и другие). Проверить свою версию можно в разделе «Консоль → Обновления» в панели администратора. Как узнать версию WordPress и других CMS по метаданным страницы — также разбирается в нашем разборе опасных вложений.

Что делать прямо сейчас

Единственное надёжное исправление — обновить WordPress до версии 7.0.4 или до соответствующего бэкпорта своей ветки.

  • Панель администратора: «Консоль → Обновления» → кнопка «Обновить сейчас».
  • WP-CLI: wp core update
  • Managed hosting: большинство провайдеров уже применили патч или сделают это в ближайшие дни — уточните в поддержке.
Автообновления защищают автоматически

Если на сайте включены фоновые автообновления безопасности (включены по умолчанию в большинстве установок WordPress), патч уже применён без вашего участия. Версию можно проверить в «Консоль → Обновления».

Временные меры (если обновиться немедленно нельзя): отключить Ghostscript на сервере (gs убирается из delegates.xml ImageMagick), либо переключить WordPress на бэкенд GD вместо Imagick — через фильтр wp_image_editors. Оба варианта снижают функциональность и пригодны только как временное решение.

Признаков активной эксплуатации в дикой природе (in-the-wild) по состоянию на 18 августа 2026 года не зафиксировано. О подозрительных загрузках файлов на сайте можно судить по логам сервера и журналам аудита плагина типа WP Activity Log — обращайте внимание на POST-запросы к wp-admin/upload.php и XML-RPC от незнакомых IP.

Принцип «тип файла по содержимому, а не по расширению» универсален. В нашем инструменте определения формата можно проверить любой подозрительный файл по его байтовой сигнатуре — это полезно и при аудите загрузок на собственном сервере.

Источники

Читайте также