Microsoft удалила два популярных расширения для VSCode — Material Theme – Free и Material Theme Icons – Free — из Visual Studio Marketplace, якобы из-за наличия вредоносного кода.
Оба расширения чрезвычайно популярны: их суммарное количество загрузок составляет почти 9 миллионов, и пользователи VSCode теперь получают уведомления о том, что расширения были автоматически отключены.
Разработчик, Маттиа Асторино (Mattia Astorino) (известный как equinusocio), опубликовал несколько расширений в магазине расширений VSCode Marketplace, общее число установок которых превышает 13 миллионов.
Сообщения о том, что расширения являются вредоносными, поступили от специалистов по кибербезопасности, обладающих опытом сканирования расширений VSCode на наличие вредоносного кода. В опубликованном отчете исследователи заявили, что обнаружили подозрительный код в расширениях и сообщили о своих находках Microsoft.
В сообщении сотрудника Microsoft на YCombinator's Hacker News говорится:
Microsoft удалила оба расширения из VS Code Marketplace и заблокировала разработчика.
Один из участников сообщества провел глубокий анализ безопасности расширения, обнаружил множество тревожных сигналов, указывающих на злонамеренные активности, и сообщил нам об этом. Наши специалисты по безопасности из Microsoft подтвердили эти утверждения и нашли дополнительный подозрительный код.
Мы заблокировали издателя на VS Marketplace, удалили все его расширения и деинсталлировали их из всех установок VS Code, где они были активны. Для ясности — удаление было связано не с вопросами авторских прав или лицензий, а исключительно с потенциально злонамеренными действиями.
Исследователи сообщили, что их специализированный сканер обнаружил вредоносную активность в коде расширения. Один из исследователей считает, что вредоносный код был внедрен в обновлении расширения, что может свидетельствовать либо о атаке на цепочку поставок через зависимость, либо о компрометации аккаунта разработчика.
Кроме того, специалисты пояснили, что темы должны представлять собой статичные JSON-файлы и не должны выполнять никакой код, поэтому такое поведение было помечено как подозрительное.
Файлы «release-notes.js» в теме содержат сильно обфусцированный JavaScript, что всегда является тревожным сигналом для ПО с открытым исходным кодом.
Частичная деобфускация кода показала многочисленные ссылки на имена пользователей и пароли. Однако, поскольку файл все еще сильно обфусцирован, сложно определить, каким образом они упоминаются.
Microsoft заявила, что в ближайшее время опубликует дополнительные подробности об этом расширении и обнаруженной вредоносной активности в репозитории GitHub VSMarketplace.
Маттиа Асторино ответил на вопросы о том, что расширения являются вредоносными, заявив, что проблемы вызваны устаревшей зависимостью Sanity.io, которая «выглядит скомпрометированной».
В GitHub-репозитории VSMarketplace Асторино сообщил:
В Material Theme никогда не было ничего вредоносного.
У нас была лишь устаревшая зависимость от sanity.io, используемая с 2016 года для отображения заметок о релизах из headless CMS sanity, и это была единственная обнаруженная проблема.
Эта зависимость присутствует с 2016 года и проходила все проверки до сих пор, теперь она выглядит скомпрометированной, но НИКТО из Microsoft не связался с нами, чтобы удалить ее. Они просто удалили все, что вызвало проблемы у миллионов пользователей и привело к зацикливанию в VSCode (да, это их вина).
Они все сломали, так и не обратившись к нам за разъяснениями. Удаление старой зависимости — быстрое решение за 30 секунд, но, похоже, так работает Microsoft. Мы также поставляем обфусцированный файл index.js, содержащий все команды и логику темы. Он обфусцирован, потому что расширение теперь имеет закрытый исходный код. Однако, если вы его удалите, расширение продолжит работать с простыми JSON-файлами.
До выяснения ситуации рекомендуется удалить из всех проектов следующие расширения:
- equinusocio.moxer-theme
- equinusocio.vsc-material-theme
- equinusocio.vsc-material-theme-icons
- equinusocio.vsc-community-material-theme
- equinusocio.moxer-icons
Позже разработчик Astorino опубликовал, как он утверждает, «полностью переписанное расширение» без каких-либо зависимостей под названием Fanny Themes в VSCode Marketplace, которое Microsoft впоследствии удалила.
В ответ на вопросы о зашифрованном файле release-notes.js, Astorino повторил то, что выложил на GitHub, заявив, что зависимость @sanity была скомпрометирована и могла бы быть быстро удалена, если бы ему об этом сообщили.
Асторино пояснил:
Файл с заметками о релизах был создан и использовался для формирования веб-интерфейса, отображающего изменения из sanity.io, headless CMS, еще в 2016 году.
С тех пор я к нему не прикасался, так как сосредоточился на новой версии расширения. Единственное вредоносное в нем — старая (и единственная) зависимость @sanity, которая была скомпрометирована. Но я об этом не знал.
Угрозы безопасности
• Microsoft удалила два популярных расширения VSCode с 9 миллионами установок из-за угроз безопасности
• Have I Been Pwned добавил 284 млн аккаунтов, украденных вредоносным ПО
• Вредоносное приложение SpyLend для Android было загружено из Google Play более 100 000 раз
• Google исправила уязвимость, позволяющую раскрыть email-адреса пользователей YouTube
• Apple устраняет уязвимость нулевого дня, использованную в «чрезвычайно сложных» атаках
• AMD устранила уязвимость процессоров, позволявшую загружать вредоносные патчи микрокода