Перейти к содержанию

Безопасность ИИ

Битая картинка могла вскрыть Slack, Meta и GitHub

5 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: OpenAI: модели и продукты →
Изображение: heif-heist.com

Команда Hacktron загрузила подготовленную HEIC-картинку на форум community.openai.com и через неё дошла до внутренних репозиториев OpenAI. Это один эпизод класса атак HEIF Heist, который исследователи описали 18 сентября на сайте Heif-heist. Если ваш бэкенд принимает загрузки .heic, .heif или .avif, обновите libheif и libde265: уязвимы сразу несколько семейств версий libheif, и под угрозой любой деплой без последних апстрим-патчей.

На сайте исследования советуют libheif v1.23.2 или новее вместе со свежим libde265, через security-канал дистрибутива или сборкой из исходников. В блоге Hacktron уточняют: на 14 сентября последний релиз libheif с исправлениями безопасности - v1.23.4, а v1.23.2 уже перекрыта новыми фиксами. Пакеты дистрибутивов могут нести бэкпорты под старым номером версии, поэтому сверяться стоит с security advisory самого пакета. Где разбор присланных HEIF/AVIF не нужен, его советуют отключить, а обработку картинок вынести в изолированную одноразовую песочницу; в политике безопасности ImageMagick можно ограничить принимаемые форматы и ресурсы.

Отдельно про два продукта. Тем, кто сам хостит Discourse, Hacktron советует пересобрать инсталляцию: старые Docker-образы могут содержать уязвимый libheif, а обновления через веб-интерфейс может не хватить. Нужно выполнить git pull и затем ./launcher rebuild app из /var/discourse; клиентов облачного Discourse уже пропатчили. Self-hosted Next.js тоже стоит держать на последнем релизе и следить за его security advisory.

Кроме OpenAI, в списке Hacktron аутентифицированный RCE в GitHub Enterprise (CVE-2026-19118), неаутентифицированный RCE в Next.js через оптимизацию AVIF, выполнение кода в Slack с утечкой файлов, RCE в основных продуктах Meta через загрузку картинки, RCE в Discourse и кража токенов пользователей и ключей доступа AWS у сервиса, чьё название скрыто. В блоге упоминаются также Zoom, Ruby on Rails, Astro и Gatsby.

Где прячется libheif

Уязвимый код лежит ниже уровня приложения, в нативных парсерах libheif и libde265 на C/C++. В продакшн они обычно попадают не напрямую, а внутри обёрток вроде ImageMagick, libvips или Sharp, в пакетах дистрибутива и в готовых базовых образах контейнеров. Поэтому, по словам исследователей, дыра не привязана ни к языку, ни к фреймворку: потенциально задет любой бэкенд, который обрабатывает картинки от пользователей.

Готового эксплойта из коробки нет. Сначала атакующий шлёт на эндпоинт загрузки подготовленные .avif или .heic и по реакции определяет семейство версий libheif, например 1.19.x, 1.20.x, 1.22.x или 1.23.x. Затем под эту версию собирается payload на уже известную или ещё не закрытую уязвимость, который портит память и даёт утечку данных или выполнение кода. Даже когда до RCE дойти не удаётся, можно читать куче: отсюда и «heist» в названии, ведь утекают чужие данные пользователей и переменные окружения.

Как выглядят подобные ошибки в libheif, видно по CVE-2026-32740 из базы уязвимостей NIST: в версиях 1.21.2 и более ранних файл с сеткой 1×4 из плиток нечётной высоты заставлял декодер записать 64 байта полностью подконтрольных атакующему данных за край буфера в куче. Исправили её в 1.22.0. Масштаб таких багов, напоминают в Hacktron, уже показывали ImageTragick, ForcedEntry и дыра в libwebp.

Как вскрыли OpenAI

Путь от первой находки до доступа к репозиториям OpenAI занял меньше 72 часов. 23 июля команда во главе с Харшем Джайсвалом (Harsh Jaiswal) начала разбирать загрузку картинок в Discourse, движке форума OpenAI. HEIC и HEIF шли там необычным путём: FastImage эти форматы не поддерживал и отдавал их команде magick из ImageMagick, а та передавала файл прямо в libheif.

Сессия Opus 4.8 нашла, что в пакет libheif не бэкпортировали часть исправлений безопасности, и это давало переполнение буфера в куче при декодировании HEIC. Образ Discourse стоял на Debian 12 с libheif 1.19.7, а в Debian 13 тогда лежала тоже уязвимая 1.19.8. Нужный код в апстриме поменяли годом раньше, но коммит не пометили как исправление безопасности и CVE не присвоили; в Hacktron считают, что это может быть одной из причин, по которым Debian вовремя не получил бэкпорт. Обновление для Debian 13 вышло 8 августа.

Одного форума для захвата аккаунтов было мало. Вторая уязвимость сидела в SSO-инфраструктуре OpenAI: форум пускает через «Sign in with OpenAI», и компрометация форума открывала аккаунты ChatGPT и Codex его активных участников без какого-либо действия с их стороны. По словам Hacktron, дело не в Discourse: взлом любого своего или стороннего сервиса за этим входом дал бы тот же доступ. Чтобы доказать доступ, не читая внутренний код, исследователи захватили аккаунт сотрудника, чей Codex был подключён к GitHub-организации OpenAI, и попросили Codex открыть пулл-реквест в монорепозитории openai/openai, после чего остановились.

OpenAI получила отчёт через BugCrowd и выплатила 6 500 долларов. Discourse получила отчёт в субботу, ответила в воскресенье, к понедельнику выпустила исправление и сразу начала помещать ImageMagick в песочницу.

Два месяца и меньше трёх тысяч долларов

Весь проект HEIF Heist, по подсчёту Hacktron, занял два месяца, обошёлся меньше чем в 3 000 долларов на токены и делался силами всего трёх исследователей. Адаптация эксплойта под очередную компанию обычно занимала день-два.

Эксплойт под Discourse с Opus 4.8 удалось собрать 24 июля только при отключённом ASLR, защите, которая раскладывает память по случайным адресам; с включённым ASLR несколько сессий ничего не дали. Вечером того же дня Anthropic выпустила Claude Opus 5. Новая сессия за три часа сделала рабочий эксплойт для локального Mac на ARM64, затем портировала его под x86-64 и jemalloc из конфигурации Discourse, и к 6 утра 25 июля выполнение кода через загрузку картинки подтвердилось локально. Писать эксплойт против удалённых инстансов Opus отказывался, поэтому собственный облачный инстанс Discourse замаскировали под CTF-задачу. К 10 утра агент в автономном цикле /goal получил там RCE и в доказательство прочитал /etc/hosts; тем же скриптом команда взяла инстанс OpenAI.

Следующий скачок, по словам команды, дала GPT-5.6 Sol, когда эксплойт приходилось собирать почти вслепую, не зная ни точной версии libheif, ни версии libc, ни окружения цели. С агентным подходом на GPT-5.6 Sol путь от первой пробы до удалённого RCE сократился примерно до 1-3 дней. Если код запускался в песочнице, модели помогали и с повышением привилегий, и с обходом защит.

Полностью автономным взлом не был: без опытных людей не обходилось, а часть RCE сработала только после тысяч загруженных картинок. При этом исследователям известна лишь одна компания, которая заметила активность, - Shopify, хотя картинок отправляли тысячи, а обработчики изображений раз за разом падали.

OpenAI

Юристы и рекрутеры OpenAI сами перешли на Codex

Codex захватил не только инженеров OpenAI Презентации и таблицы в OpenAI собирают через Codex не только инженеры: за четыре месяца неинженерные команды дошли до 90% использования, и приказа сверху на это не было.

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.