Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2021-26700 — RCE в расширении NPM для VS Code | Kitploit
Инструменты/GitHubGitHub/jackadamson/cve-2021-26700
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийБезопасность Цепочки ПоставокОбучение и Образование
GitHubjackadamson/cve-2021-26700

CVE-2021-26700

RCE в расширении NPM для VS Code

Репозиторий
205 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

RCE в расширении VSCode для NPM

Исправлено 10 февраля 2021 года в https://github.com/microsoft/vscode-npm-scripts/commit/cdd5e507564e0cc0f60bcccf184822be3fd73e07

https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-26700

Краткое описание

Уязвимость удаленного выполнения кода в расширении VSCode eg2.vscode-npm-script (Протестировано на версии 0.3.13) означает, что вредоносный .vscode/settings.json в проекте может вызвать удаленное выполнение кода при просмотре файла с именем package.json.

Эта уязвимость не подпадала ни под одну активную программу вознаграждений Microsoft за обнаружение ошибок, но была сообщена и обработана MSRC.

Описание

Без вредоносного файла .vscode/settings.json в репозитории, при просмотре файла package.json с установленным расширением eg2.vscode-npm-script будет выполнена команда npm ls --depth 0 --json.

Установив ключ npm.bin в settings.json проекта, например, на ./payload.sh, просмотр package.json вместо этого выполнит ./payload.sh ls --depth 0 --json из каталога, содержащего package.json.

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

Пример атаки

Пример того, как это может быть использовано злоумышленником:

  1. Злоумышленник публикует репозиторий, например, прилагаемый linux-poc
  2. Цель клонирует репозиторий, чтобы прочитать исходный код в VSCode
  3. Цель просматривает package.json
  4. Выполняется payload.sh

Варианты устранения

Я видел два способа смягчения вредоносного VSCode Workspace settings.json

Устранение 1 - Только пользовательские настройки

Запретить установку настроек для каждой рабочей области. Это уже используется в VSCode для git.path, terminal.integrated.shell.linux и некоторых других настроек.

Это может нарушить совместимость для некоторых пользователей, но имеет прецедент.
Ссылка: https://vscode.readthedocs.io/en/latest/getstarted/settings/#settings-and-security

Устранение 2 - Запрос подтверждения

Если эта настройка установлена в рабочей области, предложить пользователю подтвердить настройку перед выполнением двоичного файла.
Это не нарушит существующую совместимость, и это путь, выбранный расширением ESLint начиная с версии 2.1.7.

Доказательство концепции

Linux

  1. Установите уязвимую версию (0.3.13 или более раннюю) расширения VSCode eg2.vscode-npm-script
  2. Откройте каталог linux-poc как папку в VSCode
  3. В VSCode щелкните файл package.json, чтобы просмотреть его
  4. Будет создан файл /tmp/output.txt, чтобы продемонстрировать выполнение

Windows

  1. Установите уязвимую версию (0.3.13 или более раннюю) расширения VSCode eg2.vscode-npm-script
  2. Откройте каталог windows-poc как папку в VSCode
  3. В VSCode щелкните файл package.json, чтобы просмотреть его
  4. Будет открыт calc.exe

Примечание: я не смог использовать относительный путь для двоичного файла в Windows, однако это может быть связано с моим недостаточным знанием Windows

Скачать инструмент