Антивирус Dr.Web обнаружил сторонний код в зависимостях Visual Studio Code – что известно об угрозе JS.Siggen5.44590

2026-04-16 11420 комментарии
При установке новых версий Visual Studio Code антивирус Dr.Web обнаруживает наличие стороннего JavaScript-кода в одной из зависимостей редактора. В компании рассказали, как этот код попал в цепочку поставок, какие функции выполняет и какие потенциальные риски он представляет для пользователей

Антироссийский призыв в консоли разработчика вместе с обновлением Microsoft Visual Studio Code

Компания «Доктор Веб» сообщила о выявлении подозрительного поведения при установке новой версии (1.116) редактора кода Microsoft Visual Studio Code. По данным специалистов, антивирус Dr.Web детектирует вредоносный JavaScript-файл, входящий в состав одной из зависимостей редактора (JS.Siggen5.44590).

Речь идет о библиотеке es5-ext, в которую еще в 2022 году был добавлен сторонний код. Несмотря на давность инцидента, данный фрагмент по-прежнему присутствует в библиотеке и распространяется вместе с рядом программных продуктов.

Что делает вредоносный JS-файл

Обнаруженный код не выполняет классических вредоносных действий (таких как кража данных или установка бэкдоров), однако демонстрирует сообщение в консоли разработчика с антироссийским политическим содержанием.

Скрипт активируется только при выполнении определенного условия — если системный часовой пояс пользователя соответствует одному из российских регионов. В список входят такие города, как Анадырь, Барнаул, Калининград, Самара и другие.

Почему это считается вредоносным поведением

Специалисты «Доктор Веб» классифицируют данный код как нежелательную и потенциально опасную вставку. Причины следующие:

  • Код не имеет отношения к функциональности библиотеки;
  • Он выполняет действия, зависящие от географического положения пользователя;
  • Содержит политическую агитацию, что недопустимо для инфраструктурного ПО.

Хотя на текущий момент скрипт ограничивается выводом сообщения, эксперты отмечают, что разработчик библиотеки теоретически может изменить его поведение в любой момент. В таком случае последствия могут быть значительно серьезнее — вплоть до удаления данных или выполнения произвольного кода на устройстве пользователя.

Как это оказалось в Visual Studio Code

Несмотря на известность проблемы в профессиональном сообществе, библиотека es5-ext была включена в зависимости Visual Studio Code. Это означает, что при обновлении редактора пользователи автоматически получают и данный пакет.

Антивирусное ПО фиксирует проблему на этапе загрузки или распаковки обновления, в котором присутствует скомпрометированная библиотека.

Игорь Здобнов, руководитель антивирусной лаборатории «Доктор Веб»:

Мотивы, по которым Microsoft включила в зависимость заведомо сомнительный пакет, нам неведомы. Мы рекомендуем пользователям обратить внимание на срабатывания антивируса и, при необходимости, временно приостановить автоматическое обновление до выяснения обстоятельств со стороны разработчика.

Последствия для пользователей и рекомендации

Основной риск на данный момент заключается не в непосредственном вреде, а в самом факте наличия неконтролируемого кода в цепочке поставок программного обеспечения.

Пользователям рекомендуется:

  • Внимательно относиться к предупреждениям антивируса;
  • Проверять обновления перед установкой;
  • При необходимости временно отключить автоматические обновления;
  • Использовать проверенные версии программного обеспечения.

По информации «Доктор Веб», последняя версия Visual Studio Code, не содержащая данной проблемы, — 1.115.

Как отключить сторонний скрипт _postinstall.js в составе Visual Studio Code

В дистрибутив Visual Studio Code попадает npm-пакет es5-ext, в состав которого входит файл _postinstall.js. При определённых часовых поясах скрипт выводит в консоль разработчика антироссийский призыв; Dr.Web обнаруживает этот файл как JS.Siggen5.44590. На момент выхода Visual Studio Code 1.118 Microsoft пакет из состава редактора не удалила, автор es5-ext скрипт тоже не убрал. Отключить его можно сторонним исправлением vscode-es5ext-patch, которое заменяет _postinstall.js на заглушку и чистит хук postinstall в package.json.

Перед применением

  • Закрыть Visual Studio Code.
  • Запускать исправление с правами администратора (sudo на Linux и macOS, консоль с повышенными правами на Windows).
  • Скрипт корректно обрабатывает отдельно установленные сборки Visual Studio Code, Visual Studio Code Insiders и Code OSS.
  • Повторный запуск безопасен — уже исправленные файлы скрипт пропускает.

Применение через скрипт patch-es5ext.js

Клонирование репозитория либо загрузка файла patch-es5ext.js с GitHub.

Linux:

git clone https://github.com/Chumikov/vscode-es5ext-patch.git
cd vscode-es5ext-patch
sudo node patch-es5ext.js

macOS:

git clone https://github.com/Chumikov/vscode-es5ext-patch.git
cd vscode-es5ext-patch
sudo node patch-es5ext.js

Если Node.js не установлен отдельно, можно использовать Node.js из состава самого Visual Studio Code:

sudo "/Applications/Visual Studio Code.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Resources/node" patch-es5ext.js

Windows (PowerShell от имени администратора):

git clone https://github.com/Chumikov/vscode-es5ext-patch.git
cd vscode-es5ext-patch
node patch-es5ext.js

Ручное исправление без Node.js

Если запускать сторонний скрипт нежелательно, те же действия можно выполнить вручную. Содержимое _postinstall.js заменяется на безопасную заглушку, а из package.json пакета es5-ext удаляется строка с postinstall.

Linux:

echo '#!/usr/bin/env node "use strict";' | sudo tee /usr/share/code/resources/app/node_modules/es5-ext/_postinstall.js
sudo sed -i '/_postinstall/d' /usr/share/code/resources/app/node_modules/es5-ext/package.json

Для Visual Studio Code Insiders путь меняется на /usr/share/code-insiders/..., для Code OSS — на /usr/share/code-oss/...

macOS:

echo '#!/usr/bin/env node "use strict";' | sudo tee "/Applications/Visual Studio Code.app/Contents/Resources/app/node_modules/es5-ext/_postinstall.js"
sudo sed -i '' '/_postinstall/d' "/Applications/Visual Studio Code.app/Contents/Resources/app/node_modules/es5-ext/package.json"

Windows (PowerShell от имени администратора):

Set-Content -Path "C:\Program Files\Microsoft VS Code\resources\app\node_modules\es5-ext\_postinstall.js" -Value "#!/usr/bin/env node`n`"use strict`";"
$file = "C:\Program Files\Microsoft VS Code\resources\app\node_modules\es5-ext\package.json"
$content = Get-Content $file | Where-Object { $_ -notmatch "_postinstall" -and $_ -notmatch '"postinstall"' }
Set-Content -Path $file -Value $content

После каждого обновления Visual Studio Code исправление нужно применять заново. Любое обновление редактора перезаписывает содержимое каталога resources/app/node_modules/es5-ext/ — файл _postinstall.js восстанавливается в исходном виде. Имеет смысл добавить запуск patch-es5ext.js в свой скрипт обслуживания системы.

© .
Комментарии и отзывы

Нашли ошибку?

Новое на сайте