Claude Security: Anthropic의 새로운 취약점 스캐너
요약
Anthropic이 Claude Code를 위한 멀티 에이전트 취약점 스캐너인 Claude Security를 퍼블릭 베타로 출시했습니다. 이 도구는 코드 내 취약점을 탐지하고 적용 가능한 패치를 제안하며, 에이전트 팀이 협력하여 보안 문제를 분석합니다.
핵심 포인트
- Claude Code 내에서 플러그인 형태로 설치 및 사용 가능
- 멀티 에이전트 오케스트레이션을 통한 취약점 분석 및 패치 제안
- 3인 적대적 패널 검증을 통한 보고서 신뢰성 확보
- 사용자의 수동 git apply를 통한 안전한 패치 적용 방식
- 동적 워크플로 활성화 및 유료 플랜 사용 필수
-
Anthropic은 Claude Code에 직접 내장된 멀티 에이전트 취약점 스캐너인 Claude Security를 퍼블릭 베타(public beta)로 출시했습니다.
-
이를 사용하려면 Claude Code v2.1.154 이상, Python 3.9.6 이상, 그리고 동적 워크플로(dynamic workflows)가 활성화된 유료 플랜이 필요합니다.
-
발견된 사항은 도달 가능성(reachability), 영향력(impact), 방어(defenses)에 대해 3명의 투표자 적대적 패널(3-voter adversarial panel)이 2/3 정족수(quorum)를 통과한 후에만 보고서에 도달합니다.
-
패치는 저장소(repo)의 임시 복사본(scratch copy)에서 초안이 작성되며 절대 자동으로 적용되지 않습니다. 사용자가 직접 git apply를 실행해야 합니다.
Anthropic이 실제로 출시한 것
Anthropic은 7월 22일에 Claude Code를 위한 Claude Security 플러그인을 퍼블릭 베타로 출시했습니다. 이것은 새로운 모델이 아니며 기존 기능의 리브랜딩도 아닙니다. 이것은 /claude-security라는 하나의 명령어를 추가하는 플러그인이며, 그 명령어 뒤에는 코드에서 실제 취약점을 찾아내고 실제로 적용 가능한 패치를 전달하는 것을 유일한 임무로 하는 조정된 Claude 에이전트 팀이 자리 잡고 있습니다.
설치는 Claude Code 세션 내에서 단 한 줄이면 됩니다: /plugin install claude-security@claude-plugins-official. 만약 마켓플레이스(marketplace)가 아직 등록되지 않았다면, 먼저 /plugin marketplace add anthropics/claude-plugins-official로 추가한 다음, 세션을 재시작하지 않고 활성화하기 위해 /reload-plugins를 실행하면 됩니다. 설정은 이것이 전부입니다. 별도의 대시보드나 새로운 계정은 필요하지 않습니다.
이 기능은 가벼운 린터 (linter)가 아니기 때문에, 여기서는 사전 요구 사항이 평소보다 더 중요합니다. Claude Code v2.1.154 이상 버전과 유료 플랜 (paid plan)이 필요합니다. 스캔이 Claude Code가 하나의 작업을 위해 여러 에이전트 (agents)를 조정할 수 있게 해주는 것과 동일한 오케스트레이션 레이어 (orchestration layer)인 동적 워크플로 (dynamic workflows)에서 실행되기 때문입니다. Pro 사용자들은 /config의 Dynamic Workflows 항목에서 이를 활성화할 수 있습니다. 또한 PATH에서 python3로 접근 가능한 Python 3.9.6 이상의 버전이 필요하며, 플러그인은 충분히 최신 버전이 아닌 경우 버전 경고를 통해 이를 확인합니다. Python 요구 사항은 들리는 것보다 가볍습니다. 도구가 표준 라이브러리 (standard library)만 사용하므로, 사용자의 기기에 추가적인 것이 설치되지 않습니다. Diff를 스캔하거나 발견된 내용을 패치 (patch)로 변환하려면 Git이 필요하지만, 버전 관리되지 않는 디렉토리에 대한 전체 스캔은 Git 없이도 여전히 작동합니다.
저는 누군가에게 추천하기 전에 다른 모든 것을 읽을 때와 마찬가지로 문서를 읽습니다. 즉, 쉽게 간과하기 쉬운 부분을 찾습니다. 눈에 띄는 부분은 모든 스캔이 플랜의 사용 한도 (usage limits)에 반영된다는 점입니다. 왜냐하면 이것은 단순한 빠른 정적 검사 (static pass)가 아니라, 진정으로 멀티 에이전트 작업 (multi-agent job)을 실행하는 것이기 때문입니다. 이는 각주 수준이 아니라 실제로 예산에 반영해야 할 비용입니다. 또한 이는 모든 키 입력마다 실행할 수 있는 것이 아님을 의미합니다. 머지 (merge) 전, 릴리스 (release) 전, 또는 실제로 지킬 수 있는 일정에 따라 실행해야 하는 작업입니다.
이번 출시는 Claude가 동일한 세션 내에서 코드를 작성할 때 코드를 검토하는 기존의 보안 가이드 플러그인 (security-guidance plugin) 및 현재 브랜치에서 단일 패스를 실행하는 /security-review와 함께 제공됩니다. Claude Security는 이 두 가지 모두의 상위에서 작동하는 더 깊고, 느리며, 더 신중한 레이어이며, 저의 Claude Code 기술 및 플러그인 정리 목록에 추가할 가치가 있는 바로 그 종류의 플러그인입니다.
멀티 에이전트 스캔의 실제 작동 방식
단 하나의 결과라도 신뢰하기 전에 반드시 이해해야 할 부분은 바로 그 메커니즘입니다. 스캔은 하나의 모델이 코드를 한 번 읽고 추측하는 것이 아닙니다. 스캔은 여러 단계로 실행됩니다. 먼저 에이전트 팀이 아키텍처 (Architecture)를 매핑하고, 그다음 해당 아키텍처가 실제로 수행하는 작업에 특화된 위협 모델 (Threat Model)을 구축하며, 그 위협 모델을 바탕으로 취약점을 탐색한 뒤, 어떤 결과가 보고서에 도달하기 전에 모든 후보 결과물을 독립적으로 검토합니다.
제가 가장 중요하게 생각하는 부분은 바로 마지막 단계입니다. 어떤 결과가 단지 한 명의 에이전트가 플래그를 지정했다고 해서 결과에 포함되는 것은 아닙니다. 해당 결과는 도달 가능성 (Reachability), 영향도 (Impact), 그리고 이미 구축된 방어 체계 (Defenses)를 기준으로 판단하는 3인 투표 방식의 적대적 패널 (Adversarial Panel)을 통과해야 하며, 보고되기 위해서는 2/3 이상의 정족수 (Quorum)를 확보해야 합니다. 만약 패널의 의견이 만장일치가 아니라면, 해당 결과는 여전히 보고되지만 명시된 신뢰도 (Confidence)는 '높음 (High)' 대신 '중간 (Medium)'으로 제한됩니다. 이는 모든 패턴 매칭 (Pattern Match) 결과를 보고하여 사용자가 노이즈를 직접 분류하게 만드는 대부분의 정적 분석 도구 (Static Analysis Tools)와는 의미가 다른 설계입니다. 여기서 노이즈 감소는 사후에 덧붙여진 기능이 아니라 제품의 핵심 일부입니다.
Anthropic은 스캔이 비결정론적 (Nondeterministic)이라는 점을 솔직하게 밝히고 있습니다. 동일한 커밋에 대해 동일한 스캔을 두 번 실행하더라도 서로 다른 결과를 얻을 수 있는데, 이는 에이전트들이 고정된 규칙 세트 (Rule Set)와 대조하는 것이 아니라 코드에 대해 추론 (Reasoning)을 하기 때문입니다. 이는 패턴 매칭이 완전히 놓치는 파일 간 교차 취약점이나 비즈니스 로직 (Business-logic) 취약점, 예를 들어 한 코드 경로에는 존재하지만 다른 경로에는 조용히 누락된 인증 확인 (Authentication Check)과 같은 문제를 잡아내기 위한 트레이드오프 (Tradeoff)입니다. 문서는 이를 숨기는 대신 정직하게 설명하고 있으며, 이러한 디테일은 해당 팀이 제품을 출시하기 전에 실제로 자신들의 도구를 사용해 보았음을 보여줍니다.
모든 스캔 결과는 저장소 내의 타임스탬프가 찍힌 CLAUDE-SECURITY-/ 폴더에 기록되며, 여기에는 사람이 읽을 수 있는 보고서(human-readable report), 기계가 읽을 수 있는 JSONL 버전, 그리고 발견된 사항을 스캔된 정확한 커밋(commit)과 연결하는 리비전 스탬프(revision stamp)가 포함됩니다. 해당 폴더에는 자체적인 .gitignore 파일이 포함되어 있어, 일상적인 git add 작업 시 보안 보고서가 실수로 커밋 히스토리(commit history)에 포함되지 않습니다. 만약 감사 추적(audit trail)을 위해 보고서를 보관하고 싶다면, 해당 파일 하나만 삭제한 뒤 의도적으로 디렉토리를 커밋하면 됩니다.
코드베이스 스캔, 변경 사항 스캔, 패치 제안
/claude-security 메뉴는 정확히 세 가지 작업을 제공하며, 이 작업들의 형태는 이 도구가 일회성 감사(audit)가 아닌 실제 워크플로우(workflow)에 어떻게 녹아들도록 설계되었는지를 보여줍니다. 첫 번째는 전체 코드베이스를 스캔하는 것이며, 저장소가 클 경우 특정 영역에 집중하여 스캔할 수도 있습니다. 이때 플러그인은 각 옵션의 파일 수와 상대적 비용을 사전에 명시하여, 사용자가 무엇을 수행하게 될지 추측할 필요가 없게 합니다. 두 번째는 변경 사항만을 스캔하는 것으로, 베이스(base) 대비 브랜치의 디프(diff), 열려 있는 풀 리퀘스트(pull request), 또는 단일 커밋을 대상으로 합니다. 이는 대부분의 사용자가 일상적으로 가장 많이 사용하게 될 기능일 것으로 예상됩니다. 이 모드는 커밋된 변경 사항만 확인하므로, 아직 커밋되지 않은 상태로 남아 있는 모든 내용은 먼저 스태시(stash) 처리를 하거나 커밋을 해야 하며, 그렇지 않으면 전체 스캔을 수행해야 합니다.
세 번째 작업은 이 플러그인이 단순한 "취약점 보고자 (vulnerability reporter)"가 아닌 "취약점 스캐너 (vulnerability scanner)"라는 라벨을 얻게 되는 지점입니다. '패치 제안 선택 (Pick Suggest Patches)'을 클릭하여 보고서의 발견 사항 중 어떤 것을 처리할지 선택하면, 각 항목은 저장소의 스크래치 복사본(scratch copy)에 초안이 작성되므로 프로세스 도중에 실제 소스 파일이 절대 수정되지 않습니다. 패치가 사용자에게 전달되기 전에, 해당 패치를 작성하지 않은 에이전트가 검토를 수행합니다. 이 에이전트는 테스트가 있는 경우 변경 사항에 대해 기존 테스트를 실행하고, 수정 사항이 새로 도입할 수 있는 모든 것에 대해 독립적으로 디프(diff)를 읽습니다. 패치는 검토자가 다음 세 가지 사항을 보증할 수 있을 때만 전달됩니다: 해당 발견 사항을 수정하는지, 새로운 문제를 도입하지 않는지, 그리고 코드 동작의 다른 모든 부분은 그대로 유지하는지 여부입니다. 만약 이 세 가지를 모두 보증할 수 없다면, 패치 대신 짧은 설명이 제공됩니다. 이는 확신에 차 있지만 틀린 수정안을 제공하는 것보다 훨씬 더 나은 실패 모드 (failure mode)입니다.
그 어떤 것도 자동으로 적용되지 않습니다. 패치는 보고서의 patches/ 폴더에 발견 사항당 하나씩 .patch 파일로 생성되며, 사용자는 각 패치를 별도의 풀 리퀘스트 (pull request)에서 git apply를 통해 적용하고, 다른 변경 사항과 마찬가지로 검토 및 테스트를 거칩니다. 발견 사항을 읽고, 패치를 선택하며, 변경 사항을 직접 적용하는 이러한 분리 방식은, 이 도구가 단지 인상적으로 보이기 위해 만들어진 데모가 아니라 실제 제약 조건 하에서 소프트웨어를 출시해 본 사람들이 만든 도구라는 느낌을 주는 디테일입니다.
이미 실행 중인 다른 도구들과의 관계
제 생각에 문서에서 가장 유용한 부분은 Anthropic이 이것이 무언가를 대체한다고 가장하지 않는다는 점입니다. 그들은 전체 스택(full stack)을 제시합니다. security-guidance 플러그인은 Claude가 코드를 작성하는 동일한 세션 내에서 일반적인 문제들을 포착하고, /security-review는 현재 브랜치에 대해 단일 패스(single pass)를 수행하며, Claude Security는 리포지토리(repository) 또는 디프(diff) 전체에 대한 온디맨드(on-demand) 심층 스캔을 제공합니다. Code Review는 Team 및 Enterprise 플랜에서 풀 리퀘스트(pull-request) 시점에 멀티 에이전트(multi-agent) 리뷰를 추가하며, 별도의 관리형 Claude Security 제품은 Enterprise 플랜에서 연결된 리포지토리에 대한 호스팅 스캐닝을 수행합니다. 기존의 정적 분석(static analysis) 및 의존성 스캐너(dependency scanners) 또한 그대로 유지되며, 추론 기반(reasoning-based) 도구가 대체하려는 것이 아닌 결정론적(deterministic)이고 언어 특화적인 체크를 수행합니다.
이러한 계층적 프레임워크는 제가 일반적으로 리뷰에 대해 생각하는 방식과 일치하며, 이는 제가 프로젝트를 위한 적절한 .claude/ 폴더를 설정하는 방법에 대해 썼을 때 제시했던 것과 동일한 직관입니다. 즉, 툴링(tooling)은 모든 것을 포착하는 척하는 단일 도구가 아니라, 구체적이고 정직한 체크들의 스택으로서 작동할 때 가장 효과적이라는 것입니다. 단 한 번의 패스로 모든 것을 포착할 수는 없으며, 하나의 도구를 전체 정답으로 취급하는 것이 바로 보안 공백이 발생하는 방식입니다. Claude Security가 추가하는 것은 실제 보안 경험이 있는 사람처럼 코드를 추론하는 계층입니다. 이는 grep이 결코 할 수 없는 방식으로, 한 파일의 데이터베이스 호출을 세 파일 떨어진 곳에 있는 검증되지 않은 입력(unvalidated input)과 연결합니다. 기존에 신뢰하던 도구들을 대신하는 것이 아니라, 그 도구들과 병행하여 실행하는 것이 이 제품의 실제 핵심 제안(pitch)이며, 이는 대부분의 보안 툴 출시가 내세우는 것보다 훨씬 더 정직한 제안입니다.
또한 이 플러그인은 사용자의 세션 내부에서 로컬로 실행되기 때문에, 관리형 제품(managed product)보다 더 넓은 범위에 도달할 수 있습니다. 이는 GitLab, Bitbucket, 인바운드 네트워크 액세스가 없는 프라이빗 서버 등 Claude Code 자체가 실행될 수 있는 곳이라면 어디에 호스팅된 저장소(repository)에서도 작동함을 의미합니다. 많은 소규모 팀과 개인 개발자들에게 이는 실제로 사용할 수 있는 보안 스캐너와, 엔터프라이즈 계약이 필요할 만큼 규모가 커진 후에야 의미가 있는 스캐너 사이의 결정적인 차이입니다.
결론 (Bottom Line)
Claude Security는 기존에 존재하던 것을 재포장한 것이 아니라 진정으로 새로운 계층(layer)입니다. 설계 방식, 발견 사항이 유효하기 전 거치는 적대적 투표 패널(adversarial voting panel), 임시 복사본 패치 초안 작성(scratch-copy patch drafting), 무엇도 자동으로 적용하기를 거부하는 방식 등은 모두 이 팀이 깨끗한 데모 저장소가 아닌 실제의 복잡한 코드베이스(codebase)를 대상으로 이를 구축했음을 보여줍니다. 사용량 제한 비용과 비결정론(nondeterminism)은 모든 커밋마다 이 도구를 사용하기 전에 반드시 알아두어야 할 실제적인 트레이드오프(tradeoffs)이지, 사용을 피해야 할 이유는 아닙니다.
저는 이 도구를 기존의 리뷰 프로세스를 대체하는 것이 아니라, 제가 이미 실행하고 있는 리뷰들과 나란히 배치하여 릴리스 전 딥 스캔(deep-scan) 단계로 제 리뷰 스택에 추가하고 있습니다. 만약 이미 Claude Code를 사용 중인데 의존성 트리(dependency tree)나 인증 코드(auth code)를 한동안 살펴보지 않았다면, /plugin install claude-security@claude-plugins-official 명령어를 사용하는 것은 그동안 놓치고 있었던 것을 찾아낼 수 있는 적은 노력으로 가능한 방법입니다. 보고서를 신뢰하기 전에 먼저 읽어보고, 패치는 하나씩 적용하며, 이 도구를 최종 결론이 아닌, 첫 번째 검토를 수행하는 매우 빠르고 철저한 동료를 대하듯 다루십시오.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기