Уязвимость GitHub.dev позволяет злоумышленникам красть токены OAuth одним кликом
Каждый разработчик, который когда-либо нажимал клавишу точки на репозитории GitHub, запуская удобный браузерный редактор VS Code, известный как GitHub.dev, неосознанно принял сделку. В обмен на легковесную среду кодирования GitHub безмолвно передает токен OAuth в сессию, который предоставляет доступ на чтение и запись ко всем репозиториям, к которым пользователь может получить доступ, а не только к открытому репозиторию.
Исследователь безопасности Аммар Аскар теперь показал, как одна зловредная ссылка может полностью украсть этот токен. Эксплуатация, опубликованная 2 июня 2026 года, связывает несколько поведений VS Code, чтобы установить злонамеренное расширение внутри GitHub.dev, безмолвно эксфильтруя учетные данные OAuth и перечисляя каждый частный репозиторий, к которому жертва может получить доступ.
Microsoft признала недостаток и заявила, что работает над исправлением. Уязвимость не затрагивает VS Code Desktop, согласно Александру Диме, менеджеру по программной инженерии в компании.
Как работает атака
Эксплуатация начинается с созданной ссылки GitHub.dev, указывающей на репозиторий, содержащий злонамеренный файл Jupyter Notebook. Когда жертва нажимает, GitHub.com автоматически отправляет токен OAuth в сессию GitHub.dev. Этот токен не ограничен конкретным репозиторием, он имеет полные привилегии на всех репозиториях, к которым у пользователя есть доступ, включая частные.
💜 технологий ЕС Последние слухи из технологической сцены ЕС, история от нашего мудрого основателя Бориса и несколько сомнительных AI-артов. Это бесплатно, каждую неделю, в вашем почтовом ящике. Подпишитесь сейчас! Внутри блокнота скрытый HTML-фрагмент с обработчиком onerror выполняет контролируемый злоумышленником JavaScript в песочнице iframe веб-просмотра. VS Code использует эти веб-просмотры для отображения предварительных просмотров Markdown, редактирования блокнотов и отображения другого богатого контента. Критический недостаток заключается в том, что веб-просмотр может имитировать события клавиатуры, в частности события keydown, в основном окне редактора через API postMessage.
Полезная нагрузка ждет несколько секунд, пока VS Code не отобразит уведомление с предложением установить расширение, а затем отправляет имитируемое нажатие клавиш Ctrl+Shift+A. Эта комбинация соответствует команде «Принять основное действие уведомления», которая безмолвно одобряет установку контролируемого злоумышленником расширения. Затем расширение захватывает токен OAuth GitHub и вызывает API GitHub, чтобы перечислить каждый частный репозиторий, к которому жертва может получить доступ.
Обход проверки доверия
Обычно установка расширения VS Code вызывает запрос на доверие от издателя. Но эксплуатация полностью обходит это, используя функцию, называемую локальными расширениями рабочего пространства. Любое расширение, помещенное в папку .vscode/extensions репозитория, может быть установлено без отображения диалога доверия, потому что VS Code рассматривает его как часть рабочего пространства, а не как загрузку от третьей стороны.
Злоумышленник также может добавить пользовательские сочетания клавиш через package.json расширения, сопоставляя произвольные команды VS Code с сочетаниями клавиш. Поскольку эксплуатация может надежно вызывать эти сочетания клавиш из веб-просмотра, она может связать практически любую последовательность действий редактора. «Мы можем просто добавить сочетание клавиш для любой команды VS Code, которую мы хотим, например, установить расширение, пропуская проверку доверенного издателя», - написал Аскар.
Почему исследователь сразу же вышел в публичное пространство
Аскар не следовал обычному процессу координированного раскрытия. Он сказал The Register, что предыдущий опыт с Центром реагирования на безопасность Microsoft испортил его отношение к этому процессу. По словам Аскара, MSRC безмолвно исправила ошибку VS Code, о которой он сообщил, не указав его, и классифицировала ее как не имеющую влияния на безопасность.
Он дал контакту по безопасности GitHub примерно час уведомления перед публикацией полных деталей эксплуатации и кода доказательства концепции. Это решение отражает более широкую тенденцию недовольства исследователей обработкой уязвимостей Microsoft, которая недавно обострилась, когда компания угрожала другому исследователю безопасности, известному как Nightmare Eclipse, уголовным преследованием за публичное раскрытие нулевых дней Windows.
Раскрытие также произошло через несколько недель после отдельного инцидента, в котором хакеры проникли в сам GitHub через отравленное расширение VS Code, украдя примерно 3800 внутренних репозиториев. Эта атака, приписываемая группе, отслеживаемой как TeamPCP, продемонстрировала, что злонамеренные расширения не являются теоретическим риском, а активной угрозой в цепочке поставок разработчиков.
Объем риска
Уязвимость особенно опасна, потому что GitHub.dev не реализует токены CSRF, что означает, что любая ссылка в интернете может перенаправить пользователя в поток атаки. Одного клика достаточно. Никаких дополнительных запросов, никаких диалогов доверия, никаких видимых предупреждений.
Как только токен эксфильтруется, злоумышленник получает такой же доступ к репозиторию, как и жертва. Это включает в себя чтение собственных исходных кодов, внедрение бэкдоров в частные проекты или переход к другим системам, собирая секреты, хранящиеся в конфигурационных файлах. Для разработчиков, работающих над корпоративной или открытой инфраструктурой, радиус поражения может быть значительным.
Недавние исследования показали, что когда уязвимости в инструментах разработчиков исправляются тихо, без публичных уведомлений или назначений CVE, пользователи на старых версиях остаются подверженными риску, не зная об этом. Будет ли Microsoft назначать CVE для этого недостатка и публиковать официальное уведомление, станет испытанием уроков, извлеченных из этих предыдущих эпизодов.
Что разработчики должны делать сейчас
Пока Microsoft не выпустит исправление, разработчики должны проявлять осторожность при нажатии на ссылки GitHub.dev, особенно те, которые указывают на незнакомые репозитории. Просмотр папки .vscode/extensions любого репозитория перед его открытием в браузерном редакторе является разумной предосторожностью, как и аудит разрешений токена OAuth в настройках персонального токена доступа GitHub.
Организации, которые полагаются на GitHub для собственных кодов, могут рассмотреть возможность ограничения доступа к GitHub.dev, пока уязвимость не будет устранена. Собственная лаборатория безопасности GitHub, запущенная для помощи в выявлении уязвимостей в открытом исходном коде, пока не прокомментировала этот недостаток.
Глубокий вопрос имеет архитектурный характер. Если браузерный редактор по умолчанию получает неограниченный токен OAuth, и если расширения внутри рабочего пространства могут обходить проверки доверия, поверхность атаки заложена в дизайн. Исправление конкретной цепочки эксплуатации имеет значение, но растущие инвестиции в безопасность инструментов разработчиков, такие как недавний раунд финансирования в размере 18 миллионов долларов, привлеченный компанией Escape, занимающейся безопасностью API, предполагают, что отрасль признает, что проблема глубже, чем любой отдельный баг.
Другие статьи
Уязвимость GitHub.dev позволяет злоумышленникам красть токены OAuth одним кликом
Уязвимость VS Code в GitHub.dev позволяет злоумышленникам красть полные токены OAuth GitHub с помощью одной вредоносной ссылки, что приводит к раскрытию всех частных репозиториев.
