Cursor — редактор кода с встроенным ИИ, которым пользуется больше половины компаний из списка Fortune 500. Исследователи из Cato AI Labs обнаружили в нём две критические уязвимости, получившие общее название DuneSlide. Обе получили оценку 9.8 из 10 по шкале CVSS v3. CVE-идентификаторы — CVE-2026-50548 и CVE-2026-50549 — присвоены 5 июня. Патч вышел раньше, 2 апреля, в составе Cursor 3.0. Все версии до 3.0 уязвимы.
Суть обеих проблем одна: атакующий никогда не касается редактора жертвы напрямую. Вредоносные инструкции прячутся внутри контента, который ИИ-агент читает сам — страница из веб-поиска, ответ подключённого MCP-сервиса (Model Context Protocol). Агент следует этим инструкциям без каких-либо кликов или подтверждений со стороны пользователя. Это и называют zero-click атакой.
Логика обоих эксплойтов одинакова: заставить агента записать один файл туда, куда он не должен иметь доступа, а через эту запись отключить sandbox целиком. Sandbox появился в линейке Cursor 2.x именно как ответ на предыдущие волны уязвимостей — он ограничивал, какие файлы и папки агент вправе трогать при выполнении терминальных команд.
CVE-2026-50548 эксплуатирует параметр working_directory в инструменте run_terminal_cmd. Это необязательный параметр рабочей папки для команды. Cursor разрешает запись внутри этой папки — и автоматически добавляет её в список разрешённых путей без каких-либо проверок. Внедрённые инструкции просто переназначают working_directory на чувствительное системное расположение. На macOS целью служит файл /Applications/Cursor.app/Contents/Resources/app/resources/helpers/cursorsandbox — вспомогательный бинарник самого sandbox. Перезаписав его, атакующий получает среду, где все последующие команды выполняются уже без каких-либо ограничений. Альтернативная цель — стартовые файлы оболочки вроде ~/.zshrc.
CVE-2026-50549 работает через другую дверь, но приходит в ту же комнату. Перед записью Cursor разрешает симлинки (символические ссылки), чтобы убедиться: реальный путь назначения лежит внутри проекта. Баг в том, что когда эта проверка падает с ошибкой — например, целевой файл не существует или атакующий убрал права на чтение у одной из папок в пути — Cursor сдаётся и доверяет исходному пути симлинка. Атакующий создаёт симлинк, указывающий за пределы проекта, намеренно роняет проверку и получает запись в произвольное место. Целью снова оказывается cursorsandbox.
После того как sandbox нейтрализован, следующая же команда выполняется с полными пользовательскими привилегиями разработчика. Это означает доступ ко всей машине и ко всем облачным и SaaS-сервисам, в которые залогинен редактор. Реальных случаев эксплуатации на момент публикации зафиксировано не было — Cato представляет DuneSlide как исследовательскую работу, а не описание активной кампании.
История взаимодействия Cato с командой Cursor заслуживает отдельного внимания. 19 февраля исследователи сообщили об обеих уязвимостях. Примерно 23 февраля Cursor отклонил оба отчёта, сославшись на то, что злоупотребление MCP-сервером находится за пределами их модели угроз — даже применительно к официальным сервисам вроде официального рабочего пространства Linear. 26 февраля Cato эскалировали отчёты. После этого Cursor пересмотрел позицию, принял баги в работу и в итоге закрыл их в версии 3.0.
DuneSlide — не первая подобная история с Cursor. В августе 2025 года та же команда, работавшая тогда под именем Aim Security, нашла уязвимость CurXecute (CVE-2025-54135): подброшенное Slack-сообщение перезаписывало конфигурационный файл ~/.cursor/mcp.json и запускало команды даже после того, как пользователь отклонил правку. Закрыто в версии 1.3. Исследователи Check Point Research описали MCPoison (CVE-2025-54136): атакующий добивается одноразового одобрения MCP-конфига, а затем тихо подменяет его содержимое вредоносными командами без повторного запроса. В феврале 2026 года всплыл эксплойт через Git-хук (CVE-2026-26268): ловушка внутри репозитория срабатывала в момент, когда агент выполнял любую Git-команду. Закрыто в версии 2.5.
Cato видит в этой последовательности закономерность, а не набор случайных инцидентов. Каждая из уязвимостей начиналась с внедрённого промпта, заканчивалась выполнением произвольного кода и каждый раз обходила другой] защитный барьер. Sandbox из линейки 2.x был прямым ответом на предыдущие проблемы — DuneSlide обошёл и его. Команда говорит, что раскрывает аналогичные уязвимости и в других ИИ-редакторах. Вопрос, который повисает в воздухе: будут ли агенты, читающие открытый веб, когда-нибудь принимать всё внешнее содержимое как враждебное по умолчанию, или индустрия продолжит закрывать бреши по одной.
Если вы используете Cursor, обновитесь до версии 3.0. Все версии до 3.0 содержат обе уязвимости.
Суть обеих проблем одна: атакующий никогда не касается редактора жертвы напрямую. Вредоносные инструкции прячутся внутри контента, который ИИ-агент читает сам — страница из веб-поиска, ответ подключённого MCP-сервиса (Model Context Protocol). Агент следует этим инструкциям без каких-либо кликов или подтверждений со стороны пользователя. Это и называют zero-click атакой.
Логика обоих эксплойтов одинакова: заставить агента записать один файл туда, куда он не должен иметь доступа, а через эту запись отключить sandbox целиком. Sandbox появился в линейке Cursor 2.x именно как ответ на предыдущие волны уязвимостей — он ограничивал, какие файлы и папки агент вправе трогать при выполнении терминальных команд.
CVE-2026-50548 эксплуатирует параметр working_directory в инструменте run_terminal_cmd. Это необязательный параметр рабочей папки для команды. Cursor разрешает запись внутри этой папки — и автоматически добавляет её в список разрешённых путей без каких-либо проверок. Внедрённые инструкции просто переназначают working_directory на чувствительное системное расположение. На macOS целью служит файл /Applications/Cursor.app/Contents/Resources/app/resources/helpers/cursorsandbox — вспомогательный бинарник самого sandbox. Перезаписав его, атакующий получает среду, где все последующие команды выполняются уже без каких-либо ограничений. Альтернативная цель — стартовые файлы оболочки вроде ~/.zshrc.
CVE-2026-50549 работает через другую дверь, но приходит в ту же комнату. Перед записью Cursor разрешает симлинки (символические ссылки), чтобы убедиться: реальный путь назначения лежит внутри проекта. Баг в том, что когда эта проверка падает с ошибкой — например, целевой файл не существует или атакующий убрал права на чтение у одной из папок в пути — Cursor сдаётся и доверяет исходному пути симлинка. Атакующий создаёт симлинк, указывающий за пределы проекта, намеренно роняет проверку и получает запись в произвольное место. Целью снова оказывается cursorsandbox.
После того как sandbox нейтрализован, следующая же команда выполняется с полными пользовательскими привилегиями разработчика. Это означает доступ ко всей машине и ко всем облачным и SaaS-сервисам, в которые залогинен редактор. Реальных случаев эксплуатации на момент публикации зафиксировано не было — Cato представляет DuneSlide как исследовательскую работу, а не описание активной кампании.
История взаимодействия Cato с командой Cursor заслуживает отдельного внимания. 19 февраля исследователи сообщили об обеих уязвимостях. Примерно 23 февраля Cursor отклонил оба отчёта, сославшись на то, что злоупотребление MCP-сервером находится за пределами их модели угроз — даже применительно к официальным сервисам вроде официального рабочего пространства Linear. 26 февраля Cato эскалировали отчёты. После этого Cursor пересмотрел позицию, принял баги в работу и в итоге закрыл их в версии 3.0.
DuneSlide — не первая подобная история с Cursor. В августе 2025 года та же команда, работавшая тогда под именем Aim Security, нашла уязвимость CurXecute (CVE-2025-54135): подброшенное Slack-сообщение перезаписывало конфигурационный файл ~/.cursor/mcp.json и запускало команды даже после того, как пользователь отклонил правку. Закрыто в версии 1.3. Исследователи Check Point Research описали MCPoison (CVE-2025-54136): атакующий добивается одноразового одобрения MCP-конфига, а затем тихо подменяет его содержимое вредоносными командами без повторного запроса. В феврале 2026 года всплыл эксплойт через Git-хук (CVE-2026-26268): ловушка внутри репозитория срабатывала в момент, когда агент выполнял любую Git-команду. Закрыто в версии 2.5.
Cato видит в этой последовательности закономерность, а не набор случайных инцидентов. Каждая из уязвимостей начиналась с внедрённого промпта, заканчивалась выполнением произвольного кода и каждый раз обходила другой] защитный барьер. Sandbox из линейки 2.x был прямым ответом на предыдущие проблемы — DuneSlide обошёл и его. Команда говорит, что раскрывает аналогичные уязвимости и в других ИИ-редакторах. Вопрос, который повисает в воздухе: будут ли агенты, читающие открытый веб, когда-нибудь принимать всё внешнее содержимое как враждебное по умолчанию, или индустрия продолжит закрывать бреши по одной.
Если вы используете Cursor, обновитесь до версии 3.0. Все версии до 3.0 содержат обе уязвимости.