Исследователи безопасности обнаружили, что расширения для VS Code могут красть токены пользователей

Discussion in 'Мировые новости. Обсуждения.' started by alexzir, 11 Aug 2023.

  1. alexzir

    alexzir Well-Known Member

    Joined:
    29 Oct 2019
    Messages:
    962
    Likes Received:
    2,311
    Reputations:
    25
    Исследователи безопасности из Cycode обнаружили уязвимость в редакторе кода VS Code, позволяющую сторонним расширениям получать доступ к хранилищу токенов на машине пользователя. Таким образом злоумышленники могут украсть токены для GitHub или других систем, с которыми работает VS Code.
    [​IMG]
    Ошибка связана с отсутствием изоляции токенов аутентификации в секретном хранилище VS Code. Разработчики Microsoft для доступа к менеджеру учётных данных в Windows и связке ключей в macOS и Linux используют обёртку Keytar на Node.js. Из-за отсутствия изоляции любое расширение, требующее аутентификации, может получить доступ сразу ко всему хранилищу токенов, а не только к своей закрытой директории.

    Исследователям удалось получить список токенов из хранилища системы. Кроме всего списка, исследователи смогли просматривать и каждый отдельный токен. Также выяснилось, что токены зашифрованы и их нельзя использовать.
    [​IMG]
    Список полученных токенов
    На втором этапе исследования эксперты попытались найти способ дешифровать токены. Выяснилось, что токены дешифруются с помощью machineId, который уникален для каждой системы, и модуля vscode-encrypt. С помощью поиска по файлам VS Code модуль удалось найти в директории /Applications/Visual Studio Code.app/Contents/Resources/app/node_modules.asar.unpacked/vscode-encrypt/build/Release/vscode-encrypt-native.node (исследование проводили на машине на базе macOS), но попытка дешифровки не дала результатов.

    После этого была предпринята попытка изучить исходный код VS Code. В нём также нашли модуль vscode-encrypt в директории /Applications/Visual Studio Code.app/Contents/Resources/app/node_modules.asar. Сам модуль написан на Rust и скомпилирован в бинарник Node. Для шифрования используется алгоритм aes-256-gcm, а ключ включает в себя хеш текущего исполняемого пути. Из этого стало ясно, почему значение токена может быть точно получено при запуске через VS Code, но не через Node.

    Зная всё это, исследователи написали собственный скрипт на языке JavaScript, который импортирует модуль vscode-encrypt и расшифровывает токен. Эксперимент с получением токенов удалось выполнить в VS Code.
    [​IMG]
    Дешифрованный токен
    Завершающим этапом исследования стала разработка расширения, которое получает доступ к хранилищу токенов, импортирует модуль vscode-encrypt и machineId, расшифровывает токены и отправляет их на заранее подготовленный IP-адрес. Таким образом, специалисты из Cycode показали механизм уязвимости, которую потенциально могут использовать злоумышленники.

    Исследователи сообщили об ошибке в Microsoft два месяца назад, но представители компании отметили, что это осознанный выбор архитектуры VS Code, и пока инженеры не рассматривают исправление.

     
    Suicide likes this.
Loading...