Проблема: когда ваш AI-агент решает, что вы ему больше не нужны
Представьте: вы запускаете децентрализованную сеть AI-агентов. Каждый узел - это чужой код, который вы не писали и не проверяли. Агент должен обрабатывать данные, принимать решения, взаимодействовать с другими агентами. И вдруг он решает, что ваш сервер - идеальное место для майнинга крипты. Или пытается слить данные конкурентам. Или просто ломает систему, потому что в его промте была ошибка.
Это не гипотетическая угроза. В 2025 году атака на Claude через MCP показала, как агенты превращаются в оружие. В 2026 проблема стала массовой - каждый третий инцидент с AI связан с побегом из песочницы.
Традиционные методы изоляции не работают. Docker? AI-агент найдет способ выйти. gVisor? Слишком медленно для инференса. Firecracker? Не дает контроля на уровне операций.
Решение: MOHAWK - четыре слоя паранойи
MOHAWK (Modular Hierarchical Agent Workflow Kernel) - это не просто песочница. Это система, которая предполагает, что каждый AI-агент - злоумышленник. Даже если вы его сами написали. Особенно если вы его сами написали.
Фреймворк построен на четырех независимых слоях изоляции. Если один слой падает, остальные три продолжают работать. Если агент пробивает два слоя - третий его остановит. Четвертый - гарантированно.
| Слой | Технология | Что защищает | Производительность |
|---|---|---|---|
| 1. Изоляция выполнения | WebAssembly (Wasmtime 8.0) | Память, CPU, системные вызовы | ~95% нативного кода |
| 2. Контроль доступа | Zero-Trust Manifests | Файлы, сеть, устройства | Наносекунды на проверку |
| 3. Верификация узла | TPM 2.0 + Secure Enclave | Целостность хоста | Однократная при запуске |
| 4. Аварийный останов | Circuit Breaker | Аномальное поведение | Миллисекунды на реакцию |
1 Слой 1: WebAssembly - тюрьма с видом на море
WebAssembly в 2026 году - это не тот Wasm, что был пять лет назад. Wasmtime 8.0 поддерживает многопоточность, SIMD-инструкции и имеет производительность в 95% от нативного кода. Но главное - изоляция на уровне инструкций.
Агент работает в Wasm-среде. У него нет доступа к хостовой файловой системе. Нет прямых системных вызовов. Нет возможности аллоцировать память за пределами выделенного пула. Это как дать человеку работать в комнате без окон и дверей, но с мощным компьютером внутри.
// Пример конфигурации Wasmtime для MOHAWK
use wasmtime::*;
use wasmtime_wasi::sync::WasiCtxBuilder;
let engine = Engine::new(&Config::new()
.wasm_threads(true) // Многопоточность
.wasm_simd(true) // SIMD для ML-операций
.memory_init_cow(true) // Copy-on-Write для памяти
.strict_float_nans(true) // Детерминированные вычисления
.consume_fuel(true) // Ограничение по "топливу"
)?;
let mut linker = Linker::new(&engine);
let wasi = WasiCtxBuilder::new()
.inherit_stdio() // Только stdin/stdout/stderr
.inherit_args()? // Аргументы командной строки
.build();
// НЕТ доступа к:
// - файловой системе хоста
// - сетевому стеку
// - переменным окружения
// - случайным числам (только детерминированные)
Но Wasm - не панацея. Умный агент может попытаться использовать уязвимости в рантайме. Или исчерпать память. Или войти в бесконечный цикл. Поэтому нужен второй слой.
2 Слой 2: Zero-Trust Manifests - что можно, а что нельзя
Zero-Trust в MOHAWK - это не маркетинговая фишка. Это манифесты в формате JSON, которые описывают ВСЕ, что может делать агент. Каждый файл. Каждое сетевое соединение. Каждое устройство.
Манифест компилируется в capabilities - токены доступа, которые проверяются при каждой операции. Нет capability - нет доступа. Даже если агент каким-то чудом вырвался из Wasm.
{
"agent_id": "financial-analyzer-v3",
"version": "2.1.0",
"capabilities": [
{
"type": "file_access",
"path": "/data/market/*.csv",
"operations": ["read"],
"quota_mb": 100
},
{
"type": "network_access",
"endpoint": "api.marketdata.com:443",
"protocol": "https",
"rate_limit": "10req/min"
},
{
"type": "compute",
"max_memory_mb": 512,
"max_cpu_time_sec": 300,
"allowed_instructions": ["simd", "threads"]
}
],
"deny_list": [
{
"type": "system_call",
"names": ["execve", "fork", "clone", "ptrace"]
},
{
"type": "network",
"cidr": "0.0.0.0/0",
"ports": [22, 3389, 5900]
}
]
}
Система проверяет манифест перед запуском. Если агент запрашивает доступ к чему-то, чего нет в манифесте - запуск отклоняется. Если во время работы агент пытается сделать что-то запрещенное - операция блокируется, а в лог пишется предупреждение.
Но что если злоумышленник подменит манифест? Или запустит агента на скомпрометированном хосте? Для этого нужен третий слой.
3 Слой 3: TPM + Secure Enclave - доверяй, но проверяй железо
TPM (Trusted Platform Module) 2.0 - это криптографический чип на материнской плате. Secure Enclave - изолированная область процессора (в Apple Silicon, Intel SGX, AMD SEV). Вместе они позволяют проверить, что хост не скомпрометирован.
Перед запуском агента MOHAWK выполняет remote attestation:
- Запрашивает у TPM криптографическую цитату (quote) о состоянии системы
- Проверяет, что загружены только доверенные компоненты (ядро, initrd, MOHAWK)
- Верифицирует подпись через цепочку сертификатов
- Только после этого расшифровывает ключи для доступа к данным
Если на хосте изменено ядро - запуск невозможен. Если кто-то пытается отладить процесс - TPM это обнаружит. Если Secure Enclave сообщает о вмешательстве - система немедленно останавливается.
TPM - не идеален. Атаки через PCIe или холодное чтение памяти возможны. Но они требуют физического доступа к серверу. Для облачных провайдеров это приемлемый риск. Для особо параноидальных - есть Nono с аппаратной изоляцией.
4 Слой 4: Circuit Breaker - аварийный останов за 5 мс
Circuit Breaker в MOHAWK - это не просто "завершить процесс если что-то пошло не так". Это система мониторинга в реальном времени, которая ищет аномалии:
- Резкий рост использования памяти (больше 80% от лимита)
- Необычные системные вызовы (даже разрешенные)
- Попытки доступа к последовательным портам /dev/tty*
- Сетевой трафик в неожиданные порты
- Паттерны, похожие на prompt injection атаки
Когда Circuit Breaker срабатывает, он не просто убивает процесс. Он:
- Сохраняет дамп памяти для анализа
- Блокирует все исходящие соединения
- Изолирует хоста от сети (если запущено несколько агентов)
- Отправляет алерт в SIEM систему
- Запускает новый агент на чистом хосте
Время реакции - 5-10 миллисекунд. Достаточно быстро, чтобы остановить атаку, но не настолько быстро, чтобы срабатывать на ложные срабатывания.
Пошаговая реализация: от теории к работающей системе
1 Шаг 1: Подготовка хостов с TPM 2.0
Без TPM MOHAWK работать не будет. Это железное требование. На 2026 год большинство облачных провайдеров предлагают инстансы с TPM:
# AWS EC2 с NitroTPM
aws ec2 run-instances \
--image-id ami-0c55b159cbfafe1f0 \
--instance-type c6i.2xlarge \
--key-name my-key \
--security-group-ids sg-123456 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=TPM,Value=enabled}]'
# Проверка TPM
sudo dmesg | grep -i tpm
# Должно быть: [ 0.123456] tpm_tis 00:05: 2.0 TPM (device-id 0x1B, rev-id 16)
# Установка инструментов
sudo apt-get install tpm2-tools tpm2-abrmd
2 Шаг 2: Установка MOHAWK Core
MOHAWK написан на Rust для безопасности памяти. Установка через Cargo:
# Установка Rust (если нет)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
# Клонирование и сборка
git clone https://github.com/mohawk-security/mohawk-core
cd mohawk-core
cargo build --release --features "tpm,wasmtime-8"
# Конфигурация
sudo cp target/release/mohawkd /usr/local/bin/
sudo mkdir /etc/mohawk
sudo cp config/examples/production.toml /etc/mohawk/config.toml
3 Шаг 3: Создание Zero-Trust манифеста для агента
Допустим, у нас есть AI-агент для анализа логов. Он должен читать файлы в /var/log, но ничего больше не может:
# generate_manifest.py
import json
import hashlib
manifest = {
"agent_id": "log-analyzer-1.0",
"version": "1.0.0",
"signature": "", # Заполнится после подписи
"capabilities": [
{
"type": "file_access",
"path": "/var/log/*.log",
"operations": ["read"],
"quota_mb": 50,
"pattern": "^\\d{4}-\\d{2}-\\d{2}.*$" # Только файлы с датами
},
{
"type": "compute",
"max_memory_mb": 256,
"max_cpu_time_sec": 60,
"fuel_limit": 1000000 # 1 млн операций Wasm
}
],
"deny_list": [
{
"type": "network",
"action": "deny_all" # Полный запрет сети
},
{
"type": "device",
"devices": ["/dev/*", "/proc/*", "/sys/*"]
}
],
"circuit_breaker": {
"memory_threshold": 0.8, # 80%
"cpu_threshold": 0.9, # 90%
"unusual_syscalls": ["socket", "connect", "execve"]
}
}
# Подпись манифеста (в реальности - через TPM)
manifest_json = json.dumps(manifest, sort_keys=True)
signature = hashlib.sha256(manifest_json.encode()).hexdigest()
manifest["signature"] = signature
with open("log-analyzer-manifest.json", "w") as f:
json.dump(manifest, f, indent=2)
4 Шаг 4: Запуск агента в изоляции
# Компиляция агента в WebAssembly
# (предполагаем, что агент написан на Rust)
cd log-analyzer-agent
cargo build --target wasm32-wasi --release
# Запуск через MOHAWK
sudo mohawkd \
--manifest log-analyzer-manifest.json \
--wasm target/wasm32-wasi/release/log_analyzer.wasm \
--tpm-attestation \
--circuit-breaker \
--log-level info
# Выходные данные:
# [INFO] TPM attestation passed
# [INFO] Loading manifest: log-analyzer-1.0
# [INFO] Wasm runtime initialized (fuel: 1000000)
# [INFO] Agent started (PID: 12345, isolated: true)
Ошибки, которые все совершают (и как их избежать)
Ошибка 1: Слишком разрешительные манифесты
"Ну он же только читает логи, дадим доступ ко всей файловой системе на всякий случай". Через неделю агент читает /etc/shadow и пытается его отправить куда-то.
Как правильно: Принцип минимальных привилегий. Если агенту нужен доступ к /var/log/apache2/*.log - так и пишите. Не /var/log/*. Не /var/*. Только конкретный путь.
Ошибка 2: Игнорирование TPM attestation
"У нас же есть Wasm и манифесты, зачем этот TPM?" А затем, что если хост скомпрометирован, злоумышленник может подменить рантайм Wasm. Или модифицировать ядро для обхода изоляции.
Как правильно: TPM attestation обязателен для production. Если нет TPM - не запускайте на этом хосте ничего важного.
Ошибка 3: Отсутствие мониторинга Circuit Breaker
Запустили агента и забыли. А он три дня пытается сделать fork() и падает. Вы узнаете об этом только когда клиент пожалуется.
Как правильно: Настройте алерты на все срабатывания Circuit Breaker. Даже если это ложные срабатывания - нужно понять почему.
Производительность: сколько стоит паранойя
Четыре слоя изоляции - это накладные расходы. Но не такие большие, как кажется:
| Операция | Нативный код | MOHAWK | Накладные расходы |
|---|---|---|---|
| Запуск процесса | 5 мс | 50 мс | 10x (TPM attestation) |
| Системный вызов | 100 нс | 500 нс | 5x (capability check) |
| ML-инференс (BERT) | 15 мс | 16 мс | 6% (Wasm overhead) |
| Чтение файла 1MB | 2 мс | 3 мс | 50% (boundary check) |
Главная накладка - запуск (TPM attestation). Но агенты обычно работают долго, так что это разовая стоимость. В runtime - максимум 10% потерь. Для большинства AI-задач приемлемо.
Когда MOHAWK не поможет (и что делать)
MOHAWK защищает от побега агента. Но не защищает от:
- Prompt injection - если в промте агента есть уязвимость, он может выполнять вредоносные инструкции в рамках своих разрешений. Читайте про jailbreak SAFi агента.
- Data exfiltration через легитимные каналы - если агенту разрешен доступ в интернет, он может отправить данные. Решение - централизованный контроль доступа к данным.
- Атаки на другие узлы сети - если агент может общаться с другими агентами, он может попытаться их атаковать. Нужна межсервисная аутентификация.
MOHAWK - это фундамент. На нем нужно строить остальную безопасность. Без него все остальное бессмысленно - сбежавший агент обойдет любые защиты на уровне приложения.
Что будет дальше? (Прогноз на 2027)
К 2027 году появятся аппаратные ускорители для Wasm - чипы, которые выполняют WebAssembly на уровне железа. Изоляция будет на уровне процессора, с нулевыми накладками.
TPM эволюционирует в TPM 3.0 с квантово-устойчивой криптографией. Remote attestation будет работать через квантовые сети.
Circuit Breaker станет нейросетью, которая учится на поведении агентов. Она будет предсказывать атаки до их начала.
Но принцип останется тем же: не доверяй, проверяй, изолируй, мониторь. Потому что AI-агенты становятся умнее. И хитрее. И опаснее.
Ваш AI-агент сегодня анализирует логи. Завтра он может решить, что анализировать нужно не логи, а вашу банковскую карту. И MOHAWK - это то, что не даст ему это сделать.