Когда ваш AI-агент хочет удалить весь диск
Вы запускаете локального AI-ассистента. Даете ему доступ к shell для автономной работы. И через пять минут он пытается выполнить rm -rf /home/* "для оптимизации системы". Знакомо? Если нет - вам просто повезло.
Nono - это не очередной контейнер или виртуальная машина. Это ядерная изоляция на уровне операционной системы, написанная на Rust. Инструмент, который превращает вашего потенциально опасного AI-агента в беззубого котенка, не давая ему трогать ничего лишнего.
На 05.02.2026 большинство локальных AI-агентов все еще работают с полными правами пользователя. Одна ошибка в промпте - и прощайся с данными.
Что делает Nono и почему это не Docker
Сравнивать Nono с Docker - как сравнивать бронежилет с картонной коробкой. Docker изолирует процессы, но внутри контейнера у агента все еще есть root-права. Nono работает иначе:
- Landlock LSM на Linux - механизм безопасности ядра, который ограничивает доступ к файловой системе на уровне системных вызовов
- Seatbelt на macOS - sandbox профили Apple, которые Apple использует для Safari и других приложений
- Аппаратное хранение ключей - API-ключи OpenAI, Anthropic и других сервисов никогда не попадают в память процесса
- Белый список команд - только разрешенные команды, все остальное блокируется
Если вы читали нашу статью про сравнение Docker, gVisor и Firecracker, то поймете: Nono работает на более низком уровне. Это не виртуализация, это политики безопасности в ядре.
Установка: больно, но безопасно
1 Собираем из исходников (потому что доверять бинарникам - глупо)
# Клонируем репозиторий (последняя версия на 05.02.2026 - 0.4.2)
git clone https://github.com/nono-security/nono.git
cd nono
# Проверяем подписи коммитов (если вы параноик)
git verify-commit HEAD
# Собираем с максимальной безопасностью
cargo build --release --features "landlock,tpm,yubikey"
Здесь важно: флаг landlock включает поддержку Landlock LSM (требует ядро Linux 5.13+). Флаги tpm и yubikey добавляют поддержку аппаратного хранения ключей. Если у вас нет TPM или YubiKey - не включайте их, иначе сборка упадет.
2 Настраиваем политики безопасности
Nono использует TOML-конфигурацию. Вот минимальный пример для запуска AI-агента с доступом только к одной директории:
# nono.toml
[agent]
name = "claude-desktop"
executable = "/opt/claude/claude"
[filesystem]
# Только чтение из этой директории
read = [
"/home/user/ai_workspace",
"/tmp/claude_cache"
]
# Запись только сюда
write = [
"/home/user/ai_workspace/output",
"/tmp/claude_cache"
]
# Все остальное запрещено
deny = ["/", "/home", "/etc", "/usr"]
[network]
# Разрешаем только HTTPS к API
allow_hosts = [
"api.openai.com:443",
"api.anthropic.com:443",
"api.groq.com:443"
]
# Блокируем все локальные подключения
deny_local = true
[commands]
# Белый список разрешенных команд
allowed = [
"ls",
"cat",
"grep",
"find",
"python3",
"pip",
"git" # но только с ограниченными флагами
]
# Черный список - переопределяет белый
blocked = [
"rm",
"dd",
"mkfs",
"shutdown",
"halt",
"poweroff",
"init",
"reboot"
]
Самая хитрая часть - настройка network политик. Nono использует seccomp-bpf на Linux для фильтрации системных вызовов connect(), bind(), accept(). На практике это значит: ваш агент не сможет открыть локальный сокет на 127.0.0.1:8080 и начать слушать подключения.
Аппаратные ключи: паранойя уровня спецслужб
Хранить API-ключи в .env файле - это 2023 год. В 2026-м мы используем TPM 2.0 или YubiKey. Nono поддерживает оба варианта:
# Сохраняем ключ OpenAI в TPM
nono key-store --tpm add openai-api-key
# Вводим ключ (он никогда не попадет на диск)
# SK-...
# Или используем YubiKey
nono key-store --yubikey add anthropic-api-key
При запуске агента Nono получает ключ напрямую из аппаратного модуля. Процесс агента его не видит - только Nono может использовать ключ для подписи запросов. Если кто-то дампнет память вашего AI-агента - он найдет только зашифрованные токены.
Важно: на macOS с Apple Silicon TPM встроен прямо в Secure Enclave. Настройка проще, но требует подписи кода вашим Apple ID для доступа к Keychain.
Запускаем агента в клетке
# Запуск с конфигурацией
nono run --config nono.toml \
--tpm-key openai-api-key \
--yubikey-key anthropic-api-key \
-- \
/opt/claude/claude --autonomous-mode
Что происходит под капотом:
- Nono загружает политики из TOML
- Инициализирует Landlock LSM (на Linux) или Seatbelt (на macOS)
- Загружает API-ключи из аппаратного хранилища
- Создает seccomp фильтр для системных вызовов
- Форкает процесс и применяет все ограничения
- Запускает агента в изолированном окружении
Если агент попытается выполнить запрещенную команду - он получит EPERM (Operation not permitted). Если попробует прочитать файл вне разрешенных путей - EACCES (Permission denied). Попытка сетевого подключения к запрещенному хосту? ECONNREFUSED.
Чем Nono отличается от AgentShield и Molteye
Если вы видели AgentShield - это инструмент для отката изменений. Molteye (из нашей статьи про мониторинг) следит за поведением. Nono предотвращает проблемы до их возникновения.
| Инструмент | Подход | Уровень изоляции | Производительность |
|---|---|---|---|
| Docker | Контейнеризация | Средний | Низкие накладные расходы |
| AgentShield | Снимки файловой системы | Высокий (post-factum) | Средние накладные расходы |
| Nono | Ядерные политики безопасности | Максимальный (preventive) | Минимальные накладные расходы |
Где Nono ломается (потому что ничего не идеально)
1. Linux 5.12 или старше. Landlock появился в 5.13. На старых ядрах Nono падает с ошибкой. Решение? Обновите ядро или используйте старый добрый chroot (но это уже не Nono).
2. Сигналы и IPC. Nono не блокирует сигналы. Злонамеренный агент может отправить SIGKILL другим процессам, если знает их PID. Правда, чтобы узнать PID, ему нужно выполнить ps, а он в черном списке.
3. Тайминговые атаки. Агент может измерять время выполнения операций и делать выводы о системе. Landlock не защищает от side-channel атак. Для этого нужен полноценный контейнер с изолированными ресурсами CPU.
4. macOS Sandbox limitations. Seatbelt на macOS не позволяет такие же тонкие настройки, как Landlock. Например, сложно разрешить запись только в определенные поддиректории, но запретить удаление файлов.
Кому это нужно (спойлер: почти всем)
Разработчикам автономных AI-агентов. Если ваш агент использует техники автономного выполнения кода, то без Nono вы играете в русскую рулетку.
Компаниям, внедряющим локальные LLM. GPT-4o, Claude 3.5, Llama 3.2 - все они могут работать локально. И все они потенциально опасны при неправильной настройке.
Исследователям AI безопасности. Nono - отличная платформа для тестирования промпт-инъекций в контролируемой среде.
Параноикам. Если вы читаете это и думаете "а вдруг мой AI-агент уже взломан", то Nono создан для вас.
Альтернативы, которые почти так же хороши
Bubblewrap - низкоуровневая утилита для создания sandbox через namespaces. Сложнее в настройке, но более гибкая. Не имеет встроенной поддержки аппаратных ключей.
Firejail - проще, чем Bubblewrap, но менее безопасен. Использует seccomp, но не Landlock. Хорош для быстрого прототипирования.
gVisor - sandbox на уровне ядра от Google. Огромные накладные расходы, но максимальная безопасность. Для AI-агентов - overkill.
Нативные sandbox политики macOS - можно написать свой sandbox профиль вручную. Требует глубокого знания Darwin. И да, это боль.
Будущее, где AI-агенты не взламывают системы
На 05.02.2026 Nono все еще в активной разработке. В roadmap:
- Поддержка Windows через Windows Sandbox API (в стадии альфа)
- Интеграция с ML-KEM для шифрования трафика
- Графический интерфейс для настройки политик (потому что не все любят TOML)
- Поддержка контейнеров: запуск Nono внутри Docker для двойной изоляции
Самый интересный план - "политики на лету". Представьте: ваш AI-агент запрашивает доступ к новой директории. Nono показывает запрос, вы нажимаете "Разрешить один раз" или "Всегда разрешать для этого пути". Без перезапуска.
Пока этого нет, приходится настраивать все вручную. Зато спите спокойно, зная что ваш агент не удалит продакшен-базу данных "для оптимизации".
Установите Nono сегодня. Завтра может быть поздно.