Claude Code를 사용해 보안 프록시를 구축했습니다 — 모델이 읽기 전에 터미널 출력을 정제합니다
요약
작성자는 Claude Code를 활용하여 Rust CLI 도구인 Vallum을 개발했습니다. 이 도구는 셸 명령 실행 시 발생하는 터미널 출력을 가로채어 LLM의 컨텍스트에 전달되기 전에 정제하는 보안 프록시 역할을 합니다. 이를 통해 API 키 같은 민감 정보나 적대적 텍스트 유입을 방지합니다.
핵심 포인트
- Claude Code를 활용하여 Vallum이라는 Rust CLI 도구를 구축함.
- 터미널 출력을 필터링하여 LLM의 컨텍스트에 보안 위협이 되는 정보를 차단함.
- LLM 코드 리뷰 과정에서 실제 보안 버그와 프로토콜 드리프트를 발견하는 등 개발 효율성을 높임.
여러분 안녕하세요. 저는 Claude Code와 셸 사이에 위치하는 가벼운 Rust CLI인 Vallum을 구축해 왔습니다. 이 프로젝트 전체—새로운 랜딩 페이지 포함—를 Claude Code를 사용해서 만들었고, 도구 자체와 그 과정에서 배운 점들을 공유하고 싶었습니다.
문제점: Claude Code가 셸 명령을 실행할 때, 출력 결과가 모델의 컨텍스트로 바로 흘러 들어갑니다. 이 출력에는 비밀 정보(배포 로그에 있는 API 키 같은 것), 적대적 텍스트(
두 가지 순간이 특히 인상 깊었습니다:
Claude가 주도한 코드 리뷰를 통해 병합(merge) 전에 실제 보안 버그를 발견했습니다. 해당 훅은 승인된 명령을 Vallum 자체를 거쳐 다시 재작성하고 있었는데, 이는 정책 검사(policy checks)의 무한 루프를 유발했을 것입니다. 이 수정 사항(단일 내부 강제 지점)은 그 리뷰에서 직접 나왔습니다.
다른 에이전트들을 위해 훅을 추가할 때, Claude가 각 에이전트의 라이브 훅 문서를 검증해 준 덕분에 제가 원래 계획에서 놓쳤던 프로토콜 드리프트(protocol drift)(사라진 필드 및 도구 이름)를 포착할 수 있었습니다. 그렇지 않았다면 작동하지 않는 통합 기능을 배포했을 것입니다.
솔직한 한계점: 패턴 기반 방어는 최선의 노력(best-effort)입니다. 공격 비용을 높이지만, 완전히 제거하지는 못합니다. 이 명령 가드레일은 모래 상자(sandbox)가 아니라 속도 제한 표지판에 불과합니다. 저장소에는 레이블이 지정된 평가 코퍼스(eval corpus)가 있어 탐지 주장이 단순히 '느낌'이 아닌 측정 가능한 데이터와 연결되도록 하며, '알려진 누락 사항'(known misses) 또한 완전히 문서화되어 있습니다.
확인해 보세요:
랜딩 페이지: https://kahramanemir.github.io/Vallum/ (Claude로도 구축됨!)
GitHub 저장소: https://github.com/kahramanemir/Vallum (무료 및 오픈 소스: MIT/Apache-2.0, Rust, macOS + Linux)
어떤 분이 터미널 출력이 LLM에 도달해야 하는지, 또는 해서는 안 되는지에 대해 깊이 생각해 본 경험을 가진 분들의 피드백을 받고 싶습니다!
제출자 /u/mrdweeby
[링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/ClaudeAI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기