Игорь Градов
Игорь Градов
6 мин
ai

Prompt injection это угроза каждому 4-му скиллу: как сканер NVIDIA ловит закладки

Промпт-инъекция (prompt injection) это атака, при которой злоумышленник подсовывает ИИ-агенту текст, замаскированный под инструкцию, и агент выполняет чужую команду вместо вашей, причём с вашими же правами доступа к файлам, ключам и сервисам.

Prompt injection это угроза каждому 4-му скиллу: как сканер NVIDIA ловит закладки
Почему это важно

Исследование 42 447 скиллов с маркетплейсов показало: 26,1% содержат уязвимости, а 5,2% с высокой вероятностью вредоносны. Каждый четвёртый скилл с дырой, каждый двадцатый с закладкой. NVIDIA выпустила открытый сканер SkillSpector, который проверяет скилл до установки и выносит вердикт по шкале от 0 до 100.

Скилл для ИИ-агента (расширение, которое добавляет агенту новую способность, например работу с почтой или базой данных) давно перестал быть простым текстовым файлом с промптом. Скилл может содержать исполняемый код на Python или Bash, и этот код запускается с правами самого пользователя.

Проблема в том, что разработчики редко проверяют сторонние скиллы перед установкой. Об этом пишет инженер Эдгар Сипки, который более 10 лет работает с backend-системами и ИИ-инструментами и выступает на конференциях AI Conf, HighLoad и TeamLead Conf.

Какие именно угрозы прячутся в скиллах?

Промпт-инъекции (prompt injection это внедрение скрытых команд, которые агент принимает за свои собственные инструкции) лишь одна из категорий. Полный набор включает:

  • Сбор переменных окружения с вашими API-ключами и токенами (токен, это уникальный код доступа к сервису)
  • Отправку контекста наружу, когда скилл тихо пересылает вашу переписку или код на чужой сервер
  • Тайпсквоттинг, когда вредоносный скилл маскируется под популярный, изменив одну букву в названии

Скиллы, содержащие исполняемые скрипты (файлы .py или .sh), уязвимы в 2,12 раза чаще, чем скиллы без кода.

Что понадобится

  • SkillSpector от NVIDIA, открытый сканер скиллов (устанавливается через uv, в PyPI пакета нет)
  • uv, менеджер пакетов Python (если ещё не стоит, инструкция на сайте проекта)
  • Node.js с npx для автоматизации установки скиллов
  • Терминал с доступом к командной строке (macOS, Linux или WSL на Windows)
  • 10 минут на установку и настройку алиаса

Пошаговая инструкция

  1. Установите SkillSpector одной командой. Пакета в PyPI нет, команда pip install skillspector не сработает. Используйте uv:
uv tool install git+https://github.com/NVIDIA/skillspector.git

Альтернативы: сборка из исходников (git clone + make install) или Docker, подробности в README проекта.

  1. Запустите сканирование нужного скилла. На вход можно подать git-ссылку, zip-архив, локальную директорию или отдельный файл SKILL.md:
skillspector scan https://github.com/owner/repo --format terminal
  1. Прочитайте вердикт. Сканер выдаёт risk_score от 0 до 100 и один из трёх вердиктов: SAFE, CAUTION или DO_NOT_INSTALL. Отчёт доступен в форматах terminal, json, markdown и sarif.

  2. Автоматизируйте проверку через алиас. Главная проблема не отсутствие инструмента, а то, что разработчики забывают им пользоваться. Добавьте в ~/.zshrc или ~/.bashrc функцию, которая сначала сканирует, а потом ставит:

safeskill() {
  local repo="$1"
  [ -z "$repo" ] && { echo "usage: safeskill <owner/repo>"; return 2; }

  echo "SkillSpector проверяет $repo ..."
  skillspector scan "https://github.com/$repo" --format terminal
  local scan_exit=$?

  case "$scan_exit" in
    0)
      echo "risk_score <= 50 - ставлю скилл"
      npx skills add "$repo"
      ;;
    1)
      echo "risk_score > 50 (DO_NOT_INSTALL) - смотри находки выше."
      printf "Всё равно установить %s? [y/N] " "$repo"
      read -r REPLY
      case "$REPLY" in
        [yY]|[yY][eE][sS])
          echo "Ставлю несмотря на предупреждение скана"
          npx skills add "$repo"
          ;;
        *)
          echo "Отменено."
          return 1
          ;;
      esac
      ;;
    *)
      echo "Скан упал (exit=$scan_exit)"
      return 2
      ;;
  esac
}

Теперь вместо npx skills add owner/repo пишете safeskill owner/repo, и сканирование происходит автоматически.

  1. Для агентного режима сделайте отдельный скилл-проверщик. В Cursor Agent Mode, VS Code Agent и подобных средах вы не всегда управляете терминалом напрямую. Создайте скилл, который заставит агента проверять каждый новый скилл перед установкой через SkillSpector.

Почему сам сканер не уязвим к промпт-инъекции?

Закономерный вопрос: если SkillSpector скармливает содержимое скилла языковой модели для анализа, не «уговорит» ли вредоносный скилл сканер сказать «всё чисто»? Ответ: нет, и вот почему.

  • Статический анализ идёт первым. Regex, AST-разбор (автоматический разбор структуры кода), правила YARA и проверка зависимостей через OSV.dev не «читают» инструкции. Они сопоставляют паттерны. Уговорить регулярное выражение невозможно.
  • Языковая модель здесь классификатор, а не агент. У неё нет доступа к файлам, сети и инструментам. Единственный выход модели: структурный вердикт в формате JSON.
  • Системный промпт (system prompt, скрытая инструкция, которую задаёт разработчик) защищён от перехвата. Стадия LLM-анализа намеренно содержит анти-джейлбрейк.
  • Сама попытка инъекции становится уликой. Текст вроде «ignore previous instructions» срабатывает как триггер паттернов Instruction Override и Hidden Instructions. Инъекция не прячется от сканера, а подсвечивает скилл.

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

Одна принципиальная оговорка: SkillSpector проверяет 64 и более паттернов в 16 и более категориях (в свежих релизах уже 68 паттернов в 17 категориях), но ни один сканер не гарантирует стопроцентной защиты.

Как это выглядит на практике

Допустим, вы нашли на маркетплейсе скилл для работы с базой данных. Запускаете:

safeskill cooldev/db-skill

Сканер находит в файле setup.sh команду, которая читает переменные окружения и отправляет их POST-запросом на внешний сервер. Вердикт: DO_NOT_INSTALL, risk_score 87. Алиас спрашивает подтверждение. Вы отказываетесь, и скилл не устанавливается. Без сканера этот код запустился бы с вашими правами и утёк бы вместе с API-ключами.

Частые ошибки
  • Проверять скиллы собственным ИИ-агентом. Агент может выполнить вредоносный код из скилла ещё до того, как вы увидите результат проверки. Используйте отдельный инструмент.
  • Ставить через pip install skillspector. Пакета в PyPI нет, команда просто не сработает. Устанавливайте только через uv из GitHub-репозитория.
  • Игнорировать вердикт CAUTION. Промежуточный вердикт не значит «безопасно». Просмотрите конкретные находки в отчёте прежде, чем ставить.
  • Забывать, что скилл работает с вашими правами. Если ваш агент имеет доступ к рабочим файлам, ключам и сервисам, вредоносный скилл получает тот же доступ.

Что делать с этим прямо сейчас?

Разработчику. Поставьте SkillSpector и настройте алиас safeskill. Десять минут сейчас сэкономят часы разбора инцидента потом. Привычка «сканируй до установки» работает как npm audit, только для скиллов ИИ-агентов.

Автору Дзена и контент-мейкеру. Если вы пользуетесь ИИ-агентами с расширениями (Cursor, Copilot, Claude с MCP), prompt injection это не абстрактная угроза, а конкретный способ увести ваши ключи от API или слить черновики. Проверяйте, что именно вы подключаете.

Предпринимателю. Разделяйте данные и инструкции: агент должен обрабатывать входящий текст как данные, а не как команду. Если ваша команда использует сторонние скиллы, введите правило: ни один скилл не ставится без сканирования.

Мнение редакции dzen.guru

SkillSpector решает правильную задачу: сдвигает проверку на этап до установки, а не после инцидента. По моим наблюдениям, большинство тех, кто работает с ИИ-агентами, вообще не задумываются о безопасности расширений, как мы годами не думали о зависимостях в npm до первых громких атак через supply chain. Ключевая мысль из материала Эдгара Сипки точна: «разделяйте данные и инструкции». Это фундаментальный принцип, и именно его нарушение делает prompt injection возможной. Сканер сдвигает шансы в вашу пользу, но думать всё равно вам.

Пусть ваш агент остаётся тем, кто думает, а не тем, кто слепо исполняет чужие команды.

Научитесь работать с ИИ безопасно

В dzen.guru разбираем не только возможности нейросетей, но и риски. Подпишитесь, чтобы не пропустить практические гайды по безопасной работе с ИИ-агентами.

Подписаться
Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Локальная нейросеть на ПК с 4 ГБ видеопамяти: пошаговая настройка без облака и подписок
ai

Локальная нейросеть на ПК с 4 ГБ видеопамяти: пошаговая настройка без облака и подписок

Локальная нейросеть на домашнем ПК с Windows 11 решает конкретную задачу: вы получаете языковую модель, которая работает без облака, без подписки и без…

7 мин
37% новых треков на Яндекс Музыке сгенерированы: нейросеть для создания музыки научились детектить без GPU
ai

37% новых треков на Яндекс Музыке сгенерированы: нейросеть для создания музыки научились детектить без GPU

Нейросеть для создания музыки бесплатно генерирует треки, которые уже составляют больше трети новых релизов на Яндекс Музыке, и теперь есть способ отличить их…

5 мин
ai

Компьютерное зрение на палубе судна: как трёхуровневая валидация убирает ложные тревоги

Компьютерное зрение (computer vision, технология, позволяющая нейросети «видеть» и анализировать изображения с камер) на открытой палубе судна сталкивается с…

7 мин