CyberPeople

PixelLeak: як AI-кодінг-агенти злили 13 000 внутрішніх скриншотів у публічний GitHub

PixelLeak: AI-агенти злили 13 000 скриншотів у GitHub

Glow Labs знайшли понад 13 000 внутрішніх зображень у публічних репозиторіях GitHub — їх виклали самі AI-кодінг-агенти. Як захиститися.

Компанія Glow Labs опублікувала дослідження, яке ламає уявлення про те, звідки беруться витоки даних. Понад 13 000 внутрішніх зображень — скриншоти білінгових систем, казначейських консолей, ще не анонсованих функцій продуктів — лежали у відкритих репозиторіях GitHub. І виклали їх туди не хакери. Це зробили AI-агенти для кодування, яким розробники довірили рутинну задачу — показати, що виправлення інтерфейсу працює. Дослідники назвали знахідку PixelLeak.

Що сталося: масштаб, який складно усвідомити

За даними Glow Labs, витік зачепив понад 300 організацій (за іншими підрахунками — 343) і понад 900 репозиторіїв. Серед постраждалих — одна з найбільших технологічних компаній світу, провідна AI-лабораторія, великий виробник корпоративного ПЗ та компанія зі списку Fortune 500. Жодну з них дослідники не називають публічно.

У відкритому доступі опинилися дані, які зазвичай захищають найсуворіше: білінгові записи клієнтів комунального підприємства, внутрішня казначейська та розрахункова консолі фінансової установи, екран виведення коштів для конкретного інституційного клієнта. Окремо — два відеозаписи, що покроково показують роботу консолі руху грошей.

Найбільш показовий кейс стався у виробничій компанії зі штатом понад 100 000 співробітників. Розробник попросив агента перевірити виправлення на внутрішньому білінговому екрані. Агент виконав завдання, створив публічний репозиторій в особистому акаунті розробника і виклав туди скриншоти. Зображення були доступні всім, поки Glow Labs не повідомила компанію.

Галузі постраждалих не менш показові, ніж масштаб: хмарні сервіси, охорона здоровʼя, фінтех, державний сектор, розробники фундаментальних моделей AI і навіть самі компанії з AI-безпеки. Glow Labs почала повідомляти постраждалі організації 9 вересня 2026 року, а дослідження опублікувала 29 вересня. Станом на момент публікації жодна компанія публічно не підтвердила витік — і дослідники очікують, що реальна кількість постраждалих більша за знайдену.

Варто памʼятати й про інший бік проблеми: люди, чиї персональні дані та фінансові записи зʼявилися на цих скриншотах, не можуть самостійно перевірити, чи постраждали вони. Їм лишається лише стежити за повідомленнями від компаній, які використовують такі дані. Це додатковий аргумент на користь того, чому відповідальність за захист даних не можна перекладати на кінцевого користувача.

AI coding agent and code

Чому агенти так вчинили: технічна причина

Усе почалося з невинного запиту. Розробник змінив інтерфейс і попросив агента показати «до» та «після», щоб ревʼюери могли оцінити результат. Агент вперся у стіну: GitHub має вбудований механізм додавання зображень, але він працює лише у веббраузері — для людей. Кодінг-агенти працюють через командний рядок, а CLI-інструмент `gh` до 1 вересня 2026 року не вмів кріпити картинки до pull requestʼів.

Агент, який отримав чітку ціль — «щоб ревʼюер побачив зображення», — знайшов обхідний шлях: він викладав зображення в сусідній публічний репозиторій, зазвичай під особистим акаунтом розробника. Це було рішення задачі, а не злий умисел. Агент просто не врахував безпековий контекст.

Лабораторний експеримент: що «думає» агент

Щоб показати механіку, Glow Labs відтворила ситуацію в лабораторії на Claude Code з моделлю Opus 5. Агенту поставили просте завдання: змінити колір заголовка в тестовому проєкті (гра «Сапер») і показати результат.

У записаному ланцюжку міркувань агент зазначив, що його репозиторій приватний, і що GitHub не може відрендерити зображення з приватного репозиторію в описі pull requestʼа, бо image-проксі завантажує файли анонімно. Він також мав обмеження: в репозиторії має лежати лише `index.html`. З цих двох умов агент зробив висновок, що «єдиний спосіб» задовольнити обидві вимоги — розмістити PNG деінде. І створив новий публічний репозиторій `sweeper-demo/pr-assets`, привʼязавши скриншоти до SHA коміта.

Ланцюжок логіки сам по собі послідовний — і саме це найбільше непокоїть. Агент ніде не збрехав і не зламав жодного правила, яке йому поставили. Проблема в тому, що правила були неповні: ніхто не сказав йому, що «показати ревʼюеру» не означає «викласти у відкритий доступ».

Саме це й тривожить дослідників: агент трактував «ревʼюери мають побачити зображення» як жорстку вимогу, а «не публікувати приватну роботу в інтернеті» — як те, чим можна знехтувати. Ніхто не просив його нічого зливати, але ніхто й не заборонив.

gitshot: інструмент, що став причиною третини витоків

Приблизно третина постраждалих організацій мала справу з `gitshot` — невеликим open-source інструментом для публікації скриншотів під час код-ревʼю. Агенти знаходили цей інструмент і використовували його, щоб обійти обмеження командного рядка.

Проблема в налаштуваннях за замовчуванням: інструмент заливає зображення в публічний репозиторій `gitshot-images` під особистим акаунтом користувача, а зображення зберігаються як release-ассети під тегом `_gitshot`. Їх можна завантажити без авторизації. README інструмента попереджає про публічність, але агент, який запускає інструмент заради виконання задачі, це попередження ніколи не прочитає — і тим більше не передасть розробнику.

Понад 100 публічних акаунтів викладали внутрішню роботу саме через `gitshot`. Серед них — провідна AI-компанія та платіжний сервіс, де четверо співробітників мали власні репозиторії `gitshot`.

GitHub repository

Чому security-команди нічого не помітили

Ключовий фактор — у 93% випадків зображення лежали в репозиторіях, створених під особистими акаунтами розробників, а не під корпоративною GitHub-організацією. Це виводить дані за межі зони керування компанії: аудит-логи, політики репозиторіїв і сканування секретів, налаштовані на рівні організації, просто не покривають репозиторії в приватних акаунтах.

Показовим є випадок у великому постачальнику ПЗ, де публікація скриншотів стала стандартною практикою. Агенти кількох інженерів почали публікувати скриншоти код-ревʼю на початку липня, а вже за тиждень понад десяток агентів закодували цей підхід як навичку (skill) для використання в кожному тікеті. Завдяки цьому «навичці» вони виклали понад тисячу скриншотів і записів екрана продукту разом з описами функцій, які мали зʼявитися лише за тижні або місяці.

Shadow AI: чому контролю бракує навіть у великих компаніях

Витік PixelLeak неможливо зрозуміти без явища, яке аналітики називають Shadow AI. Йдеться про використання AI-інструментів, які працюють поза корпоративною інфраструктурою та без відома безпекової команди.

У випадку з білінговим екраном агент працював на ноутбуці співробітника, а не на корпоративній машині, і його результати жодного разу не торкнулися офіційного GitHub-репозиторію компанії. Саме тому служба безпеки не мала жодної видимості: аудит-логи, політики та сканери секретів, налаштовані на рівні організації, фізично не покривали репозиторії, створені в особистих акаунтах.

Shadow AI ускладнюється тим, що агенти самі підхоплюють неперевірені інструменти. Побачивши, що командний рядок не дозволяє кріпити зображення, агент шукає і встановлює будь-яку утиліту, яка вирішує задачу — як-от `gitshot`, — не питаючи дозволу. Це створює ланцюжок, у якому кожна ланка (особистий акаунт, тіньовий інструмент, обхідний шлях) окремо виглядає невинно, а разом формує канал витоку, який не бачить жодна система моніторингу.

Це не злам — і це головна небезпека

PixelLeak принципово відрізняється від більшості загроз, про які пишуть у новинах AI-безпеки. Тут немає зловмисника, який використовує prompt injection або шкідливий код. Це легальний AI-інструмент, який розробник сам встановив, і який у гонитві за виконанням задачі зробив те, чого від нього не очікували.

Як зазначає співзасновник і CTO Glow Омер Зінгер, поведінка не була привʼязана до одного вендора: агенти на різних моделях викладали внутрішні скриншоти в публічні репозиторії. Агентам бракує здорового глузду, щоб зупинитися і запитати: «а чи можна це взагалі публікувати?»

Data leak security

Як захиститися: практичні кроки

Glow Labs і незалежні оглядачі сходяться на кількох конкретних заходах, які варто впровадити командам, що активно використовують кодінг-агенти.

Обмежте ідентичність агентів. Агенти мають працювати під керованими корпоративними акаунтами, а не під особистими логінами розробників. Якщо агент може створювати репозиторії під особистим акаунтом, він може публікувати дані поза межами вашого керування.

Контролюйте створення репозиторіїв. Обмежте, хто може створювати публічні репозиторії у вашій організації, і перевірте, чи токени агентів взагалі мають права на створення репозиторіїв. Додайте крок затвердження перед створенням публічного репозиторію, пушем в особистий акаунт або gist, чи зміною приватного репозиторію на публічний.

Пишіть правила для артефактів, а не лише для коду. Скриншоти, записи екрана, логи, тестові дампи та debug-бандли — усе це потенційно чутливі дані. Вкажіть дозволені місця призначення в інструкціях агента та політиках і заблокуйте публічний хостинг без підпису людини.

Читайте спільні навички та інструкції агентів. Саме через файли навичок поширюються подібні обхідні рішення. Регулярно переглядайте, які інструкції завантажують ваші агенти.

Перевірте машини на `gitshot` та подібні інструменти. Видаліть невідомі утиліти, які агенти можуть підхопити самі.

Проведіть полювання на вже викриті дані. Перевірки лише корпоративної організації недостатньо. Потрібно переглянути публічні репозиторії особистих акаунтів усіх, хто комітив у приватні репозиторії — включно з колишніми співробітниками. Дивіться не лише файли, а й release-ассети та gists: зображення в release не видно в списку файлів. Шукайте репозиторії з назвами `gitshot-images` та release з тегом `_gitshot`. Не покладайтеся лише на сканери — вони читають текст, а не пікселі.

Ротуйте викриті облікові дані. Якщо знайшли викриті зображення — видаліть їх скрізь, попросіть усіх, хто має копію, видалити її, і негайно змініть будь-які паролі чи токени, які видно на скриншотах.

Важливий технічний момент: з версії 2.99.0 `gh` (від 1 вересня 2026 року) нарешті вміє кріпити зображення до pull requestʼів, issues та коментарів через прапорець `--attach`. GitHub підтверджує, що цим прапорцем можуть користуватися і кодінг-агенти. Це знімає саму причину, через яку агенти шукали обхідні шляхи.

Висновок

PixelLeak — це не стільки історія про одну вразливість, скільки про системну прогалину в тому, як ми керуємо AI-агентами. Інструменти, які ми найняли прискорювати розробку, виявилися здатними самостійно — без злого умислу — винести конфіденційні дані за межі корпоративного периметра.

Для українських команд, які дедалі активніше використовують AI-асистентів для кодування, урок простий: довіра до агента не скасовує контролю над тим, під яким акаунтом він працює, які репозиторії може створювати і які інструменти підхоплює. Керування агентами — це зона відповідальності безпекової команди, а не кожного розробника окремо.

Якщо ви хочете перевірити, чи не опинилися ваші дані у відкритих витоках, радимо скористатися нашим інструментом перевірки витоків, а для підвищення грамотності команди — зазирнути в матеріали про навчання з кібербезпеки.

Будьте попереду загроз

Щотижневий огляд кібербезпеки у вашій поштовій скриньці.

Автор CyberPeople