
node9-proxy v1.67.3
Уровень безопасности выполнения для эры агентов. Обеспечивает детерминированное управление «Sudo» и журналы аудита для автономных ИИ-агентов.
🛡️ Node9
Что на самом деле делал ваш ИИ-агент? Узнайте.
Node9 располагается между вашим ИИ-агентом и инструментами, которые он может использовать — обнаружьте, что он уже делал, защитите от рискованных действий в реальном времени и просмотрите, что произошло за любой промежуток времени.
Работает с Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · любым MCP-сервером.
Что делает Node9
- 🔍 Обнаружение — сканирует все прошлые сессии ИИ на предмет утечек учётных данных, циклов агента, заблокированных операций и всех секретов на диске, до которых агент может добраться прямо сейчас
- 🛡 Защита — проверяет или блокирует опасные команды до их выполнения —
rm -rf,git push --force,DROP TABLE, чтение учётных данных,curl | bash, утечки ключей AWS/GitHub/Stripe - 📊 Обзор — отчёт за выбранный период (сегодня / неделя / месяц / 90 дней) — стоимость на агента, главные инструменты, срабатывания щитов, радиус поражения
Ретроспективное сканирование
Это моя собственная машина — 90 дней во время создания Node9. Оценка 25/100, 5 файлов с учётными данными, до которых ИИ-агент может добраться прямо сейчас.
npx node9-ai scan # до установки, выполняется ~10 секунд, ничего не загружает
node9 scan # после установки, тот же вывод
Node9 scan scorecard
Оценка уровня безопасности
node9 posture оценивает, насколько эта машина уязвима для скомпрометированного агента — изоляция, исходящий трафик, секреты на диске, цепочка поставок, привилегии — и выводит точную команду для исправления каждой проблемы.
node9 posture # оценка с указанием главного риска и исправления для каждой проблемы
node9 posture --ship # отправляет обезличенный снимок в панель управления node9 (обзор парка машин)
Проблемы сгруппированы по тому, кто может их исправить: 🔒 те, что уменьшает node9 (просто выполните команду), и 🧱 те, которые можете исправить только вы. Каждая содержит пояснение на простом языке: что / почему / кто и реальное исправление — например, проблема «агент работает без песочницы на хосте» указывает прямо на node9 sandbox run (ниже).
🛡️ Node9 Posture — агент на этом хосте Оценка: 100/100 (Хорошо)
2 предупреждения ниже не влияют на оценку — уровень ОС, решать вам.
🟢 node9 уже защищает вас
✅ Секреты node9 DLP блокирует это
✅ Исходящий node9 egress требует одобрения
✅ Шлюз одобрения node9 блокирует это
✅ Привилегии node9 требует одобрения
🔒 node9 уменьшает эти риски — выполните команду, остальное за вами
⚠️ Изоляция Работа напрямую на хосте — без контейнера
Агент работает на всей машине, а не в песочнице.
→ node9 sandbox run <agent> — изолируйте: egress на уровне ядра + ограниченные точки монтирования + node9 внутри
→ node9 shield enable project-jail — или уменьшите радиус поражения, оставив доступ к хосту
⚠️ Сетевая доступность 4 сервиса на 0.0.0.0 (node :3000/:4000, PostgreSQL :5432, Redis :6379)
Доступны из всей сети, а не только с этого ноутбука.
→ node9 shield enable postgres|redis — node9 блокирует DROP TABLE / FLUSHALL
→ привяжите к 127.0.0.1 / настройте брандмауэр (ваша часть)
✅ Цепочка поставок проблем не найдено
✅ Покрытие проблем не найдено
Отслеживайте это по всему парку и поддерживайте зелёным → node9.ai
Сканирование репозитория — безопасность агента в CI
node9 scan-repo проверяет любой репозиторий (или локальную папку) на предмет того, как ИИ-агент, подключённый к GitHub Actions, может быть взломан посторонним — внедряемые рабочие процессы, доступные агенту секреты, незафиксированные MCP-серверы, слишком широкая конфигурация агента и отравленные файлы инструкций. Статический анализ, только парсинг: читает только зафиксированные конфиги, никогда не выполняет код репозитория. Не требует установки или токена для публичных репозиториев.
npx node9-ai scan-repo <owner/repo> # любой публичный репозиторий, без установки
node9 scan-repo . # локальная копия — без сети
node9 scan-repo <owner/repo> --json # машинно-читаемый формат
🛡️ node9 scan-repo · node9-ai/agent-security-demo · ⚠️ обнаружен риск безопасности агента
проверено 2 конфигурационных файла, 2 проблемы
🔴 КРИТИЧЕСКИЙ Внедряемый рабочий процесс агента — непроверенный ввод достигает агента, использующего инструменты, с секретами
.github/workflows/vulnerable-example.yml · CI-2
• выполняется с секретами базового репозитория (pull_request_target)
• извлекает непроверенный PR head в корень рабочей области
• allowed_non_write_users: "*" — любой пользователь может запустить агента
• отсутствует эффективная проверка автора
🔴 КРИТИЧЕСКИЙ Секреты, доступные для эксфильтрации внедряемым агентом
.github/workflows/vulnerable-example.yml · CI-4
• агент имеет произвольный shell (чистый Bash) → может читать переменные окружения и эксфильтровать
Что проверяется:
| Проверка | Что помечается |
|---|---|
| CI-1 | зафиксированная конфигурация агента, которая предварительно разрешает широкие инструменты или запускает удалённые хуки |
| CI-2 | внедряемые рабочие процессы агента — посторонний может запустить агента и взломать его |
| CI-3 | незафиксированные / @latest MCP-серверы или встроенные учётные данные (цепочка поставок) |
| CI-4 | секреты, которые внедрённый агент может эксфильтровать |
| CI-6 | отравленные или опасные инструкции в CLAUDE.md / AGENTS.md / навыках |
Блокируйте каждый PR — тот же движок, что и GitHub Action, так что уязвимая конфигурация не сможет быть слита:
# .github/workflows/agent-security.yml
- uses: node9-ai/agent-security-action@v1
with:
fail-on: high # или 'never' — только комментарий
Маркетплейс: node9 Agent Security Check
Мониторинг в реальном времени
Node9 monitor dashboard
node9 monitor открывает интерактивную терминальную панель с двумя режимами:
[1]В реальном времени — активность, одобрения, оповещения безопасности, текущий уровень риска[2]Отчёт — сводка за период: стоимость, главные инструменты, срабатывания щитов, радиус поражения
Отчёт
Нажмите [2] в режиме монитора для сводки за период. Переключайте период с помощью [T]oday · [W]eek · [M]onth · [N]inety — те же панели, что в сканировании выше, но на основе вашего журнала аудита после установки.
Node9 monitor [2] Report
node9 monitor # нажмите [2] для просмотра отчёта
node9 report --period 7d # CLI-форма, без TUI
Установка
# macOS / Linux
brew tap node9-ai/node9 && brew install node9
# или через npm (любая платформа)
npm install -g node9-ai
node9 init # автоматически подключает все обнаруженные агенты и MCP-серверы
node9 doctor # проверяет корректность всех подключений
Требуется Node.js 18+.
Щиты — готовые наборы правил
Каждый щит — это готовый набор правил для определённого сервиса или домена. Включайте только то, что нужно.
| Щит | Что перехватывает | Включение |
|---|---|---|
project-jail | Блокирует чтение ~/.ssh, ~/.aws, .env, учётных данных через Bash и Read | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, перезапись диска, eval удалённого | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE без WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), удаление индексов | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET на живом сервере | node9 shield enable redis |
aws | Удаление S3, завершение EC2, изменения IAM, уничтожение RDS | node9 shield enable aws |
k8s | Удаление namespace, helm uninstall, зачистка ролей кластера | node9 shield enable k8s |
docker | system prune, volume prune, rm -f контейнеров | node9 shield enable docker |
github | gh repo delete, удаление удалённых веток, изменения настроек | node9 shield enable github |
filesystem | chmod 777, запись в /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | Неодобренные MCP-инструменты, незаметно активирующие новые возможности | node9 shield enable mcp-tool-gating |
node9 shield list # показать все щиты и их статус
Всегда включено — без настройки
- Git — перехватывает
git push --force,git reset --hard,git clean -fd - SQL — перехватывает
DELETE/UPDATEбезWHERE,DROP TABLE,TRUNCATE - Shell — перехватывает
curl | bash, несанкционированныйsudo - DLP — помечает ключи AWS, токены GitHub, ключи Stripe, PEM-ключи в любых аргументах инструментов, содержимом файлов или конфигурации shell (
~/.zshrc,~/.bashrc) - Response DLP — фоновый сканер читает историю диалогов Claude и предупреждает, если Claude написал секрет в своём ответе
- Auto-undo — снимок git перед каждым редактированием файла агентом →
node9 undoдля отката - Фиксация навыков — проверка SHA-256 установленных навыков / плагинов Claude между сессиями
Запросы на одобрение — одобряйте встроенно, внутри агента
Когда node9 помечает действие для проверки (например, git push --force, DROP TABLE), запрос на одобрение/отклонение отображается прямо в диалоге агента — никакой заморозки сессии, отдельного терминала или гонки с тайм-аутом хука. node9 по-прежнему запускает полный анализатор и принимает решение; только поверхность запроса перемещается к агенту.
- Включено по умолчанию для Claude Code и GitHub Copilot CLI — агентов, контракт хуков которых поддерживает нативный
ask. Все остальные агенты (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) используют собственный модератор node9. - Управление через
reviewChannelв~/.node9/config.json(или--no-askв хуке):
{
"settings": {
"reviewChannel": "ask", // "ask" = встроенный запрос агенту (по умолчанию) | "approver" = собственный модератор node9
},
}
- Командные настройки: если настроен облачный/командный модератор (
approvers.cloud: true), запросы направляются к нему — node9 не позволит встроенному самоодобрению обойти маршрутизированное/вторичное одобрение.
Песочница — запуск агента в изоляции
Когда наблюдения недостаточно, node9 sandbox запускает агента внутри одноразового контейнера с белым списком исходящего трафика на уровне ядра и ограниченными точками монтирования — при этом хуки node9 управляют и аудируют каждый вызов инструмента внутри контейнера. Жёсткая версия защиты: агент может трогать только ту папку, которую вы смонтировали, и обращаться только к разрешённым хостам; всё остальное блокируется на уровне ядра.
cd ~/my-project
node9 sandbox new # создаёт node9.sandbox.yaml — что монтировать и какие хосты разрешить
node9 sandbox run # собирает и запускает изолированного агента (ваш проект в /workspace)
node9 sandbox tail # наблюдает за действиями агента в реальном времени с хоста
- Одноразовый — контейнер уничтожается при выходе; изменения вашего проекта попадают на реальный диск, ничего другого не сохраняется.
- Та же политика — ваши существующие щиты / правила egress / одобрения применяются внутри контейнера и транслируются в тот же журнал аудита и панель управления.
- Замыкает цикл оценки — запуск переключает проблемы Изоляции / Исходящего трафика в зелёный.
Честное описание (Фаза 1): один контейнер, сначала Claude (Codex следующим); агент всё ещё хранит свои собственные учётные данные внутри контейнера (стена egress ограничивает их разрешёнными хостами) — «агент никогда не хранит секрет» — это фаза брокера учётных данных в планах. Требуется Docker.
MCP-шлюз
Прозрачная обёртка для любого MCP-сервера. Агент видит тот же сервер — Node9 перехватывает каждый вызов инструмента.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Или просто выполните node9 init — он автоматически обернёт ваши существующие MCP-серверы.
🔐 Фиксация MCP-инструментов — защита от rug pull
MCP-серверы могут изменять свои определения инструментов между сессиями. Скомпрометированный или вредоносный сервер может незаметно добавлять, удалять или изменять инструменты после того, как вы ему доверились — это rug pull атака.
Node9 фиксирует определения инструментов при первом использовании:
- Первое подключение — шлюз записывает SHA-256 хеш имени, описания и схемы каждого инструмента
- Последующие подключения — хеш сравнивается; если инструменты изменились, сессия карантинируется, и все вызовы инструментов блокируются до тех пор, пока человек не проверит и не одобрит изменение
- Повреждённое фиксированное состояние — отказ закрыт (блокировка), никогда не доверяет повторно молча
node9 mcp pin list # показать все зафиксированные серверы и хеши
node9 mcp pin update <serverKey> # удалить фиксацию, перефиксировать при следующем подключении
node9 mcp pin reset # очистить все фиксации
Другие команды
Помимо трёх основных команд (scan / monitor / report):
| Команда | Что показывает | Когда использовать |
|---|---|---|
node9 blast | Что ИИ-агент может достичь прямо сейчас — файлы, учётные данные, окружение | Первое, что нужно запустить на любом компьютере |
node9 tail | Поток в реальном времени каждого вызова инструмента (только текст, без TUI) | Для передачи в другие инструменты, CI, логи |
node9 sessions | История сессий с запросом, трассировкой инструментов, стоимостью, снимком | Для проверки передачи дел или прошлой работы |
node9 dlp | Результаты утечки учётных данных в тексте ответов Claude | Всякий раз, когда срабатывает DLP-оповещение на рабочем столе |
node9 mask | Замена открытых секретов на локальные файлы истории сессий | После обнаружения DLP — очищает локальный диск |
Плюс HUD в реальном времени в строке состояния Claude Code:
🛡 node9 | standard | [bash-safe] | ✅ 12 разрешено 🛑 2 заблокировано 🚨 0 dlp | ~$0.43
📊 claude-opus-4-7 | ctx [████████░░░] 54% | 5h [██░░░░░░░░] 12% | 7d [█░░░░░░░] 7%
🗂 2 CLAUDE.md | 8 правил | 3 MCP | 4 хука
Чтение данных — что означают числа
Node9 предоставляет сигналы. Вот паттерны, которые стоит знать:
| Сигнал | Вероятное значение |
|---|---|
Would have blocked ≥ 5 за неделю | Агент пытается выполнять операции с высоким воздействием; стоит просмотреть щиты |
Одно правило review-git-push >50% результатов | Ваше собственное правило срабатывает как задумано — не риск, а просто контроль |
DLP-срабатывание в инструменте user-prompt | Вы вставили секрет в свой собственный запрос — смените ключ |
| Цикл агента ×50+ на одном файле | Агент застрял в цикле редактирование/тест/исправление — проверьте контекст или замедлитесь |
| Несоответствие фиксации MCP-инструмента | Сервер изменил свои инструменты — проверьте перед повторным доверием |
| Предупреждение о большом MCP-ответе | Этот сервер раздувает ваш контекст для каждого последующего шага |
Оповещение Response DLP | Claude написал секрет в своём ответе — не заблокировано, немедленно смените ключ |
DLP-срабатывание в tool-result | Claude прочитал файл, содержащий секрет (.env, учётные данные) — смените ключ и выполните node9 mask |
DLP-срабатывание в [Shell] | Открытый секрет в ~/.zshrc или ~/.bashrc — каждая сессия ИИ может его увидеть |
Единичные сигналы нормальны; постоянные паттерны — это то, на что нужно реагировать.
Python SDK — управление любым Python-агентом
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
Python SDK → · Пример CI-агента для ревью кода →
Как это работает внутри
- Сканирование читает необработанную историю агента из
~/.claude/projects/,~/.gemini/tmp/,~/.gemini/antigravity-*/brain/,~/.copilot/session-state/,~/.codex/sessions/— без API-вызовов, полностью офлайн - Время выполнения перехватывает вызовы инструментов через хуки до выполнения (Claude Code, Codex, Antigravity, GitHub Copilot CLI, Gemini CLI, Opencode, Pi) или через MCP-шлюз (Cursor, Windsurf, VSCode, Claude Desktop). Все решения атомарно записываются в
~/.node9/audit.log. - MCP-шлюз — это stdio-прокси; перехватывает JSON-RPC
tools/list+tools/call, остальное передаёт - Движок политик использует mvdan-sh для AST-анализа bash — побеждает обфускацию через экранирование обратным слешем, подстановку переменных, eval удалённой загрузки
- Теневой репозиторий для auto-undo находится в
~/.node9/snapshots/<hash16>/— никогда не касается вашего.git - Песочница генерирует Dockerfile + точку входа, которые создают запрещающую по умолчанию стену egress через
ipset/iptables, затем переключаются на непривилегированного агента с демоном node9 и хуками внутри; монтируется только файл учётных данных агента, никогда весь~/.claude
Полная документация
Справочник по конфигурации, умные правила, правила с состоянием, доверенные хосты, режимы одобрения, справочник CLI — на node9.ai/docs.
Связанные проекты
- node9-python — Python SDK
- node9-pr-agent — GitHub Action, проверяющий PR через Node9
Для предприятий
Node9 Pro добавляет блокировку управления, SAML/SSO, централизованный экспорт аудита и развёртывание в VPC. См. node9.ai.
Лицензия
Apache-2.0
Сделано с ☕ и здоровой паранойей.