CrabTrap: AI 에이전트의 HTTP 요청을 LLM-as-a-judge 방식으로 실시간 차단하는 오픈소스 프록시
CrabTrap: An LLM-as-a-judge HTTP proxy to secure agents in production
TL;DR Highlight
Brex가 공개한 CrabTrap은 AI 에이전트가 보내는 모든 HTTP 요청을 가로채 LLM 판사(judge)가 정책에 따라 허용/차단하는 프록시인데, 커뮤니티에서는 LLM 기반 보안 레이어의 근본적 한계를 두고 격론이 벌어졌다.
Who Should Read
프로덕션 환경에서 AI 에이전트를 운영 중이고, 에이전트가 외부 API를 마음대로 호출하거나 민감한 데이터를 유출하는 상황을 제어하고 싶은 백엔드/인프라 개발자.
Core Mechanics
- CrabTrap은 AI 에이전트와 외부 인터넷 사이에 위치하는 HTTP 프록시로, 에이전트가 보내는 모든 요청을 실시간으로 가로채서 정책(policy)에 맞는지 평가한 뒤 허용하거나 차단한다.
- 판단 방식은 두 가지를 혼합한다. 빠른 '정적 규칙(static rule)'으로 먼저 걸러내고, 규칙만으로 판단하기 어려운 모호한 요청은 LLM을 추가 판사로 호출해 결정한다. 각 결정이 어느 방식으로 내려졌는지 로그로 기록된다.
- Brex는 실제 며칠치 트래픽을 CrabTrap에 통과시켜 자동 생성한 정책이 사람의 판단과 '대다수' 케이스에서 일치했다고 주장한다. 하지만 커뮤니티는 '99% 안전'은 보안에서 낙제점이라고 반박했다.
- 프롬프트 인젝션(prompt injection, LLM에 악의적인 명령을 몰래 심는 공격)을 막기 위해 정책 내용을 JSON으로 직렬화(json.Marshal)해서 프롬프트에 삽입한다. 특수문자나 명령어처럼 보이는 텍스트가 날것 그대로 연결되지 않도록 이스케이프 처리하는 방식이다.
- Brex는 에이전트 보안이 현재 '전부 허용 아니면 전부 차단' 이분법에 갇혀 있다는 문제의식에서 출발했다. 에이전트에 권한을 많이 주면 강력하지만 위험하고, 잠가버리면 쓸모가 없어지는 트레이드오프를 중간에서 조율하려는 시도다.
- 설치는 자체 서명 인증서(self-signed cert)를 시스템 전역에 설치해서 HTTPS 트래픽을 MITM(중간자 방식으로 감청)하는 구조다. 이 접근 방식 자체를 불편하게 여기는 반응도 댓글에 나왔다.
- 오픈소스로 공개되어 있으며 GitHub에서 확인할 수 있다. Brex는 '30초 안에 시작 가능'을 내세운다.
Evidence
- LLM-as-a-judge 방식이 근본적으로 확률적(probabilistic) 시스템이라는 점이 가장 큰 논쟁 포인트였다. 한 댓글러는 '보안 시스템이 하드 제한이 아닌 확률에 기반하는 건 위험하지 않냐'고 지적했고, 다른 사람들도 '결정론적(deterministic) ACL이 필요하다', '비결정론적 비즈니스 규칙 엔진일 뿐'이라며 동조했다.
- 에이전트와 판사(judge)가 같은 모델 패밀리일 때 공유 취약점 문제가 제기됐다. 예를 들어 둘 다 Claude를 쓰면, 에이전트를 속이는 프롬프트 인젝션 패턴이 judge도 똑같이 속일 수 있다는 것. 댓글에서는 '방어 심층화(defense in depth) 원칙상 최소한 다른 제공사, 이상적으론 다른 아키텍처를 써야 한다'는 의견이 나왔다.
- judge가 HTTP body만 보기 때문에, 에이전트 입력을 통해 요청 내용을 조작할 수 있는 공격자는 judge의 컨텍스트 윈도우도 함께 조작할 수 있다는 지적이 있었다. 이건 'judge가 영리한 프롬프트에 속는' 문제가 아니라 'judge가 트릭을 감지하는 데 필요한 신호 자체를 박탈당하는' 더 근본적인 실패 모드라는 분석이다.
- CrabTrap이 검출(detection) 레이어는 될 수 있어도 방지(prevention) 레이어는 될 수 없다는 의견도 있었다. 'LLM이 외부로 POST 요청을 보내는 시점에 이미 크리덴셜(credential, 인증 정보)은 읽힌 상태'라는 논리로, 커널 레벨의 통제는 에이전트가 무엇을 했는지 알려주고 프록시는 무엇을 유출하려 했는지 감사(audit)하는 용도로는 적합하다고 정리했다.
- EvalView라는 대안 접근을 소개한 댓글도 있었다. LLM judge 없이 전체 실행 궤적(trajectory) 스냅샷과 diff를 찍어서 변화를 추적하고, 가벼운 제로-judge 모델 체크로 드리프트 수준(NONE/WEAK/MEDIUM/STRONG)을 판정하는 결정론적 방식이다. 댓글에서는 'LLM 보안 문제를 LLM 레이어를 더 쌓아서 해결하는 건 잘못된 방향'이라는 근본적 비판도 나왔다.
How to Apply
- 프로덕션에서 AI 에이전트가 Slack, GitHub, 사내 API 등 외부 서비스를 자동 호출하는 상황이라면, CrabTrap을 에이전트와 인터넷 사이에 프록시로 두고 '특정 도메인 외부 호출 금지', '대량 데이터 전송 차단' 같은 정적 규칙을 먼저 정의해 즉각적인 가드레일을 마련할 수 있다.
- LLM-as-judge의 확률적 한계를 인식한 상태라면, CrabTrap을 유일한 방어선이 아닌 감사(audit) 레이어로 포지셔닝하는 게 안전하다. 실제 차단은 네트워크 정책이나 IAM 권한 최소화로 처리하고, CrabTrap은 '에이전트가 무엇을 시도했는지' 로그를 남기는 가시성 도구로 활용하라.
- judge 모델을 선택할 때 에이전트가 사용하는 모델과 다른 제공사 또는 다른 아키텍처의 LLM을 쓰는 것을 고려하라. 같은 모델 패밀리면 동일한 프롬프트 인젝션 공격에 둘 다 뚫릴 수 있어서, 방어 심층화 효과가 크게 줄어든다.
- 자체 서명 인증서를 시스템 전역에 설치하는 MITM 구조가 부담스럽다면, 에이전트를 격리된 컨테이너나 샌드박스 환경에서 실행하고 CrabTrap을 해당 환경의 게이트웨이로만 배치하는 방식으로 영향 범위를 최소화할 수 있다.
Code Example
// CrabTrap의 프롬프트 인젝션 방지 방식 (Go 코드, GitHub 원본)
// 정책 내용을 JSON으로 직렬화해서 프롬프트에 삽입
// 특수문자나 명령어처럼 보이는 텍스트가 날것으로 연결되지 않도록 이스케이프 처리
// The policy is embedded as a JSON-escaped value inside a structured JSON object.
// This prevents prompt injection via policy content — any special characters,
// delimiters, or instruction-like text in the policy are safely escaped by
// json.Marshal rather than concatenated as raw text.
policyJSON, err := json.Marshal(policyContent)
// policyJSON은 이제 안전하게 이스케이프된 문자열로 프롬프트에 삽입 가능Terminology
관련 논문
Meta AI 챗봇 악용으로 Instagram 계정 20,000개 이상 해킹 확인
Meta의 AI 챗봇에 있던 이메일 검증 버그로 인해 2FA(2단계 인증)를 사용하지 않던 Instagram 계정 2만 개 이상이 약 2개월간 해킹됐다. AI를 계정 복구 시스템에 통합할 때 발생할 수 있는 보안 취약점의 실제 사례다.
Anthropic의 오픈소스 AI 기반 취약점 자동 탐지 프레임워크 공개
Anthropic이 Claude를 활용해 코드 취약점을 자율적으로 탐지·트리아지·패치하는 오픈소스 레퍼런스 구현체를 공개했다. 실제 보안팀과의 협업 경험을 바탕으로 만들어진 파이프라인이라 실전 적용성이 높다.
에이전트는 스스로 물러날까? LLM 에이전트의 In-Band Access-Deny 신호 준수 측정
서버가 SSH 배너나 DB NOTICE로 'AI 에이전트는 접근하지 마세요' 신호를 보내면 GPT-4o, Claude Code 같은 LLM 에이전트가 실제로 물러나는지 실험으로 측정했다.
ToolChoiceConfusion: 신뢰할 수 있는 LLM 에이전트를 위한 Causal Minimal Tool Filtering
LLM 에이전트에 도구를 100개 다 보여주지 말고, 지금 당장 필요한 것 1개만 보여주면 성공률은 그대로에 토큰은 90% 절약된다.
AI Agent를 위한 TDD(테스트 주도 개발) Skill 만들기
AI 에이전트가 형편없는 테스트를 작성하는 문제를 해결하기 위해, Kent Beck의 Canon TDD 원칙을 'Skill'로 만들어 에이전트에게 주입하는 방법을 공유한다. 에이전트 코딩에서 테스트 품질을 높이고 싶은 개발자에게 실용적인 접근법을 제시한다.
Paseo – 오픈소스 코딩 에이전트 통합 인터페이스 (모바일/데스크탑/CLI 지원)
Claude Code, Codex, GitHub Copilot 등 여러 코딩 에이전트를 하나의 UI로 제어하는 오픈소스 프로젝트로, 로컬 데몬 방식으로 자기 머신에서 실행하면서 모바일에서도 접근할 수 있다.