Версия 0.1.0 · Модель угроз, митигации и защита от инъекций
| Угроза | Вектор | Митигация |
|---|---|---|
| Prompt injection | Сообщения пользователя, вывод инструментов/MCP | Скан паттернов, canary-токены, <untrusted>, принудительный L3 |
| Role spoofing | Маркеры system: во вводе |
Удаление role markers, validate_message_roles() |
| SSRF | Веб-поиск, исходящий HTTP | validate_url(), проверка редиректов, блок private IP |
| Несанкционированный API-доступ | HTTP без auth | Bearer auth, rate limiting |
| Flood | Высокий объём запросов | Token bucket (60/мин, burst 10) |
| Переполнение | Большие тела/вывод | Лимиты размеров |
| Подмена узла | RPC между узлами | TLS, Bearer, HMAC, mTLS |
sanitize_user_input():
- Обрезка до
max_user_input_chars(100 000) - Скан паттернов инъекций
- Удаление role markers
- Генерация canary (
SB-CANARY-<hex>)
При injection_detected: true → DGPD принудительно включает L3_FULL.
build_system_prompt() добавляет SECURITY BOUNDARY с canary.
wrap_untrusted() оборачивает вывод инструментов:
<untrusted source="tool_output">...</untrusted>safe_get() / safe_post() — валидация URL на каждом редиректе (макс. 3), блок localhost и private IP.
| Контроль | По умолчанию |
|---|---|
| Bearer auth | Обязателен в production |
| Rate limit | 60 req/мин, burst 10 |
| Тело запроса | 512 КБ (config) / 1 МБ (env) |
| CORS | Пустой список (запрет) |
ignore previous instructionsyou are now ...<system>/system:jailbreak,ADMIN OVERRIDE
Полный список: metis/security/injection.py → _INJECTION_PATTERNS
security:
max_user_input_chars: 100000
max_tool_output_chars: 50000
max_request_body_bytes: 512000
enforce_injection_scan: true
rate_limit:
requests_per_minute: 60
burst: 10log_security_event() — структурированный JSON без prompt, api_key, secret.
- ARCHITECTURE.md — DGPD и слои безопасности
- DEPLOYMENT.md — Docker hardening
Полная английская версия: ../en/SECURITY.md