Безопасность 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
- Разделяй серверы
- Аудит обязателен