Открыли страницу с Pull Request'ом — передали хакеру доступ к своим секретам. Теперь это реальность GitHub
NewsMakerКак украсть код, не оставив следов и даже не запуская программ.
В июне 2025 года исследователь под псевдонимом rick обнаружил критическую уязвимость в GitHub Copilot, получившую имя CamoLeak и оценку CVSS 9.6. Она позволяла злоумышленнику незаметно извлекать конфиденциальную информацию и исходный код из закрытых репозиториев, а также перехватывать управление над ответами Copilot, внедряя вредоносные фрагменты кода или ссылки.
GitHub Copilot интегрирован в интерфейс GitHub и способен использовать контекст репозитория (включая коммиты, pull requests и файлы) для генерации более точных ответов. Однако именно эта "осведомлённость" о контексте и стала точкой входа для атаки. Специалист Legit Security обнаружил , что скрытые HTML-комментарии внутри описания запроса pull request — официально поддерживаемая GitHub функция — могут быть использованы для внедрения скрытых подсказок, которые читаются ассистентом Copilot, но не видны другим пользователям напрямую.
Более того, такие скрытые подсказки передаются в контекст Copilot даже другим пользователям, просматривающим pull requests, что расширяет охват атаки. Это дало возможность заставить Copilot, работающего с правами жертвы, эксфильтровать данные из её приватных репозиториев, кодируя их в base16 и внедряя в URL.
GitHub применяет строгую политику Content Security Policy (CSP), запрещающую загрузку изображений с внешних источников. Однако платформа использует собственный прокси-сервис Camo, через который проходят все изображения из внешних URL, встроенные в Markdown-файлы. GitHub автоматически переписывает такие ссылки в формат camo.githubusercontent.com, добавляя криптографическую подпись.
Исследователь воспользовался этим механизмом и создал словарь изображений — по одному Camo-URL на каждый символ ASCII. Эти изображения представляли собой прозрачные пиксели, возвращаемые с сервера атакующего. Затем он внедрял в подсказку ASCII-арт из этих картинок, позволяя Copilot «рисовать» данные исходного кода, сохраняя последовательность символов и передавая их через Camo, минуя CSP. Кэширование обходилось добавлением случайного параметра к URL, заставляя Copilot каждый раз запрашивать изображение заново.
В рамках демонстрации исследователь показал кражу описания уязвимости нулевого дня из приватного issue и автоматический поиск ключей AWS_KEY по коду жертвы. Все найденные строки передавались через Camo-ссылки. При этом жертве не нужно было запускать вредоносный код или переходить по ссылкам — достаточно было просто открыть страницу pull request'а.
GitHub устранил уязвимость 14 августа 2025 года, полностью отключив отображение изображений в Copilot как временную меру защиты.

В июне 2025 года исследователь под псевдонимом rick обнаружил критическую уязвимость в GitHub Copilot, получившую имя CamoLeak и оценку CVSS 9.6. Она позволяла злоумышленнику незаметно извлекать конфиденциальную информацию и исходный код из закрытых репозиториев, а также перехватывать управление над ответами Copilot, внедряя вредоносные фрагменты кода или ссылки.
GitHub Copilot интегрирован в интерфейс GitHub и способен использовать контекст репозитория (включая коммиты, pull requests и файлы) для генерации более точных ответов. Однако именно эта "осведомлённость" о контексте и стала точкой входа для атаки. Специалист Legit Security обнаружил , что скрытые HTML-комментарии внутри описания запроса pull request — официально поддерживаемая GitHub функция — могут быть использованы для внедрения скрытых подсказок, которые читаются ассистентом Copilot, но не видны другим пользователям напрямую.
Более того, такие скрытые подсказки передаются в контекст Copilot даже другим пользователям, просматривающим pull requests, что расширяет охват атаки. Это дало возможность заставить Copilot, работающего с правами жертвы, эксфильтровать данные из её приватных репозиториев, кодируя их в base16 и внедряя в URL.
GitHub применяет строгую политику Content Security Policy (CSP), запрещающую загрузку изображений с внешних источников. Однако платформа использует собственный прокси-сервис Camo, через который проходят все изображения из внешних URL, встроенные в Markdown-файлы. GitHub автоматически переписывает такие ссылки в формат camo.githubusercontent.com, добавляя криптографическую подпись.
Исследователь воспользовался этим механизмом и создал словарь изображений — по одному Camo-URL на каждый символ ASCII. Эти изображения представляли собой прозрачные пиксели, возвращаемые с сервера атакующего. Затем он внедрял в подсказку ASCII-арт из этих картинок, позволяя Copilot «рисовать» данные исходного кода, сохраняя последовательность символов и передавая их через Camo, минуя CSP. Кэширование обходилось добавлением случайного параметра к URL, заставляя Copilot каждый раз запрашивать изображение заново.
В рамках демонстрации исследователь показал кражу описания уязвимости нулевого дня из приватного issue и автоматический поиск ключей AWS_KEY по коду жертвы. Все найденные строки передавались через Camo-ссылки. При этом жертве не нужно было запускать вредоносный код или переходить по ссылкам — достаточно было просто открыть страницу pull request'а.
GitHub устранил уязвимость 14 августа 2025 года, полностью отключив отображение изображений в Copilot как временную меру защиты.