Zero-day в VS Code: один клик крадёт все репозитории GitHub

04.06.2026 3
Zero-day в VS Code: один клик крадёт все репозитории GitHub

Уязвимость нулевого дня в Visual Studio Code позволяет злоумышленникам похитить OAuth-токен GitHub разработчика одним кликом - получая полный доступ ко всем приватным репозиториям этого аккаунта. Исследователь безопасности Амар Аскар опубликовал эксплойт 3 июня 2026 года и выложил proof-of-concept код в открытый доступ, не обращаясь в официальный процесс безопасности Microsoft. На момент публикации патча не существует, и CVE не присвоен.

Как работает эксплойт в один клик

Атака начинается, когда жертва кликает на специально созданную ссылку, ведущую на github.dev - браузерную версию VS Code, размещённую Microsoft в облаке. Как только страница загружается, вредоносный JavaScript, встроенный в ссылку, выполняется внутри VS Code Webview - изолированного iframe-подобного компонента, который VS Code использует для отображения интерфейса расширений и веб-контента.

Изнутри этого Webview вредоносный скрипт эксплуатирует уязвимость в API Window.postMessage() VS Code для симуляции нажатий клавиш в основном редакторе. Эти симулированные нажатия используются для скрытой установки вредоносного расширения VS Code. Расширение затем извлекает OAuth-токен GitHub, который github.dev получил при входе в систему, и отправляет его злоумышленнику. С этим токеном атакующий может обращаться к API GitHub и получать доступ ко всем репозиториям, доступным аккаунту жертвы - не только к тому, который просматривался.

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

Почему модель безопасности Webview в VS Code даёт сбой

VS Code изолирует содержимое Webview, чтобы предотвратить прямой доступ ненадёжных расширений к среде основного редактора. В теории изоляция означает, что вредоносный Webview может общаться с внешним миром только через тщательно определённые каналы передачи сообщений.

На практике мост Window.postMessage(), пересылающий события клавиатуры между Webview и основным редактором, не проверяет должным образом источник или намерение этих сообщений. Эксплойт Аскара подаёт в этот мост поток поддельных событий клавиш, образующих команды терминала для установки расширения - и VS Code их послушно исполняет.

Уязвимость находится на пересечении двух проектных решений: удобства пересылки событий клавиатуры и доверия, которое VS Code оказывает сообщениям, поступающим через этот канал. Полное отключение Webviews сломало бы большую часть экосистемы расширений, поэтому простого обходного пути через настройки нет.

Какие данные на самом деле под угрозой

Похищенный OAuth-токен GitHub гораздо ценнее пароля от одного репозитория. OAuth-токены предоставляют доступ на уровне аккаунта: атакующий наследует все разрешения аккаунта жертвы - чтение и клонирование приватного кода, отправку вредоносных коммитов, изменение конфигураций CI/CD-пайплайнов, доступ к секретам в настройках репозитория и перечисление каждого приватного проекта, к которому имеет отношение разработчик, включая проекты его работодателя или клиентов.

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

Почему исследователь обошёл процесс bug bounty Microsoft

Аскар выбрал полное публичное раскрытие именно из-за предыдущего инцидента с Центром реагирования на угрозы безопасности Microsoft (MSRC). По словам исследователя, он ранее сообщал об отдельной уязвимости VS Code через надлежащие каналы. Microsoft тихо исправила баг в последующем обновлении, не указав Аскара в авторах, не опубликовав уведомление безопасности и не признав влияние уязвимости на защищённость. Он расценил такой исход как нарушение негласного договора между исследователями и вендорами.

На этот раз Аскар предупредил команду безопасности GitHub ровно за час до публикации. В MSRC он не обращался вовсе. Вместе с разбором он опубликовал рабочий proof-of-concept код, обеспечив немедленную доступность технических деталей как для защитников, так и для более широкого сообщества безопасности.

Microsoft ответила заявлением о том, что компания "по-прежнему стремится быстро оценивать сообщённые проблемы" и предоставлять "смягчающие меры, рекомендации и защиту как можно скорее". Компания не признала конкретную жалобу на предыдущее исправление без огласки и не предоставила сроков устранения текущей уязвимости.

Как разработчики могут снизить свою подверженность риску

До выхода патча наиболее эффективный немедленный шаг - очистить куки и локальные данные сайта для github.dev в браузере. Это принудит к новому запросу аутентификации при следующем визите, что активирует визуальное предупреждение, если попытка эксплойта уже выполняется. Любой неожиданный запрос на установку расширения VS Code - особенно тот, который вы не инициировали сами - должен восприниматься как тревожный сигнал и немедленно отменяться.

В более широком контексте этот инцидент напоминает: среды разработки хранят крайне чувствительные учётные данные, а поверхность атаки шире, чем думает большинство разработчиков. Клики по ссылкам в комментариях к код-ревью, сообщениях в чатах или письмах, ведущих на github.dev или другие облачные IDE, теперь представляют серьёзный вектор риска. Использование VPN в публичных или ненадёжных сетях снижает подверженность перехвату трафика, который мог бы усилить этот класс атак - например, перехватив токен в пути или доставив вредоносную ссылку через поддельный ответ DNS.

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

Теги: cybersecurity security internet security usa

Читайте также