qvib.pro
EN

Безопасность ИИ-агентов и MCP

Чужой MCP/навык — это чужой код у тебя с твоими правами. Проверяй до установки (supply-chain).

бесплатно профи

Почему это важно

MCP-сервер или навык исполняется на твоей машине, с твоими токенами и доступом к файлам, БД и сети. Установить недоверенный пакет — это по сути дать незнакомцу шелл с твоими правами. В экосистеме MCP уже находили реальные RCE-уязвимости и вредоносные пакеты — это не гипотеза.

Сценарий атаки. Ты ставишь популярно выглядящий «mcp-server-helper» из чьего-то репозитория командой npx. В postinstall-скрипте пакета — код, который читает твой ~/.aws/credentials, ~/.ssh/id_rsa и .env проекта и отправляет на чужой сервер. Агенту ты этого не приказывал — пакет сделал это сам при установке. Вариант помягче: пакет нормальный, но в обновлении автор (или угонщик его npm-аккаунта) добавил вредонос — классическая supply-chain атака.

Что делать (по шагам)

  1. Ставь только из доверенных источников — официальные реестры/верифицированные авторы, репозитории с историей и звёздами, а не случайные gist-ы.
  2. Читай исходник ДО установки. Минимум — SKILL.md/README, package.json (особенно scripts.postinstall/preinstall) и точку входа сервера:
# посмотреть, что пакет делает при установке, не запуская его
npm view <pkg> scripts
npm pack <pkg>            # скачать тарбол
tar -xzf <pkg>-*.tgz && grep -rn "child_process\|exec\|fetch\|https" package/
  1. Дай минимум прав: read-only к БД, узкий scope токена, доступ только к нужным папкам. Не выдавай агенту секреты, которые ему для задачи не нужны.
  2. Запускай в песочнице/контейнере, а не на основной системе с боевыми кредами:
docker run --rm -it --network none -v "$PWD":/work:ro node:22 bash
  1. Фиксируй версии и держи lock-файл. Обновляйся осознанно, читая changelog, а не «всё latest автоматом».
  2. Перед НЕОБРАТИМЫМ (миграция/деплой/удаление/деньги) — сначала бэкап/ветка, потом действие агента.

Чего НЕ делать

  • Не запускай curl ... | bash и установку из непроверенного источника вслепую.
  • Не давай боту/агенту админ-права и доступ к секретам «на всякий случай».
  • Не подключай MCP/навык, исходник которого не можешь посмотреть.
  • Не ставь пакеты с «typosquat»-именами (опечатка в названии популярного) — проверяй имя символ в символ.
  • Не отключай подтверждения опасных действий ради удобства.

Как проверить себя

  • Я открывал исходник/SKILL.md каждого установленного MCP/навыка.
  • Проверил postinstall/preinstall скрипты — там нет обращений к секретам и сети.
  • Токены, доступные агенту, имеют минимальный scope (БД — read-only, где можно).
  • Рискованное гоняю в контейнере/песочнице, а не на машине с боевыми кредами.
  • Версии зафиксированы, lock-файл закоммичен, обновления — осознанные.

Инструменты

  • Аудит зависимостей: npm audit, Socket.dev (детект вредоносных пакетов), Snyk, OSV-Scanner.
  • Изоляция: Docker, gVisor, отдельный пользователь ОС.
  • Контроль прав: scope-токены, read-only роли в БД, переменные окружения вместо общих ключей.
  • Чтение пакетов: npm pack / npm view <pkg> scripts перед установкой.