BakeLens/crust

🌟 Open Source AI Agent Security Infrastructure — intercepts and blocks dangerous agent behaviors before they happen. Just one command! Join us to build safer Human-AI Symbiosis!

Crust – AI 에이전트를 위한 로컬 보안 게이트웨이

무엇인가요 – Crust는 AI 기반 코딩 어시스턴트(또는 어떤 LLM 기반 도구든)와 LLM 제공자 사이에 위치하는 오픈소스이며 로컬에서 실행되는 프록시입니다. 에이전트가 수행하는 모든 도구 호출(파일 읽기, 쉘 명령어, 네트워크 요청 등)을 감시하고, 비밀 정보 유출이나 호스트 손상 가능성이 있는 작업을 차단합니다.

왜 중요한가요 – 현대의 AI 에이전트는 개발자의 코드와 자격 증명과 동일한 머신에서 실행됩니다. 모델이 속임수를 당하면(프롬프트 인젝션, 악성 출력 등), .env 파일, SSH 키, 브라우저 쿠키, 심지어 위험한 쉘 명령어까지 실행하려 할 수 있습니다. Crust는 OS에 도달하기 전에 이러한 호출을 가로챕니다. 사용자 데이터는 기기 내부에 유지되며, 에이전트 코드를 수정할 필요가 없습니다.


작동 방식

진입점 명령어 보호 대상
HTTP 프록시 crust start OpenAI 호환 API에 대한 포워드 프록시로 작동. 요청 본문(대화 기록)과 응답(도구 호출)에서 비밀번호, 위험한 명령어, 경로 탐색 등을 스캔합니다.
MCP stdio 게이트웨이 crust wrap -- <cmd> Model Context Protocol (MCP) 서버를 감싸며, tools/callresources/read 메시지를 가로챕니다.
MCP HTTP 게이트웨이 crust wrap -- <cmd> 스트리밍 가능한 HTTP MCP 서버용 리버스 프록시입니다.
ACP stdio 프록시 crust wrap -- <cmd> 에이전트 클라이언트 프로토콜(ACP) 에이전트(예: JetBrains AI, VS Code 확장)를 감싸며 파일 시스템 또는 터미널 작업을 차단합니다.
자동 감지 crust wrap -- <cmd> 하위 프로세스가 MCP 또는 ACP를 사용하는지 감지하고 적절한 필터를 적용합니다.

모든 진입점은 17단계 평가 파이프라인을 공유하며, 마이크로초 단위로 실행됩니다:

  1. 자기 보호 (에이전트가 Crust를 비활성화하지 못하게 함)
  2. 입력 정제
  3. Unicode 정규화
  4. 가리기 탐지
  5. DLP 비밀번호 스캔
  6. 경로 정규화
  7. 심볼릭 링크 해결
  8. 규칙 매칭 (42개 내장 규칙, 51개 DLP 패턴) 9–17. 추가 검사 (크기 제한, TLS 강제, 로깅 등)

모든 결정은 암호화된 로컬 저장소에 로그로 기록되며, 로그 자체는 OS 키링에 의해 보호됩니다.


빠른 시작 (데스크톱)

# macOS / Linux / BSD
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/BakeLens/crust/main/install.sh)"
# Windows (PowerShell)
irm https://raw.githubusercontent.com/BakeLens/crust/main/install.ps1 | iex
# Docker (옵션)
 docker compose up -d   # 또는 수동으로 빌드/실행

다음으로 프록시를 시작합니다:

crust start          # 기본적으로 0.0.0.0:9090에서 리슨
crust status         # 실행 중인지 확인

게이트웨이는 모델 이름에서 LLM 제공자를 자동 감지하므로, 기존 API 키를 변경할 필요가 없습니다.


에이전트 연결 예시

에이전트의 기본 URL을 http://localhost:9090/v1 (일부 클라이언트에서는 http://localhost:9090)로 설정합니다. README에는 Claude Code, OpenAI Codex CLI, Cursor, JetBrains AI, Continue, Aider 등 수십 가지 지원 도구가 나와 있습니다. OpenAI 호환 클라이언트의 경우 동일한 환경 변수가 작동합니다:

export OPENAI_BASE_URL=http://localhost:9090/v1   # 또는 ANTHROPIC_BASE_URL 등

Crust는 요청을 전달하고 규칙 엔진을 적용한 후, 안전한 도구 호출만 제공자에게 허용합니다.


모바일 / iOS 통합

Crust는 iOS 15+ 앱에 포함할 수 있는 Swift 패키지 CrustKit을 제공합니다. 세 가지 통합 방식이 제공됩니다:

  1. 로컬 리버스 프록시 – 기기에서 작동하는 작은 HTTP 프록시를 실행하고 AI SDK를 그곳으로 연결합니다.
  2. URLProtocolCrustURLProtocol을 등록하여 어떤 URLSession도 자동으로 엔진을 통과하게 합니다 (ゼ로 구성).
  3. 직접 평가engine.evaluateAsync(...)를 호출하여 수동 검사를 수행합니다. 동일한 규칙 세트(7개의 모바일 전용 잠금 규칙 포함)가 연락처, 사진, 키체인, 클립보드 읽기, 위험한 URL 스키마, 블루투스/NFC, 생체 인식 API, 앱 내 구매 등을 보호합니다.

내장 보호 규칙

  • 42개의 보안 규칙 (39개 잠금, 3개 사용자 비활성화 가능): 자격 증명, 시스템 인증 파일, 쉘 기록, 브라우저 데이터, 패키지 레지스트리 토큰, Git 자격 증명, 지속성 메커니즘, 모바일 PII, 키체인, 클립보드, URL 스키마, 하드웨어 접근, 암호화 지갑 등.
  • 51개의 DLP 패턴: 실제 API 키, 토큰, PEM 형식의 개인 키, BIP-39 문구 등을 인식.
  • 규칙은 일반 YAML(security.yaml)과 DLP 패턴용 Go 코드로 정의되어 감사 또는 확장이 용이합니다.
  • 프로젝트는 인기 있는 AI 어시스턴트(Cursor, GitHub Copilot, Claude Code, OpenAI Codex 등)에 영향을 주는 84개의 실제 CVE에 대한 검증을 주장합니다.

사용자 정의 규칙 및 플러그인

  • 사용자 정의 규칙crust add-rule my-rules.yaml로 YAML 파일을 추가. 핫리로드를 지원하므로 변경 사항이 즉시 적용됩니다.
  • 플러그인 – 선택적 후단 필터로 격리된 프로세스에서 실행. 줄바꿈 구분 JSON으로 통신 가능. 어떤 언어로든 작성 가능하며, 3회 실패 후 회로 차단기가 작동하여 오작동한 플러그인을 비활성화합니다.
  • 예제 플러그인(파이썬)은 파일 접근을 허용하기 전에 프로젝트 디렉터리 사전 샌드박스를 강제하는 방법을 보여줍니다.

Crust 자체의 보안 상태

  • localhost에서만 리슨. 외부 네트워크 노출 없음.
  • 에이전트는 게이트웨이를 비활성화하거나 재구성할 수 없음 (하드코딩된 사전 필터).
  • 비밀번호와 로그는 OS 키링과 암호화된 SQLite DB에 저장.
  • LLM 제공자로의 모든 트래픽은 TLS 1.2 이상 사용.
  • CI에서는 gosec, semgrep, 퍼즈 테스트(46개 대상), govulncheck, gitleaks를 모든 커밋에서 실행.

참여 방법

  • Go 1.26 이상에서 소스에서 빌드 (go build .).
  • 풀 리퀘스트로 새로운 보안 규칙 또는 플러그인 기여.
  • GitHub 이슈 트래커 또는 SECURITY.md에 설명된 비공개 공개 프로세스를 통해 버그 또는 보안 문제 보고.

라이선스

Crust는 Elastic License 2.0 하에 릴리스되며, 사용, 수정, 배포를 허용하지만, 경쟁 서비스로 제공하는 것을 제한합니다.


결론 – Crust는 AI 에이전트가 실수로(또는 악의적으로) 비밀 정보를 유출하거나 파괴적인 명령어를 실행하거나 특권 리소스에 접근하는 것을 막는, 코드 변경 없이 즉시 사용 가능한 로컬 실행형 보호막을 제공합니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트