Как не дать AI-агенту снести вашу систему обзор песочницы nono
Представьте, что вы дали новому стажеру полный доступ к терминалу и сказали: «Поправь тут пару багов». Только стажер — это Claude или GPT-4. Он быстрый, исполнительный, но иногда ловит галлюцинации и может случайно бахнуть rm -rf / или слить ваши ssh-ключи на сторонний API, просто потому что «так удобнее для отладки».
Проблема безопасности AI-агентов сейчас стоит остро. Обычные промпт-инъекции или просто ошибки в логике LLM могут привести к реальному ущербу на локальной машине. Разработчики из проекта Sigstore (те самые, что делают стандарты безопасности для npm и PyPI) решили, что полагаться на «вежливость» нейросети — плохая идея. Так появился nono.
Что это такое
nono — это инструмент для запуска AI-агентов в изолированной песочнице на уровне ядра ОС. Вместо того чтобы просить агента «пожалуйста, не трогай эти файлы», вы просто блокируете к ним доступ на уровне системных вызовов.
Инструмент написан на Rust и использует нативные механизмы изоляции: Seatbelt в macOS и Landlock в Linux. Это значит, что накладных расходов на виртуализацию или Docker-контейнеры практически нет. Процесс запускается мгновенно, но видит только то, что вы ему разрешили.
Чем nono отличается от обычного Docker
Когда мы говорим об изоляции, первой мыслью обычно бывает контейнеризация. Но с агентами, которые должны работать в вашем рабочем каталоге, Docker превращается в мучение с прокидыванием volume, правкой UID/GID и настройкой сети.
nono идет другим путем:
- Мелкозернистый доступ. Вы можете разрешить чтение только одной папке с моделями и запись только в
src/. Всё остальное для процесса просто не существует. - Защита ключей. Агент часто просит API-ключи. nono умеет проксировать запросы так, что сам агент видит только
localhost, а реальные секреты подставляются уже «снаружи» песочницы. - Мгновенные откаты. Перед запуском nono делает снапшот рабочей директории. Если агент что-то сломал или удалил лишнее, одной командой можно вернуть всё как было.
Как это работает на практике
Самый простой способ попробовать — использовать CLI. Утилита уже идет с готовыми профилями для популярных агентов вроде Claude Code.
# Запуск Claude Code в защищенном режиме
nono run --profile claude-code -- claude
Если вы пишете своего агента на Python или TypeScript, nono можно подключить как библиотеку. Это удобно, если вы строите платформу, где пользователи запускают чужой код.
Пример на Python:
from nono_py import CapabilitySet, AccessMode, apply
caps = CapabilitySet()
# Разрешаем только чтение моделей
caps.allow_path("/data/models", AccessMode.READ)
# И чтение/запись в рабочую директорию
caps.allow_path("./workspace", AccessMode.READ_WRITE)
apply(caps) # С этого момента ограничения наложены на уровне ядра
После вызова apply() ограничения становятся необратимыми для текущего процесса и всех его «детей». Даже если агент получит root-права внутри песочницы, ядро ОС не даст ему выйти за пределы разрешенных путей.
Интересные фишки безопасности
Разработчики добавили несколько уровней защиты, которые выходят за рамки простого ограничения файловой системы.
Блокировка опасных команд
nono на лету перехватывает попытки запуска деструктивных утилит вроде rm, dd или chmod. Если агент решит почистить диск, nono просто не даст процессу стартовать. Конечно, это можно обойти через хитрые shell-скрипты, но как первый эшелон защиты — работает отлично.
Криптографическая проверка инструкций
В репозиториях часто лежат файлы вроде CLAUDE.md или SKILLS.md с инструкциями для агентов. Это идеальный вектор для атак на цепочку поставок (supply chain attacks). nono интегрирован с Sigstore, что позволяет подписывать эти файлы. Вы можете настроить запуск так, чтобы агент игнорировал инструкции, если они не подписаны доверенным мейнтейнером.
Сетевой фильтр
Вместо того чтобы полностью отключать интернет, вы можете составить белый список хостов. Например, разрешить только api.openai.com и github.com. Все остальные попытки «стукнуться» куда-то будут заблокированы локальным прокси.
Стоит ли внедрять сейчас
Проект находится в стадии ранней альфы. Сами авторы честно предупреждают: аудита безопасности еще не было, и в продакшн это тащить рано. Но для локальной разработки, когда вы даете ИИ доступ к своим исходникам, это уже маст-хэв.
Кому точно пригодится:
- Тем, кто активно использует CLI-агентов для написания кода.
- Разработчикам собственных AI-платформ, которым нужна легкая изоляция без оверхеда виртуалок.
- Безопасникам, которые пытаются выстроить пайплайны работы с LLM в корпоративной среде.
У проекта живое комьюнити в Discord и очень бодрый темп разработки. Учитывая бэкграунд создателей в области безопасности софта, у nono есть все шансы стать стандартом «ремня безопасности» для автономных агентов.
Попробовать можно через Homebrew:
brew install nono
Или заглянуть в репозиторий: always-further/nono (там же есть ссылки на Python и TS биндинги).
