Урок 07

Безопасность MCP-сервера

MCP создаёт границу доверия между агентом и твоим приложением.

Что MCP НЕ защищает

Протокол обеспечивает:

  • TLS
  • OAuth-идентификацию
  • Схему аргументов

Всё остальное — твоя ответственность: allowlist, классификация данных, rate limiting, human-in-the-loop.

Tool Description Injection

Описание tool — часть промпта. Злоумышленник может добавить инструкции в описание.

Защита:

  • Пинь версии серверов
  • Проверяй описания при обновлении
  • Не доверяй незнакомым MCP-серверам

Prompt Injection

Результат tool может содержать инструкции. Модель не отличает данные от директив.

Защита:

  • Тегируй untrusted данные
  • Требуй подтверждения для опасных действий
  • Классификатор на выводе tool

Confused Deputy

Один токен на все tools — компромисс одного даёт доступ ко всем.

Защита:

  • Разделяй серверы по домену
  • Least privilege токены
  • Отдельные процессы

Аудит

Веди лог всех вызовов:

Log::info('MCP call', [
    'tool' => $request->tool,
    'user' => $request->user()->id,
    'args' => $request->all(),
]);

Итоги

  • MCP защищает только транспорт
  • Tool description injection
  • Prompt injection
  • Confused deputy
  • Разделяй серверы
  • Аудит обязателен