Взлом OpenAI: переполнение кучи в libheif и брешь в SSO, открывшие путь к внутренним репозиториям

· 2 мин чтения
security llm ai-agents open-source exploitation
Взлом OpenAI: переполнение кучи в libheif и брешь в SSO, открывшие путь к внутренним репозиториям

25 июля 2026 года исследователи команды Hacktron — Харш Джайсвал, Мохан Педхапати и Рахул Мани — соединили две критические уязвимости и получили контроль над аккаунтами ChatGPT и Codex сотрудников OpenAI. Через подключённые к Codex сервисы открывался доступ к GitHub, Slack и почте, а значит, и к внутренним репозиториям компании. Чтобы доказать доступ, не читая ни строчки внутреннего кода, они отправили промпт в Codex одного из сотрудников — и тот открыл pull request #1186742 в монорепозитории openai/openai. От первичного обнаружения до этого момента прошло меньше 72 часов. OpenAI заплатила за находку 6500 долларов, а Discourse выпустила патч в течение трёх дней.

Цепочка эксплойта

Вся атака свелась к девяти звеньям:

Шаг Компонент Роль
1 libheif Декодер изображений — источник переполнения кучи
2 Debian Отсутствующий security-бэкпорт в пакете
3 ImageMagick Использует libheif для конвертации
4 Discourse Принимает загрузку изображений от пользователей
5 community.openai.com Форум OpenAI на Discourse
6 OpenAI SSO Ошибка в флоу идентификации
7 ChatGPT / Codex Захват аккаунтов
8 GitHub Подключённая к Codex интеграция
9 Внутренние репозитории Финальная цель

До июля 2026 года любой человек или сотрудник OpenAI, логинившийся на собственный форум компании через «Sign in with OpenAI», рисковал потерять контроль над своим аккаунтом ChatGPT и Codex.

Откуда взялась уязвимость: пропущенный бэкпорт в libheif

Сам Discourse — сложная цель, и исследователи давно смотрели в сторону его зависимостей. 23 июля они начали разбирать конвейер загрузки изображений и обнаружили необычный путь у файлов HEIC и HEIF. Обычные проверки изображений в Discourse выполняет библиотека FastImage, но HEIF она не поддерживает — поэтому такие файлы сразу уходили команде magick из ImageMagick и попадали в парсер libheif, напрямую доступный атакующему.

Дальше в дело пошёл ИИ. Исследователи запустили сессию с Claude Opus 4.8 внутри Docker-образа Discourse и попросили проверить установленный пакет libheif на предмет проблем безопасности. Модель нашла, что часть апстримных исправлений не была бэкпортирована в пакет: код уязвимого места изменили ещё годом ранее, но коммит не пометили как security fix и CVE на него не завели. Вероятно, именно поэтому Debian 12 и Debian 13 не получили своевременные бэкпорты. Docker-образ Discourse собран на Debian 12 и содержал уязвимую версию libheif 1.19.7; Debian 13 к тому моменту всё ещё поставляла версию 1.19.8. Своё security-обновление Debian выпустила только 8 августа 2026 года.

Результат — переполнение кучи (heap buffer overflow) с примитивами чтения и записи за границами буфера при декодировании HEIC-файлов.

Роль Claude: от Opus 4.8 к Opus 5

24 июля Opus 4.8 разработала рабочий эксплойт для ImageMagick и libheif с выключенным ASLR, но несколько параллельных сессий так и не смогли сделать его надёжным против дефолтной конфигурации Discourse с включённым ASLR.

Вечером того же дня Anthropic выпустила Claude Opus 5 — и ситуация изменилась. Новая сессия за три часа собрала рабочий ARM64-эксплойт на локальном Mac, а затем по запросу портировала его на x86-64 и конфигурацию аллокатора jemalloc, которую использует Discourse. К шести утра 25 июля был подтверждён локальный RCE через загрузку изображения.

Затем Claude поместили в автономный цикл /goal против собственного инстанса Discourse Cloud, проксированного через rce.ee/ctf-forum — так, чтобы цель выглядела как учебный стенд CTF: без этого модель отказывалась писать эксплойт для удалённого инстанса. К десяти утра агент получил RCE на Discourse Cloud и продемонстрировал его чтением /etc/hosts. Сгенерированный скрипт сработал и на инстансе OpenAI.

Как брешь в SSO превратила взлом форума во взлом OpenAI

Авторы подчёркивают: сама по себе уязвимость не специфична для Discourse. Форум был лишь способом доказательства — компрометация любого первого или стороннего сервиса, использующего OpenAI SSO, вела бы к тому же результату. Именно дефект в флоу идентификации превратил взлом форума в захват аккаунтов ChatGPT и Codex.

Исследователи перехватили аккаунт сотрудника, чей Codex был подключён к GitHub-организации OpenAI, и отправили промпт с просьбой открыть pull request во внутреннем монорепозитории — не получив доступа ни к одному файлу с кодом. После этого всё тестирование прекратили.

Раскрытие прошло быстро. Утром 25 июля отчёт ушёл в программу OpenAI на Bugcrowd; примерно через 14 часов OpenAI подтвердила исправление на своей стороне. Отчёт для Discourse ушёл через HackerOne в субботу, ответ пришёл в воскресенье, а к понедельнику был готов фикс вместе с песочницей для ImageMagick как эшелонированной защитой. Discourse опубликовала консультативное уведомление GHSA-vhm9-85gw-x335 с инструкциями по патчу и пересборке. В сентябре OpenAI выплатила 6500 долларов, отдельно уточнив: награда — за находку на стороне OpenAI, потому что тестирование hosted-инстанса community.openai.com в программу bug bounty явно не входило.

Экономика ИИ-взлома

Цифры впечатляют. Взлом Discourse и OpenAI занял у агента несколько дней, а у людей — несколько часов. Вся исследовательская кампания HEIF Heist, нацеленная на Slack, Meta, GitHub Enterprise, Ruby on Rails и фреймворки вроде Next.js, Astro и Gatsby, заняла два месяца, обошлась меньше чем в 3000 долларов токенов и велась тремя исследователями. Адаптация эксплойта под каждую новую компанию обычно занимала один-два дня.

Модели уверенно прогрессировали от версии к версии. Opus 4.8 застревала на ASLR; Opus 5 решила ту же задачу в течение часов после релиза. Следующий заметный скачок — от Opus 5 к GPT-5.6 Sol — произошёл, когда эксплойт пришлось писать вслепую: без знания о целевой системе, кроме самого факта уязвимости. Тестирование всегда начиналось с загрузки изображения, после чего модель превращала повреждение памяти в надёжную утечку данных или шелл, обычно не зная ни версии libheif, ни версии libc, ни окружения развёртывания.

Показательно и молчание жертв: кроме Shopify, ни одна компания не обнаружила активность — даже после тысяч отправленных изображений и многократных падений своих обработчиков картинок. Когда исполнение кода попадало в песочницу, модели помогали и с эскалацией привилегий, и с боковым перемещением, и с обходом защит. Это не было полностью автономным взломом — опытное человеческое руководство оставалось важным, но объём работы, доступный маленькой команде, вырос драматически.

Что это меняет

Долгие годы программное обеспечение жило в режиме «безопасности через сложность»: код и даже уязвимость могли быть публичными, но превращение бага в надёжный эксплойт требовало редкой экспертизы, времени и знания целевого окружения. Известные ошибки повреждения памяти было дорого эксплуатировать, а zero-days доставались самым высокоприоритетным целям.

Это никогда не было настоящей границей безопасности — но на практике защищало обычные компании. ИИ убирает эту защиту, превращая дефицитную экспертизу в вычисления: работа, требовавшая хорошо оснащённой команды и месяцев усилий, сжимается в дни. Авторы призывают привести модели угроз в соответствие с реальностью — учитывать современную экономику эксплуатации, а не устаревшие представления о том, кто способен проводить сложные атаки.

Как защититься

Проект HEIF Heist не привязан к одной версии: он охватывает целое семейство релизов libheif (1.19.x, 1.20.x, 1.22.x, 1.23.x). Уязвима любая развёртка без свежих апстримных security-патчей. Рекомендации авторов:

  1. Обновить апстрим. Установить последние security-версии libheif и libde265 из репозиториев дистрибутива или апстрим-релизов. На 14 сентября 2026 года актуальный релиз — v1.23.4; v1.23.2 уже заменена дальнейшими исправлениями. Пакеты дистрибутивов могут нести бэкпорты под старым номером версии — сверяйтесь с security-уведомлением пакета.
  2. Пересобрать self-hosted Discourse. Старые Docker-образы могут содержать уязвимый libheif, и обновления через веб-интерфейс может оказаться недостаточно:
cd /var/discourse
git pull
./launcher rebuild app
  1. Эшелонированная защита. Учитывая сложность формата ISO base media file format и темп обновлений декодеров, новые ошибки памяти почти неизбежны. Отключайте декодирование недоверенных HEIF/AVIF там, где оно не нужно, изолируйте конвейеры обработки изображений в укреплённых эфемерных песочницах, а security policy ImageMagick позволяет ограничить принимаемые форматы и потребление ресурсов.

Ссылки по теме: исследовательский проект HEIF Heist, консультативное уведомление Discourse GHSA-vhm9-85gw-x335, коммит с песочницей ImageMagick, апстримный коммит libheif, оставшийся без CVE, security-обновление Debian и релиз libheif v1.23.4.

Источник: https://www.hacktron.ai/blog/hacking-openai