Паспорта, логи и невидимые картинки. Интерфейс OpenAI позволяет хакерам красть данные пользователей

leer en español

Паспорта, логи и невидимые картинки. Интерфейс OpenAI позволяет хакерам красть данные пользователей

OpenAI отказалась признать багом возможность эксфильтрации данных через Markdown-изображения.

image

Представьте, что ваш чат-бот правильно сработал и не показал пользователю опасный ответ. А утечка все равно случилась позже, в самом неожиданном месте, когда разработчик открыл логи. Специалисты Promptarmor описали именно такой сценарий и утверждают, что просмотрщик логов OpenAI для API может стать точкой вывода конфиденциальных данных наружу из-за того, как интерфейс рендерит Markdown-картинки.

Суть атаки завязана на косвенную prompt injection. Злоумышленник не ломает приложение напрямую, а «отравляет» один из источников данных, которыми пользуется AI-инструмент, например страницу из интернета или иной внешний контент. Затем пользователь задает ассистенту вопрос, и внедренная инструкция заставляет модель сформировать ответ с Markdown-изображением, где ссылка ведет на домен атакующего, а в параметры URL подставляются чувствительные данные из контекста. Примерно в духе attacker.com/img.png?data=..., где вместо многоточия может оказаться PII, документы или финансовые сведения.

Во многих приложениях такой ответ не дойдет до пользователя, потому что разработчики заранее включают защиту. Это может быть «судья»-модель, которая флагует подозрительный контент, или санитизация Markdown, или вообще вывод только в plain text, плюс политики безопасности контента. В описанном кейсе вредоносный ответ как раз был заблокирован и не отрисовался в интерфейсе KYC-сервиса, который автор использовал как пример. Проблема появляется на следующем шаге, когда заблокированный диалог попадает в очередь на разбор, а разработчик открывает его в панели OpenAI.

Логи для APIs «responses» и «conversations» в интерфейсе платформы отображаются с поддержкой Markdown. Если внутри ответа есть Markdown-картинка, браузер попытается загрузить ее автоматически. И вот тут происходит эксфильтрация: запрос уходит на сервер атакующего по той самой ссылке, где в URL уже «пришиты» секретные данные. Владелец домена видит в своих логах полный адрес запроса и получает то, что модель добавила в параметры, вплоть до паспортных данных или сведений о финансах.

Отдельно отмечается, что даже если приложение тщательно вычищает картинки из Markdown, пользователи часто помечают странные ответы как «плохие» через лайк-дизлайк или аналогичную обратную связь. Такие сообщения нередко отправляются на модерацию или разбор, то есть ровно туда, где разработчик открывает логи и потенциально запускает загрузку «картинки» уже в интерфейсе платформы. Автор приводит пример с Perplexity, где после санитизации может остаться пустой или «кривой» ответ, провоцирующий негативную оценку и последующую проверку.

Исследование также утверждает, что помимо логов проблема затрагивает еще несколько поверхностей, где в OpenAI есть предпросмотр и тестирование инструментов, включая Agent Builder, Assistant Builder, Chat Builder, а также окружения вроде ChatKit Playground и Starter ChatKit app. Все они, по описанию, могут рендерить небезопасные Markdown-изображения без достаточных ограничений, что делает риск шире, чем один экран с логами.

Авторы отчета отправляли отчет через BugCrowd и несколько раз уточняли детали по запросу, но в итоге заявление закрыли со статусом «Not applicable». В переписке фигурируют даты с 17 ноября 2025 года по 4 декабря 2025 года, когда кейс окончательно пометили как «неприменимый». Поэтому исследователи решили опубликовать материал публично, чтобы разработчики и компании, чьи приложения завязаны на OpenAI APIs, могли учитывать такой сценарий.

Практическая защита в такой модели, увы, упирается не только в фильтры на стороне приложения. Если описанное поведение логов подтверждается, риски снижают организационные меры. Например, ограничение доступа к логам, разбор флагнутых диалогов в изолированной среде без внешних запросов, а также привычка относиться к любым Markdown-рендерам как к потенциально опасным, особенно когда модель работала с внешними источниками данных.