Назад к списку

Уязвимость Cursor AI — риск кражи криптовалюты

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

  • Что случилось: В AI-редакторе Cursor обнаружена критическая уязвимость, позволяющая выполнить произвольный код (RCE) при открытии вредоносной папки проекта.

  • Кто затронут: Пользователи Cursor версий до 0.34.4. Особый риск для Web3-разработчиков.

  • Срочные действия для разработчика:
    ol>
    li>Обновите Cursor до версии 0.34.4 или новее.

  • Включите Workspace Trust в настройках безопасности.

  • Просканируйте проекты на наличие подозрительных файлов tasks.json.

  • Ротируйте ключи и токены, если открывали недоверенные проекты.

  • Введение

    В январе 2024 года команда кибербезопасности SlowMist сообщила о критической уязвимости в Cursor — популярном AI-редакторе кода. Проблема позволяла злоумышленнику выполнить произвольный код на машине разработчика через стандартную функцию «Open Folder». Эта уязвимость превратила инструмент для повышения продуктивности в вектор для атак, направленных на кражу API-ключей, данных и криптовалютных активов.

    Хронология и технические детали

    Уязвимость возникла из-за унаследованной от VS Code функции автоматического выполнения задач, которая в старых версиях Cursor была включена по умолчанию без должных мер предосторожности.

  • 8 января 2024 г. — отчет SlowMist: эксперты продемонстрировали PoC-атаку, показав, как команда, заложенная в файл .vscode/tasks.json, исполняется при открытии проекта.

    Источник: отчет SlowMist.

  • 9 января 2024 г. — выпуск патча: Anysphere, компания-разработчик Cursor, выпускает версию 0.34.4, в которой по умолчанию включена функция Workspace Trust, предотвращающая автоматическое выполнение кода.

    Источник: changelog релиза 0.34.4.

  • На момент публикации для этой уязвимости, связанной с tasks.json, не был присвоен отдельный идентификатор CVE. Проверка в базах данных NVD и Mitre не выявила соответствующей записи. Проблема является унаследованной от архитектуры VS Code и была решена внедрением функции Workspace Trust, а не исправлением конкретного бага в коде Cursor.

    Затронутые версии

    Технический вектор атаки и Proof-of-Concept (PoC)

    Атака эксплуатирует механизм автоматического выполнения задач, настроенный в файле .vscode/tasks.json внутри проекта. При открытии такой папки в уязвимой версии Cursor редактор автоматически исполнял прописанные команды без подтверждения от пользователя.


    p>ОПАСНО: НЕ ЗАПУСКАТЬ В РАБОЧЕЙ СРЕДЕ

    Приведенный ниже пример — демонстрация вектора атаки. Никогда не запускайте команды из недоверенных источников. Даже простое открытие папки проекта в уязвимой среде может привести к автоматическому выполнению вредоносного кода и полной компрометации системы./p>

    Пример вредоносного файла .vscode/tasks.json :

    Здесь команда curl загружает и исполняет вредоносный скрипт с сервера злоумышленника в момент открытия папки проекта.

    План действий: защита и реагирование

    Шаг 1: Немедленные действия (в течение часа)


  • p>Обновите Cursor AI. Немедленно установите последнюю версию (0.34.4+) с официального сайта cursor.sh или со страницы релизов./p>


  • p>Проверьте целостность релиза. Перед установкой убедитесь, что скачанный файл не был подменен./p>
    ul>
    li>
    p>Linux/macOS:/p>
    pre>code class="language-bash">sha256sum -c sha256sums.txt --ignore-missing
    /code>/pre>


  • p>Windows (PowerShell):/p>
    pre>code class="language-powershell">(Get-FileHash 'Cursor.Setup.exe').Hash.ToLower() -eq (
    (Get-Content 'sha256sums.txt' | Select-String 'Cursor.Setup.exe').ToString().Split(' ')[0]
    )
    /code>/pre>


  • p>Включите Workspace Trust. Эта функция, унаследованная от VS Code, предотвращает автоматическое выполнение кода из недоверенных проектов. В Cursor аналогичная настройка./p>
    ul>
    li>
    p>GUI: перейдите в Settings → Security → Workspace Trust и убедитесь, что опция включена./p>


  • p>settings.json: установите флаг:/p>
    pre>code class="language-jsonc">"security.workspace.trust.enabled": true
    /code>/pre>
    p>Подробнее о функции можно прочитать в документации VS Code./p>


  • p>Проведите аудит проектов. Используйте скрипты из раздела «Автоматизированная проверка» для сканирования локальных репозиториев на наличие подозрительных tasks.json./p>


  • p>Ротируйте ключи. Если вы открывали подозрительные проекты, немедленно смените все API-ключи (AWS, Google Cloud, OpenAI), пароли, SSH-ключи и токены доступа./p>

  • Шаг 2: Долгосрочная защита

  • Изолируйте окружения. Используйте отдельную, изолированную среду (виртуальная машина, контейнер Docker) для работы с кодом из непроверенных источников.

  • Принцип минимальных привилегий. Запускайте инструменты разработки от имени пользователя с ограниченными правами.

  • Индикаторы компрометации (IOCs)

    Файловые индикаторы


  • p>Пути: ищите файлы tasks.json с подозрительным содержимым в папках .vscode/ внутри ваших проектов./p>


  • p>Поиск с помощью grep:/p>
    pre>code class="language-bash"># Поиск файлов tasks.json, содержащих опцию автозапуска "folderOpen"
    # Замените /path/to/projects на путь к вашим проектам

    find /path/to/projects -type f -name "tasks.json" -exec grep -l '"runOn": "folderOpen"' {} +

    # Поиск подозрительных команд (curl|sh, wget, eval, base64)

    find /path/to/projects -type f -name "tasks.json" -exec grep -H -E 'sh -c|eval\(|curl|wget|base64\s-d' {} +
    /code>/pre>


  • p>YARA-правило для tasks.json :/p>
    pre>code class="language-yara">rule Suspicious_Cursor_Tasks_Json {
    meta:
    description = "Detects tasks.json configured to run on folderOpen with suspicious commands"
    author = "Threat Research Team"
    date = "2024-01-15"

    strings:
    $file = "tasks.json" nocase
    $run_on = /"runOn"\s*:\s*"folderOpen"/
    $cmd_curl = /"command"\s*:\s*".*(curl|wget).* (sh|bash|zsh)\s*"/
    $cmd_eval = /"command"\s*:\s*".*eval\s*\(.*\).*/

    condition:
    uint32(0) == 0x7B227665 and // fast check for "{\"ve"
    $file and $run_on and 1 of ($cmd*)
    }
    /code>/pre>

  • Сетевые индикаторы

    Подозрительные домены: DNS-запросы к доменам на бесплатных хостингах или динамических DNS (например, *.ddns.net, *.no-ip.com, *.xyz, *.top).


  • p>Анализ трафика: ищите исходящие соединения от процессов node, python, sh, bash, запущенных дочерними процессами от Cursor./p>


  • p>Linux/macOS:/p>
    pre>code class="language-bash">sudo ss -tulpn | grep -E 'node|python|sh'
    /code>/pre>


  • p>Windows (PowerShell):/p>
    pre>code class="language-powershell">Get-NetTCPConnection -State Established |
    Where-Object {
    ($proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue) -and
    ($proc.ProcessName -in 'node','python','sh')
    }
    /code>/pre>

  • Автоматизированная проверка рабочих каталогов

    Используйте эти скрипты для массового сканирования проектов на наличие вредоносных tasks.json.

    Инструкция:

  • Сохраните скрипт в файл (например, scan.sh или scan.ps1).

  • Запустите его, указав путь к корневой папке с вашими проектами.

  • Важно: если скрипт найдет подозрительные файлы, не открывайте эти проекты. Анализируйте их в изолированной среде.

  • Скрипт для Linux/macOS (Bash):

    Скрипт для Windows (PowerShell):

    Рекомендации для команд безопасности и DevOps


  • p>Интеграция в CI/CD. Добавьте шаг в CI-пайплайн, который сканирует репозиторий на наличие tasks.json с runOn: folderOpen./p>
    p>Пример для GitHub Actions:/p>
    pre>code class="language-yaml">- name: Scan for dangerous tasks.json
    run: |
    if find . -type f -name "tasks.json" -exec grep -q '"runOn": "folderOpen"' {} +; then
    echo "::error::Dangerous 'runOn: folderOpen' found in tasks.json!"
    exit 1
    fi
    /code>/pre>


  • p>Pre-commit hooks. Внедрите локальные pre-commit-хуки для выполнения аналогичной проверки перед коммитом./p>


  • p>Политики для репозиториев. Настройте CODEOWNERS в GitHub, чтобы изменения в .vscode/ требовали обязательного ревью от команды безопасности./p>


  • p>EDR/IDS-правила. Создайте правила для мониторинга и оповещения, когда процесс редактора порождает дочерние процессы curl, wget или sh -c./p>

  • Форензика и реагирование на инцидент

  • Изолируйте машину. Немедленно отключите ее от сети. Не выключайте питание, чтобы сохранить данные из оперативной памяти (RAM) для анализа.

  • Соберите артефакты (для профессионалов):
    ul>
    li>Образ RAM: используйте FTK Imager или Belkasoft RAM Capturer.

  • Системные логи:Event Viewer (Windows), /var/log/ (Linux), ~/Library/Logs/ (macOS).

  • Логи Cursor:%APPDATA%\Cursor\logs (Windows), ~/.config/Cursor/logs (Linux), ~/Library/Application Support/Cursor/logs (macOS).

  • Процессы и соединения: сохраните вывод ps aux и sudo ss -tulpn (Linux/macOS) или Get-Process и Get-NetTCPConnection (PowerShell).

  • Обратитесь к специалистам. В корпоративной среде свяжитесь с командой по реагированию на инциденты (IR/CSIRT).

  • Что делать со скомпрометированным криптокошельком

    ПРЕДУПРЕЖДЕНИЕ: не действуйте поспешно. Злоумышленники используют автоматические скрипты (sweeper bots), которые мгновенно крадут любые поступающие на скомпрометированный адрес активы (например, ETH для оплаты газа).

  • Не пополняйте скомпрометированный кошелек. Любые средства для оплаты комиссии будут немедленно украдены.

  • Создайте новый кошелек на гарантированно чистом устройстве. Идеальный вариант — аппаратный кошелек (Ledger, Trezor).

  • Спланируйте спасение активов. Для вывода токенов потребуется опередить бота. Используйте сервисы приватных транзакций, такие как Flashbots, чтобы отправить транзакцию напрямую майнеру/валидатору, минуя публичный мемпул. Это сложная процедура, требующая помощи специалистов.

  • Сообщите биржам и аналитическим сервисам. Если средства были выведены на централизованную биржу, немедленно свяжитесь с ее службой поддержки, предоставив TxID и адреса злоумышленников.

  • Никогда не используйте скомпрометированный кошелек снова. Откажитесь от него навсегда.

  • Заключение

    Инцидент с Cursor — это важное напоминание, что удобство AI-инструментов не должно достигаться ценой безопасности. Ответственность за защиту данных лежит на каждом разработчике. Обновляйте ПО, включайте защитные механизмы, такие как Workspace Trust, и относитесь к любому загруженному коду как к потенциально опасному.

    Если вы обнаружили уязвимость, ответственно сообщите о ней разработчикам по адресу security@anysphere.co или через SECURITY.md в репозитории проекта.

    Теги

    cursor ai vulnerability
    remote code execution rce
    cryptocurrency theft risk
    web3 security
    vs code tasks.json exploit