
node9-proxy v1.67.1
에이전틱 시대를 위한 실행 보안 계층입니다. 자율 AI 에이전트에 대해 결정론적 "Sudo" 거버넌스와 감사 로그를 제공합니다.
🛡️ Node9
당신의 AI 에이전트가 실제로 무엇을 했나요? 알아보세요.
Node9는 AI 에이전트와 에이전트가 사용할 수 있는 도구 사이에 위치합니다 — 발견: 에이전트가 이미 무엇을 하고 있었는지, 보호: 실시간으로 위험한 행동으로부터 보호, 검토: 특정 기간 동안 발생한 일을 검토합니다.
Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · 모든 MCP 서버와 함께 작동합니다.
Node9가 하는 일
- 🔍 발견 — 과거 모든 AI 세션에서 자격 증명 유출, 에이전트 루프, 차단된 작업, 그리고 에이전트가 현재 접근할 수 있는 디스크의 모든 비밀을 스캔합니다
- 🛡 보호 — 위험한 명령이 실행되기 전에 검토 또는 차단 —
rm -rf,git push --force,DROP TABLE, 자격 증명 읽기,curl | bash, AWS/GitHub/Stripe 키 유출 - 📊 검토 — 기간별 보고서 (오늘 / 주 / 월 / 90일) — 에이전트별 비용, 주요 도구, 방패 사용 횟수, 블래스트 반경
회고적 스캔
이것은 Node9를 빌드하는 90일 동안의 제 개인 머신입니다. 점수 25/100, AI 에이전트가 현재 접근할 수 있는 자격 증명 파일 5개.
npx node9-ai scan # 설치 전, 약 10초 실행, 아무것도 업로드되지 않음
node9 scan # 설치 후, 동일한 출력
Node9 스캔 점수판
보안 태세 점수판
node9 posture는 이 머신이 손상된 에이전트에 얼마나 노출되었는지 등급을 매깁니다 — 격리, 이그레스, 디스크의 비밀, 공급망, 권한 — 그리고 각 항목을 수정하기 위한 정확한 명령어를 제공합니다.
node9 posture # 1순위 위험과 모든 항목에 대한 수정 방법이 있는 점수판
node9 posture --ship # 수정된 스냅샷을 Node9 대시보드(플릿 보기)로 전송
항목은 수정 가능한 주체별로 그룹화됩니다: 🔒 Node9가 줄일 수 있는 것 (명령어 실행만 하면 됨) 및 🧱 사용자만 할 수 있는 것. 각 항목에는 일반 언어로 된 무엇 / 왜 / 누가와 실제 수정 방법이 포함됩니다 — 예: "에이전트가 호스트에서 샌드박스 없이 실행됨" 항목은 바로 node9 sandbox run (아래)을 가리킵니다.
🛡️ Node9 Posture — 이 호스트의 에이전트 Score: 100/100 (Good)
2개의 권고 사항은 점수에 영향을 주지 않습니다 — OS 수준 노출, 사용자가 판단할 사항입니다.
🟢 node9가 이미 보호 중입니다
✅ Secrets node9 DLP가 차단 중입니다
✅ Egress node9 이그레스가 승인 게이트 중입니다
✅ Approval gate node9가 차단 중입니다
✅ Privilege node9가 승인 게이트 중입니다
🔒 node9가 이를 줄입니다 — 명령어를 실행하면 나머지는 사용자 몫입니다
⚠️ Isolation 호스트에서 직접 실행 중 — 컨테이너 없음
에이전트가 샌드박스가 아닌 전체 머신에서 자유롭게 실행됩니다.
→ node9 sandbox run <agent> — 가둡니다: 커널 이그레스 + 범위 마운트 + 내부 node9
→ node9 shield enable project-jail — 또는 블래스트 반경을 줄이고 호스트 접근 유지
⚠️ Network exposure 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에 바인딩 / 포트 방화벽 (사용자 몫)
✅ Supply chain 문제 없음
✅ Coverage 문제 없음
플릿 전체에서 이를 추적하고 녹색 유지 → node9.ai
리포지토리 스캔 — 에이전트-CI 보안
node9 scan-repo는 모든 리포지토리(또는 로컬 폴더)에서 GitHub Actions에 연결된 AI 에이전트가 외부인에 의해 하이재킹될 수 있는 방법을 확인합니다 — 인젝션 가능한 워크플로우, 에이전트가 접근 가능한 비밀, 고정되지 않은 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 · ⚠️ agent-security 위험 발견
2개의 설정 파일 검사, 2개의 항목 발견
🔴 CRITICAL 인젝션 가능한 에이전트 워크플로우 — 신뢰할 수 없는 입력이 비밀을 가진 도구 사용 에이전트에 도달
.github/workflows/vulnerable-example.yml · CI-2
• 기본 리포지토리 비밀로 실행 (pull_request_target)
• 신뢰할 수 없는 PR 헤드를 워크스페이스 루트로 체크아웃
• allowed_non_write_users: "*" — 모든 사용자가 에이전트를 트리거할 수 있음
• 효과적인 액터 게이트 없음
🔴 CRITICAL 인젝션 가능한 에이전트가 접근할 수 있는 유출 가능한 비밀
.github/workflows/vulnerable-example.yml · CI-4
• 에이전트가 임의 셸(베어 Bash)을 가짐 → 환경 변수를 읽고 유출 가능
확인하는 항목:
| Check | Flags |
|---|---|
| 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 모니터 대시보드
node9 monitor는 두 가지 보기가 있는 인터랙티브 터미널 대시보드를 엽니다:
[1]실시간 — 실시간 활동, 승인, 보안 알림, 현재 위험 점수[2]보고서 — 기간별 요약: 비용, 주요 도구, 방패 사용 횟수, 블래스트 반경
보고서
모니터에서 [2]를 누르면 기간별 요약이 표시됩니다. [T]oday · [W]eek · [M]onth · [N]inety로 기간을 전환합니다 — 위 스캔과 동일한 패널, 설치 후 감사 로그 기반.
Node9 모니터 [2] 보고서
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+ 필요.
방패 — 큐레이션된 규칙 팩
각 방패는 서비스 또는 도메인에 대한 큐레이션된 규칙 세트입니다. 필요한 것만 활성화하세요.
| Shield | 차단하는 항목 | 활성화 방법 |
|---|---|---|
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, WHERE 없는 DELETE | 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 | 네임스페이스 삭제, 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 —
WHERE없는DELETE/UPDATE,DROP TABLE,TRUNCATE감지 - Shell —
curl | bash, 승인되지 않은sudo감지 - DLP — 모든 도구 인수, 파일 내용 또는 셸 설정(
~/.zshrc,~/.bashrc)에서 AWS 키, GitHub 토큰, Stripe 키, PEM 개인 키 플래그 - 응답 DLP — 백그라운드 스캐너가 Claude의 대화 기록을 읽고 Claude가 응답 텍스트에 비밀을 작성했는지 경고
- 자동 실행 취소 — 모든 AI 파일 편집 전 git 스냅샷 →
node9 undo로 되돌리기 - 스킬 고정 — 세션 간 설치된 Claude 스킬/플러그인의 SHA-256 검증
검토 프롬프트 — 에이전트 내에서 인라인 승인
Node9가 작업을 검토로 플래그할 때(예: git push --force, DROP TABLE), 승인/거부 프롬프트는 에이전트 대화에 인라인으로 렌더링됩니다 — 세션이 멈추지 않고, 별도의 터미널이 없으며, 훅 타임아웃 경합이 없습니다. node9는 여전히 전체 평가자를 실행하고 결정을 내립니다. 프롬프트 _표면_만 에이전트로 이동합니다.
- Claude Code 및 GitHub Copilot CLI는 기본적으로 켜짐 — 훅 계약이 네이티브
ask를 지원하는 에이전트. 다른 모든 에이전트(Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi)는 node9의 자체 승인자를 사용합니다. - 제어는
~/.node9/config.json의reviewChannel로 (또는 훅에--no-ask):
{
"settings": {
"reviewChannel": "ask", // "ask" = 인라인 에이전트 프롬프트 (기본값) | "approver" = node9 자체 승인자
},
}
- 팀 설정: 클라우드/팀 승인자가 설정된 경우(
approvers.cloud: true), 검토는 해당 승인자로 라우팅됩니다 — node9는 인라인 자체 승인이 라우팅/2차 승인을 우회하지 못하게 합니다.
샌드박스 — 감옥에서 에이전트 실행
모니터링만으로 충분하지 않을 때, **node9 sandbox**는 커널 적용 이그레스 허용 목록과 범위 마운트로 에이전트를 일회용 컨테이너 내에서 실행합니다 — node9의 훅이 상자 _내부_의 모든 도구 호출을 관리하고 감사합니다. 보호의 하드 버전: 에이전트는 마운트한 폴더와 허용한 호스트만 건드릴 수 있습니다. 나머지는 커널에서 모두 드롭됩니다.
cd ~/my-project
node9 sandbox new # node9.sandbox.yaml 작성 — 마운트할 항목 + 허용할 호스트
node9 sandbox run # 빌드 + 감금된 에이전트 부팅 (프로젝트는 /workspace에)
node9 sandbox tail # 호스트에서 에이전트의 작업을 실시간으로 확인
- 일회용 — 컨테이너는 종료 시 파괴됩니다. 프로젝트 편집은 실제 디스크에 남고, 다른 것은 유지되지 않습니다.
- 동일한 정책 — 기존 방패 / 이그레스 규칙 / 승인이 상자 내부에 적용되며, 동일한 감사 로그 및 대시보드로 스트리밍됩니다.
- 태세 루프 종료 — 실행하면 격리 / 이그레스 항목이 녹색으로 전환됩니다.
정직한 범위(Phase 1): 단일 컨테이너, Claude 우선(Codex 다음); 에이전트는 여전히 상자 내에서 자체 자격 증명을 보유합니다(이그레스 벽이 이를 허용된 호스트로 제한) — _"에이전트가 비밀을 절대 보유하지 않음"_은 로드맵의 자격 증명 브로커 단계입니다. Docker 필요.
MCP 게이트웨이
모든 MCP 서버를 투명하게 래핑합니다. 에이전트는 동일한 서버를 봅니다 — Node9가 모든 도구 호출을 가로챕니다.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
또는 node9 init만 실행하면 됩니다 — 기존 MCP 서버를 자동으로 래핑합니다.
🔐 MCP 도구 고정 — 러그 풀 방어
MCP 서버는 세션 간에 도구 정의를 변경할 수 있습니다. 손상되거나 악의적인 서버는 처음 신뢰한 후 자동으로 도구를 추가, 제거 또는 수정할 수 있습니다 — 러그 풀 공격입니다.
Node9는 첫 사용 시 도구 정의를 고정합니다:
- 첫 연결 — 게이트웨이가 각 도구의 이름, 설명, 스키마의 SHA-256 해시를 기록
- 후속 연결 — 해시가 비교됨; 도구가 변경된 경우 세션은 격리되고 사람이 검토 및 변경을 승인할 때까지 모든 도구 호출이 차단됨
- 손상된 고정 상태 — 폐쇄 실패(차단), 자동으로 재신뢰하지 않음
node9 mcp pin list # 고정된 모든 서버와 해시 표시
node9 mcp pin update <serverKey> # 고정 제거, 다음 연결 시 재고정
node9 mcp pin reset # 모든 고정 지우기
기타 명령어
위의 세 가지 흐름 명령어(scan / monitor / report) 외에:
| Command | 표시 내용 | 사용 시기 |
|---|---|---|
node9 blast | AI 에이전트가 현재 접근할 수 있는 것 — 파일, 자격 증명, 환경 변수 | 모든 머신에서 가장 먼저 실행할 것 |
node9 tail | 모든 도구 호출 실시간 스트림 (텍스트 전용, TUI 없음) | 다른 도구, CI, 로그에 파이핑할 때 |
node9 sessions | 프롬프트, 도구 추적, 비용, 스냅샷이 포함된 세션 기록 | 인계 또는 과거 작업 검토 시 |
node9 dlp | Claude 응답 텍스트의 자격 증명 유출 항목 | DLP 데스크톱 알림이 발생할 때마다 |
node9 mask | 로컬 세션 기록 파일에서 일반 텍스트 비밀 수정 | DLP 항목 후 — 로컬 디스크 정리 |
Claude Code 상태 표시줄의 라이브 HUD도 있습니다:
🛡 node9 | standard | [bash-safe] | ✅ 12 allowed 🛑 2 blocked 🚨 0 dlp | ~$0.43
📊 claude-opus-4-7 | ctx [████████░░░] 54% | 5h [██░░░░░░░░] 12% | 7d [█░░░░░░░] 7%
🗂 2 CLAUDE.md | 8 rules | 3 MCPs | 4 hooks
데이터 읽기 — 숫자의 의미
Node9는 신호를 표면화합니다. 알아둘 가치가 있는 패턴은 다음과 같습니다:
| 신호 | 예상 의미 |
|---|---|
주당 Would have blocked ≥ 5 | 에이전트가 고영향 작업을 시도 중; 방패 검토 가치 있음 |
단일 review-git-push 규칙이 항목의 >50% | 사용자 규칙이 의도대로 작동 중 — 위험이 아닌 감독 |
user-prompt 도구의 DLP 항목 | 사용자가 자신의 프롬프트에 비밀을 붙여넣음 — 키 교체 |
| 동일 파일에서 Agent Loop ×50+ | 에이전트가 편집/테스트/수정 주기에 갇힘 — 컨텍스트 확인 또는 속도 조절 |
| MCP 도구 고정 불일치 | 서버가 도구를 변경함 — 재신뢰 전 검토 |
| 큰 MCP 응답 경고 | 해당 서버가 이후 모든 턴에서 컨텍스트 창을 부풀리고 있음 |
Response DLP 알림 | Claude가 응답 텍스트에 비밀을 작성함 — 차단되지 않음, 즉시 교체 |
tool-result의 DLP 항목 | Claude가 비밀을 포함한 파일(.env, 자격 증명)을 읽음 — 키 교체 및 node9 mask 실행 |
[Shell]의 DLP 항목 | ~/.zshrc 또는 ~/.bashrc의 일반 텍스트 비밀 — 모든 AI 세션이 볼 수 있음 |
일회성 신호는 정상입니다. 지속적인 패턴이 조치해야 할 대상입니다.
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 코드 리뷰 에이전트 예제 →
내부 구조
- Scan은
~/.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 프록시입니다.
tools/list+tools/callJSON-RPC를 가로채고 나머지는 전달합니다. - 정책 엔진은 bash AST 분석을 위해 mvdan-sh를 사용합니다 — 백슬래시 이스케이핑, 변수 치환, 원격 다운로드 eval을 통한 난독화를 무력화합니다.
- 자동 실행 취소용 섀도우 리포지토리는
~/.node9/snapshots/<hash16>/에 위치 —.git을 건드리지 않습니다. - 샌드박스는 Dockerfile + 엔트리포인트를 생성하여 기본 거부
ipset/iptables이그레스 벽을 봉인한 다음, node9의 데몬 + 훅이 내부에서 실행되는 비루트 에이전트로 드롭다운합니다. 에이전트의 자격 증명 파일만 마운트되고 전체~/.claude는 마운트되지 않습니다.
전체 문서
설정 참조, 스마트 규칙, 상태 저장 규칙, 신뢰할 수 있는 호스트, 승인 모드, CLI 참조 — node9.ai/docs 참조.
관련 프로젝트
- node9-python — Python SDK
- node9-pr-agent — Node9을 통해 PR을 검토하는 GitHub Action
엔터프라이즈
Node9 Pro는 거버넌스 잠금, SAML/SSO, 중앙 감사 내보내기, VPC 배포를 추가합니다. node9.ai 참조.
라이선스
Apache-2.0
☕와 건강한 편집증으로 만들었습니다.