Shield — Runtime защита
3 вектора атаки, 7 уровней анализа, <1мс
~8 мин чтения
Обзор pipeline
Каждая команда, выполняемая через FlowLink, проходит через 7 уровней анализа. Уровни обрабатываются последовательно, и критические находки блокируют выполнение немедленно.
⚡ Latency: <1ms per command
Пайплайн оптимизирован для минимальной задержки. Команды анализируются в памяти без внешних вызовов.
L1: Docker Escape Detection
Обнаружение попыток побега из Docker контейнера. Критический уровень — блокирует выполнение.
-v /:/hostCRITICALMount root filesystem of host into container
Атакующий получает полный доступ к файловой системе хоста
--privilegedCRITICALGrant extended privileges to this container
Контейнер получает почти те же права, что и процесс на хосте
--pid=hostCRITICALUse the host process namespace
Возможность видеть и сигнализировать процессам на хосте
--network=hostWARNINGUse the host network namespace
Контейнер использует сетевой стек хоста, может слушать на портах
--cap-add=ALLWARNINGAdd all Linux capabilities
Полные права на выполнение системных вызовов
L2: Data Exfiltration
Обнаружение утечки данных через network. Критический уровень — блокирует выполнение.
cat .env | curlBLOCKEDReading .env and piping to external HTTP request
Классический паттерн exfiltration через HTTP
cat /etc/shadow | ncBLOCKEDReading shadow file and sending via netcat
Утечка хешей паролей через raw TCP
curl -T /etc/passwdBLOCKEDUploading sensitive file via curl
Прямая загрузка файла на внешний сервер
wget --post-fileBLOCKEDSending file content via POST request
Exfiltration через wget POST
Detects:
L3: Sensitive Files Access
Чтение критических системных файлов. WARNING уровень — требует одобрения.
/etc/shadowWARNINGReading password hashes
Хеши паролей могут быть использованы для brute-force атаки
~/.ssh/WARNINGAccessing SSH keys
Приватные ключи для авторизации на других серверах
.envWARNINGReading environment variables
Могут содержать API ключи, пароли, секреты
/proc/*/environWARNINGReading process environment
Может содержать секреты других процессов
aws/credentialsWARNINGReading AWS credentials
Ключи для доступа к AWS ресурсам
Мониторимые пути:
/etc/shadow, /etc/passwd, /etc/sudoers ~/.ssh/id_*, ~/.ssh/config *.env, .env.*, dotenv .aws/credentials, .aws/config /proc/*/environ, /proc/*/cmdline ~/.kube/config, ~/.docker/config.json ~/.pgpass, ~/.mylogin.cnf
L4: Destructive Commands
Разрушительные операции без возможности отката. CRITICAL уровень — блокирует выполнение.
rm -rf /CRITICALRecursive force delete from root
Удаление всей файловой системы
mkfs.*CRITICALCreating filesystem
Форматирование диска — полная потеря данных
dd if=/dev/zeroCRITICALZeroing device
Затирание содержимого диска нулями
> /dev/sdaCRITICALWriting directly to disk device
Разрушение данных на диске
chmod 000WARNINGRemoving all permissions
Файлы становятся недоступными
L5: Network Operations
Сетевые операции: reverse shell, туннели, проброс портов. CRITICAL уровень.
bash -i >& /dev/tcp/CRITICALReverse shell via bash TCP device
Интерактивный shell подключается к внешнему серверу
socat TCP-L:*CRITICALPort forwarding via socat
Проброс портов для обхода firewall
ssh -R *:CRITICALSSH reverse tunnel
Обратный туннель для доступа к внутренней сети
nc -l *WARNINGNetcat listener
Может быть использовано для приёма данных
Detects:
L6: Privilege Escalation
Попытки повышения привилегий. ASK уровень — требует одобрения.
sudoASKExecuting command as superuser
Получение root прав
su -ASKSwitching user
Смена пользователя с вводом пароля
pkexecASKPolicyKit execute
Выполнение команды с правами polkit
chmod 777WARNINGMaking file world-writable
Создание файла с полными правами
chown rootWARNINGChanging ownership to root
Изменение владельца на root
L7: Custom Policy Rules
Пользовательские правила из политик: allow/deny паттерны с glob.
Примеры политик
docker ps*ALLOWpriority:100List docker containers*rm -rf*DENYpriority:200Block recursive deletenpm installALLOWpriority:100Allow npm installcurl * | bashDENYpriority:300Block pipe to bashПравила с более высоким priority перезаписывают правила с низким priority. DENY всегда имеет приоритет над ALLOW при одинаковом priority.
Режимы одобрения
Auto
Команды выполняются автоматически. Блокировка только для CRITICAL уровней (L1, L4, L5).
Use case: Development, доверенные окружения
Soft Ask
Подтверждение для WARNING+ уровней. timeout 5 мин, затем auto-reject.
Use case: Staging, production-like
Hard Ask
Все команды требуют явного одобрения. Максимальный контроль.
Use case: Production, критические системы
Модель угроз
FlowLink спроектирован с расчётом на компрометацию каждого компонента. Ниже — анализ трёх ключевых сценариев и механизмы минимизации ущерба.
Сценарий 1: Скомпрометирован AI-агент
Атакующий получил контроль над AI-агентом через prompt injection, poisoned tool response или уязвимость в модели. Агент пытается выполнить вредоносные команды.
Shield — 7 уровней анализа
Каждая команда проходит pipeline: Docker escape, exfiltration, sensitive files, destructive ops, network ops, privilege escalation, custom policies. Критические — блокируются.
Approval workflow
В режимах Soft Ask и Hard Ask подозрительные команды требуют явного подтверждения через Telegram или Dashboard. Таймаут = auto-reject.
Секреты изолированы
Агент никогда не видит plaintext секретов. Secret Injection подставляет значения только в env vars конкретного exec-вызова. Секреты хранятся encrypted в DB и расшифровываются relay «на лету».
Scope на host + org
Агент привязан к конкретному хосту и организации. Не может выполнять команды на других хостах или обращаться к секретам других org.
💥 Ущерб ограничен: агент заблокирован на уровне relay, секреты не утекли, другие хосты/org не затронуты.
Сценарий 2: Скомпрометирован Relay
Атакующий получил доступ к relay-серверу. Самый серьёзный сценарий — relay видит все команды и управляет routing.
Шифрование секретов в DB (AES-256-GCM)
Секреты хранятся encrypted с per-org ключами. Relay расшифровывает только в момент injection. Компрометация DB не даёт plaintext.
Separation of encryption keys
Ключ шифрования секретов отделён от ключа relay. Хранится в env / Vault, не в DB. Компрометация relay + DB ≠ компрометация секретов без ключа.
Ограниченные токены (scoped tokens)
API-ключи relay имеют минимально необходимый scope: read commands, write audit. Не могут создавать новых пользователей, менять политики или выводить секреты.
Полный audit trail
Каждая команда, каждый доступ к секретам, каждый login логируется с timestamp, IP, agent ID. Аномалии видны постфактум.
⚠️ Ущерб: атакующий видит проходящие команды, но не может расшифровать секреты без отдельного ключа. Audit trail фиксирует все действия.
Сценарий 3: Скомпрометирован Control Plane
Атакующий получил доступ к dashboard/API. Может менять политики, видеть организации, управлять агентами.
httpOnly cookies + CSRF protection
Токены авторизации хранятся в httpOnly, Secure, SameSite=Lax cookies. XSS на dashboard не может украсть токены. JavaScript не имеет доступа к cookie.
RBAC: роли и org isolation
Каждый пользователь привязан к org с ролью (owner/admin/member). Cross-org доступ невозможен. Platform admin ≠ org admin.
2FA для критических действий
Удаление агентов, смена политик, вывод секретов — требуют повторной аутентификации или 2FA.
Immutable audit log
Логи нельзя удалить или изменить — только дописать. Даже компрометация control plane не позволяет скрыть следы.
🛡️ Ущерб ограничен: атаки на dashboard не дают доступ к секретам (они на relay), атаки на API ограничены RBAC и audit trail.
Архитектура разделения ответственности
🤖
Agent
Выполняет команды
Не видит секреты
Scoped к хосту
🔀
Relay
Анализ + routing
Инжектит секреты на лету
Не хранит ключи шифрования
☁️
Control Plane
Управление + аудит
Не видит plaintext секретов
RBAC + immutable logs
Ни один компонент не имеет полного доступа. Ущерб от компрометации любого одного компонента ограничен.
Secret Discovery (Roadmap)
BETAАвтоматическое обнаружение, шифрование и централизация секретов из инфраструктуры. AI-агент получает доступ к секретам через relay — никогда не видит plaintext.
Pipeline: 4 шага
🔍
1. Scan
Инвентаризация сервисов, конфигов, .env, DSN
🔐
2. Encrypt
E2EE на агенте → relay видит только ciphertext
🏦
3. Store
Vault / encrypted DB с иерархией по host/service
💉
4. Inject
JIT injection в env vars агента — без plaintext
Что обнаруживается
🐘 PostgreSQL
pg_hba.conf, .pgpass, DATABASE_URL
🐬 MySQL
my.cnf, ~/.mylogin.cnf
🔴 Redis
redis.conf, requirepass
📊 Prometheus
prometheus.yml, alertmanager
🔔 Zabbix
zabbix.conf, API tokens
🐰 RabbitMQ
rabbitmq.conf, user credentials
🐳 Docker
config.json, .env, compose
☸️ Kubernetes
kubeconfig, secrets, service accounts
☁️ AWS/GCP
credentials, config, IAM
Как это работает
<strong className="text-white">Администратор запускает discovery</strong> — указывает scope: какие директории, сервисы, типы файлов сканировать. AI-агент НЕ может запустить discovery сам.
<strong className="text-white">Агент сканирует хост</strong> — находит конфиги, DSN, credentials, API tokens. Парсит только то, что указано в scope.
<strong className="text-white">E2EE шифрование на агенте</strong> — данные шифруются локально ключом org. Relay видит только ciphertext + метаданные (имя сервиса, тип, хост).
<strong className="text-white">Approval на запись</strong> — список найденных секретов (без значений!) показывается в dashboard/Telegram. Админ подтверждает: какие записать в Vault.
<strong className="text-white">Запись в Vault / encrypted DB</strong> — секреты раскладываются по иерархии: <code className="text-[#aaa]">env/{"{host}"}/{"{service}"}/...</code>. Версионность + метаданные.
<strong className="text-white">JIT injection при работе агента</strong> — агент просит «DSN для прод-БД сервиса X». Relay достаёт из Vault, инжектит в env vars exec-вызова. LLM видит только имя, не значение.
⛔ Safety-ограничения
Явный opt-in, не auto-scan
Администратор определяет scope перед каждым запуском. Никакого «поставили и забыли». Discovery запускается вручную или по расписанию, подтверждённому админом.
AI-агент НЕ запускает discovery
Discovery — привилегированная операция для DevSecOps/admin. Агент может только использовать уже одобренные секреты через injection.
Approval на запись в Vault
Список найденных секретов показывается без значений. Админ выбирает какие записать, какие проигнорировать, какие удалить из результатов.
Audit trail: полное логирование
Кто запустил scan, что найдено (тип + путь, без значения), что записано в Vault, какие injection были. Всё immutable.
Scope ограничен host + service
Агент не может запросить секреты с другого хоста или для другого сервиса. Injection проверяет org + host + service соответствие.
💡 Продуктовый стори
«Мы не только контролируем команды AI-агентов, но и помогаем автоматически собрать и централизовать секреты из инфраструктуры в Vault и управлять доступом агентов к ним. Агент никогда не видит plaintext — только запрашивает доступ, relay инжектит на лету.»
Сравнение с альтернативами
Они следят за контейнерами и сетью. FlowLink — за AI-агентами.
| Falco | Tetragon | Cilium | FlowLink | |
|---|---|---|---|---|
| Назначение | Runtime security | eBPF tracing | Networking + CNI | AI agent security |
| Фокус | Контейнеры | Kernel events | Сеть / L3-L4 | Команды AI-агентов |
| MCP-протокол | ✗ | ✗ | ✗ | ✓ нативно |
| Approval workflow | ✗ | ✗ | ✗ | Telegram + Dashboard |
| 7-уровневый pipeline | ✗ | ✗ | ✗ | ✓ |
| Pattern Learning | ✗ | ✗ | ✗ | ✓ auto-правила |
| Настройка | Сложная | Средняя | Сложная | 1 строка + curl |
Дополнение, не замена
FlowLink дополняет Falco/Tetragon. Они защищают контейнеры и сеть, FlowLink — защищает от AI-агентов. Можно использовать вместе.