CrabTrap 소개
OpenClaw와 같은 자율형 AI 에이전트가 많이 도입되며, 실제 서비스 환경에서 외부 API를 호출하는 시대가 열렸습니다. 즉, 사용자를 대신하여 Slack 메시지를 보내고, Gmail을 읽고, GitHub 이슈를 생성하는 에이전트는 이미 현업에서 활발히 사용되고 있습니다. 그러나 이런 에이전트들은 보안 취약점을 함께 안고 있습니다. 프롬프트 인젝션(Prompt Injection) 공격으로 에이전트가 허가되지 않은 데이터를 외부로 전송하거나, 잘못된 도구 호출로 의도치 않은 부작용이 발생할 수 있습니다. 기존 방화벽은 인바운드(Inbound) 트래픽에 특화되어 있어 에이전트가 발생시키는 아웃바운드(Outbound) 요청을 세밀하게 제어하기 어렵습니다.
CrabTrap은 핀테크 스타트업인 Brex가 오픈소스로 공개한 HTTP/HTTPS 프록시로, AI 에이전트와 외부 API 사이에 위치하여 모든 아웃바운드 요청을 보안 정책에 따라 평가합니다. 에이전트가 Slack, Gmail, GitHub 등 어떤 외부 서비스를 호출하든, CrabTrap이 그 요청을 가로채어 결정론적 규칙과 LLM 기반 정책 판사(LLM-as-a-Judge)에 의해 검사합니다. 허용된 요청은 그대로 전달되고, 거부된 요청은 그 이유와 함께 403 오류로 차단됩니다. 모든 요청과 결정은 PostgreSQL에 기록되어 완전한 감사 추적(Audit Trail)을 제공합니다.
CrabTrap의 핵심 차별점은 2단계 평가 방식(Two-tier Evaluation) 에 있습니다. 먼저 URL 패턴 기반의 결정론적 정적 규칙을 적용하여 즉각적인 허용/거부 결정을 내립니다. 정적 규칙이 없는 경우에만 LLM 판사를 호출하므로, 불필요한 LLM 호출을 최소화하면서도 자연어로 표현된 유연한 정책을 적용할 수 있습니다. Go 언어로 작성되어 높은 성능을 제공하며, Docker Compose로 손쉽게 배포 가능합니다.
CrabTrap의 동작 원리
CrabTrap의 요청 처리 흐름은 다음과 같습니다:
에이전트 → HTTP_PROXY=CrabTrap → TLS 종료 → 정적 규칙 → LLM 판사 → 외부 API
↓ ↓
즉시 허용/거부 허용/거부 + 이유
↓
PostgreSQL 감사 로그
- 에이전트 연결:
HTTP_PROXY와HTTPS_PROXY환경 변수를 CrabTrap을 가리키도록 설정합니다. - TLS 종료(TLS Termination): CrabTrap이 사용자 정의 CA에서 호스트별 인증서를 생성하여 요청을 복호화합니다.
- 정적 규칙 매칭: URL 접두사(Prefix), 정확히 일치(Exact), 글로브(Glob) 패턴으로 규칙을 확인합니다. 거부 규칙은 항상 허용 규칙보다 우선합니다.
- LLM 판사: 정적 규칙과 매칭되지 않으면 에이전트의 자연어 보안 정책으로 LLM이 평가합니다.
- 감사 로그: 모든 요청, 결정, 응답이 PostgreSQL에 기록됩니다.
CrabTrap의 주요 보안 기능
HTTPS 인터셉션: 투명한 MITM(Man-in-the-Middle) 프록시로 사용자 정의 TLS 서버 인증서를 생성하여 HTTPS 트래픽도 검사합니다.
SSRF 방어(SSRF Protection): RFC 1918, 루프백, 링크-로컬, 캐리어 그레이드 NAT, IPv6 ULA/NAT64/6to4 등 사설 네트워크로의 요청을 차단합니다. DNS 리바인딩(DNS Rebinding) 방지도 포함됩니다.
프롬프트 인젝션 방어(Prompt Injection Defense): 요청 페이로드를 JSON으로 인코딩하고 정책 내용을 JSON 이스케이프 처리하여 LLM 판사에 전달합니다.
IP별 속도 제한(Per-IP Rate Limiting): 토큰 버킷(Token Bucket) 알고리즘으로 기본값 초당 50 요청, 버스트 100 요청을 제한합니다.
정책 빌더(Policy Builder): 관찰된 트래픽을 분석하여 보안 정책을 자동으로 초안 작성하는 에이전틱 루프입니다.
서킷 브레이커(Circuit Breaker): LLM 판사가 5회 연속 실패하면 서킷 브레이커가 작동하고, 10초 냉각 후 재개됩니다.
CrabTrap 설치 및 빠른 시작
CrabTrap은 Docker Compose로 실행합니다:
# CrabTrap + PostgreSQL 시작
docker compose up -d
# 생성된 CA 인증서 복사
docker compose cp crabtrap:/app/certs/ca.crt ./ca.crt
# 관리자 계정 생성
admin_token=$(docker compose exec -it crabtrap ./gateway create-admin-user test-admin \
| tail -n1 | cut -d" " -f2)
# 사용자 생성 및 게이트웨이 토큰 획득
token=$(curl -X POST http://localhost:8081/admin/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${admin_token}" \
-d '{"id": "alice@example.com", "is_admin": false}' \
| jq -r '.channels[] | select(.channel_type == "gateway_auth") | .gateway_auth_token')
# 프록시를 통해 요청 테스트
curl -x http://${token}:@localhost:8080 \
--cacert ca.crt https://httpbin.org/get
프록시는 localhost:8080에서 대기하며, 관리자 웹 UI는 localhost:8081에서 접근할 수 있습니다.
라이선스
CrabTrap 프로젝트는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용, 수정, 배포할 수 있습니다.
CrabTrap 프로젝트 GitHub 저장소
더 읽어보기
-
NeMo Guardrails: LLM의 확률적 불확실성을 통제하는, 프로그래밍 가능한 안전장치 (feat. NVIDIA)
-
Context Gateway: 의도에 기반하여 컨텍스트를 압축하며 속도 한계를 해결하는 프록시 도구 (feat. Compresr)
-
DeerFlow v2: 리서치, 코딩, 창작 등의 작업을 위한 오픈소스 SuperAgent Harness (feat. ByteDance)
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. ![]()
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ ![]()

