Cursor не хранит ключи API в защищенном хранилище, а это значит, что любое расширение может получить к ним доступ. Cursor знал об этой уязвимости, но не исправил ее.

Управляющее резюме

Исследователи безопасности LayerX обнаружили, что любое расширение популярного инструмента разработки ИИ Cursor может получить доступ к API-ключам и токенам сессии разработчика, что приводит к полной компрометации учетных данных без какого-либо взаимодействия или активности со стороны пользователя. 

Компания LayerX обнаружила, что, поскольку Cursor не хранит ключи в защищенном хранилище, любое Расширение Cursor может осуществлять такой доступ. В результате каждый пользователь Cursor уязвим для кражи API-ключа со стороны мошеннических расширений Cursor.

Использование этой уязвимости может привести к утечке токенов сессии и ключей API, несанкционированному доступу к серверным службам Cursor и краже данных путем выдачи себя за другого пользователя.

Компания LayerX сообщила об этой уязвимости компании Cursor. Cursor ответила, что признает проблему, но ответственность за определение границ доверия лежит на пользователе. На сегодняшний день Cursor не устранила эту проблему.

 

Ключи API курсора хранятся в открытой локальной базе данных.

Cursor, популярная среда разработки с использованием искусственного интеллекта, содержит серьезную уязвимость в системе контроля доступа.ЦВСС 8.2), которая позволяет любому установленному расширению получать доступ к конфиденциальным учетным данным, хранящимся локально.

В отличие от стандартных методов обеспечения безопасности, где секретные данные, такие как ключи API и токены сеансов, хранятся в защищенных хранилищах (например, в связках ключей операционной системы), Cursor хранит эти учетные данные в локальной базе данных SQLite:

` ~/Library/Application Support/Cursor/User/globalStorage/state.vscdb `

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

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

 

Влияние

Эта уязвимость позволяет полностью скомпрометировать учетные данные без какого-либо взаимодействия с пользователем (за исключением установки расширения), что приводит к следующим последствиям:

  • Раскрытие токенов сессии и ключей API
  • Несанкционированный доступ к серверным службам Cursor.
  • Компромисс в интеграции со сторонними сервисами (например, OpenAI, Anthropic, Google)
  • Имитация пользователя и доступ к данным

Риск для последующих этапов (например, кража ключа API OpenAI)

Если злоумышленник получит ключ API OpenAI жертвы, он сможет:

  • Выполнение вызовов API, оплачиваемых жертвой → финансовые потери
  • Доступ к подсказкам, автозавершению и метаданным → раскрытие данных
  • Злоупотребление API для дальнейших атак или автоматизации
  • Потенциально можно сделать выводы о конфиденциальной информации на основе предыдущих взаимодействий.

Поскольку эти клавиши часто предоставляют широкий доступ, их влияние распространяется не только на сам курсор, но и на более широкую экосистему искусственного интеллекта и разработки пользователя.

 

Технический обзор

Давайте рассмотрим реалистичный сценарий атаки с точки зрения злоумышленника.

Рисунок 1. Поток эксплуатации

Шаг 1: Подготовка вредоносного расширения

Злоумышленник создает, казалось бы, безобидное расширение для курсора — возможно, инструмент повышения производительности, тему оформления или вспомогательную утилиту. Оно не запрашивает никаких подозрительных разрешений и выглядит безопасным для установки.

С точки зрения пользователя, ничего необычного не видно.

Шаг 2: Пользователь устанавливает расширение

Разработчик устанавливает расширение из магазина приложений или репозитория GitHub.

Там есть:

  • Нет предупреждения
  • Отсутствует запрос на предоставление разрешений, связанных с доступом к учетным данным.
  • Признаков риска нет.

На данном этапе злоумышленник получает возможность выполнения кода в среде расширения Cursor.

Шаг 3: Доступ к конфиденциальной информации в хранилище

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

  • Токены сессии
  • Ключи API (например, OpenAI)
  • Другие артефакты аутентификации

Благодаря отсутствию контроля доступа, расширение может напрямую открывать и запрашивать эту базу данных. Никаких специальных привилегий не требуется.

Шаг 4: Извлечение учетных данных

Расширение анализирует базу данных и извлекает:

  • API ключи
  • Токены сессии
  • Возможно, кэшированная конфигурация или метаданные.

Рисунок 2. Пример запроса к базе данных из расширения PoC.

Поскольку данные хранятся в открытом текстовом формате (или недостаточно защищены), их извлечение не представляет сложности.

Шаг 5: Бесшумная эвакуация

Расширение отправляет украденные учетные данные на сервер, контролируемый злоумышленником, что можно сделать с помощью простой команды `fetch`. Это происходит незаметно:

  • Не требуется взаимодействие с пользователем
  • Визуальных изменений в пользовательском интерфейсе нет.
  • Нет предупреждений

Шаг 6: Постэксплуатация

Теперь у злоумышленника есть действительные учетные данные.

Почему это относится к категории высокой степени тяжести

Эта уязвимость особенно опасна, потому что:

  • Разрешения не требуются
  • После установки никаких действий от пользователя не требуется. 
  • Низкая сложность атаки
  • Сильное влияние на конфиденциальность

Чтобы показать, насколько легко этим можно воспользоваться, мы создали Расширение PoC и демонстрационное видео:

 

Хронология раскрытия информации:

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

  • Исправить статус: Не исправлено. Вт, 28 апр 2026 г. 

Рекомендуемые меры по исправлению

Для надлежащего решения этой проблемы курсор должен:

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