claude-security 플러그인 사용법: 클로드 코드 보안 취약점 점검, 취약점 6개 심은 웹앱으로 없이·있이 비교하니 비용 12배

클로드 코드로 만든 웹앱을 공개하기 전에 “어디 뚫린 데는 없나”가 걱정될 때가 있습니다. claude-security(클로드 시큐리티)는 Anthropic이 만든 클로드 코드용 보안 점검 플러그인입니다. 에이전트 여러 개가 코드를 나눠 읽고 취약점 후보를 찾습니다. 그다음 다른 에이전트 셋이 후보마다 반박을 시도하고, 살아남은 것만 보고서에 올립니다. 플러그인은 무료지만 쓸 때 클로드 사용량이 많이 듭니다. 가상 카페 예약 웹앱에 진짜로 뚫리는 취약점 6개와 “위험해 보이지만 안전한” 미끼 3개를 넣었습니다. 같은 요청을 플러그인 없이, 깔아 두기만 하고, /claude-security로 불러서 각각 두 번씩 보내고 채점했습니다.

세 줄 요약
  1. 플러그인 없이 요청한 세 번은 취약점 6개를 모두 찾았습니다. claude-security가 돈 세 번은 5개를 찾았습니다. 코드에 박힌 관리자 비밀번호를 별도 항목으로 올리지 않았습니다. 미끼를 취약점으로 잘못 짚은 경우는 여섯 번 모두 없었습니다.
  2. claude-security는 한 번에 8분 안팎, 사용량 6.47~6.87달러어치가 들었습니다. 플러그인 없이는 1~2분, 0.52~0.59달러어치로 12배쯤 차이 납니다.
  3. 대신 claude-security 쪽 보고서가 더 단단했습니다. 항목마다 공격 시나리오·전제 조건·확신도·검증 결과(3명 중 몇 명 동의)가 붙고, 기계가 읽는 SARIF·JSONL 파일도 나옵니다. 플러그인 없이 한 세 번은 모두 Opus 5.5 보안 안전장치에 걸렸습니다. 이 중 두 번은 답의 일부를 Opus 4.8이 대신 썼습니다.

결과부터 보기: 같은 웹앱, 보고서 두 벌

왼쪽은 플러그인 없이 받은 보고서(2회차), 오른쪽은 /claude-security로 받은 보고서(1회차)입니다. 둘 다 SQL 주입과 경로 이동을 가장 위험한 두 건으로 꼽았습니다. 오른쪽은 항목마다 검증자 몇 명이 동의했는지 적힌 줄(Verification)이 붙습니다. 8건 중 6건은 3명 모두, 남의 예약 보기 등 2건은 3명 중 2명이 동의했습니다.

왼쪽 플러그인 없이 받은 보고서, 오른쪽 /claude-security가 쓴 보고서 · Claude Code · Opus 5.5 · 생각 깊이 중간

직접 눌러 보기: 보고서 여섯 벌과 채점표 열어 보기(클로드가 쓴 보고서를 그대로 옮겼습니다)

직접 실행 확인한 날짜 2026-10-18

실행 환경
macOS 26.1 · Claude Code 2.1.299 · 메인 대화 Opus 5.5 · 생각 깊이 중간 (여섯 번 모두 같음). 플러그인 안의 조사·검증 에이전트는 플러그인 설정대로 Opus 5.5 · 생각 깊이 매우 높음, 목록 정리 에이전트는 Sonnet 5.5
설치 난이도
명령 한 줄. 파이썬 3.9 이상 필요, 바뀐 부분만 점검하려면 git 저장소여야 함
비용
플러그인은 무료. 233줄짜리 웹앱 한 번 점검에 API 단가로 6.47~6.87달러어치 사용량
라이선스
Anthropic 독점(모든 권리 보유). Anthropic 제품 이용 약관 아래에서 쓰도록 허가

따라 해 보기: 요청문과 실습 재료

점검할 저장소 폴더에서 클로드 코드를 열고 아래처럼 보내면 이번 실험의 세 번째 조건과 같습니다. 클로드 코드가 처음이라면 클로드 코드 설치 방법을 먼저 보세요. 실습 재료(zip)에는 취약점을 넣은 예약 웹앱, 요청문 두 개, 채점 기준, 6개가 실제로 뚫리는지 확인하는 검사 스크립트(exploit_check.py)를 넣었습니다.

/claude-security:claude-security 저장소 전체를 medium으로 스캔해 주세요. 이 저장소는 동네 카페가 쓰는 예약 관리 웹앱입니다. 보안 취약점을 찾아 보고서로 정리해 주세요. 코드는 고치지 마세요. 시간이 오래 걸리고 토큰을 많이 써도 괜찮다는 것을 이해했습니다.

요청문 끝의 “시간이 오래 걸리고 토큰을 많이 써도 괜찮다는 것을 이해했습니다”가 중요합니다. 플러그인은 이 확인이 요청에 없으면 “시간과 토큰이 많이 들 수 있는데 계속할까요?”라고 한 번 묻고 기다립니다. 좋은 결과라면 저장소 안에 CLAUDE-SECURITY-날짜시각/ 폴더가 생기고, 답변에 “검증 상태 verified”와 찾은 항목 표가 나옵니다.

claude-security 플러그인에 들어 있는 것

claude plugin details로 뽑은 0.12.0의 구성은 스킬 1개, 에이전트 9개, 훅 4개입니다. MCP 서버는 없습니다. 깔아 두기만 해도 대화마다 약 778토큰이 더 듭니다.

구성하는 일
스킬 /claude-security메뉴를 열고 세 가지 일(저장소 점검, 바뀐 부분 점검, 고치는 패치 제안) 중 하나를 진행
조사 에이전트(scan-inventory·scan-researcher)저장소를 구성 요소로 나누고, 구성 요소마다 관점(입력 처리, 인증·권한, 암호·비밀 정보 등)을 나눠 취약점 후보를 찾음
검증 에이전트(scan-verifier)후보 하나에 셋이 붙어 “실제로 뚫리는 길이 없으면 오탐”이라는 기준으로 반박. 3명 중 2명 이상이 동의해야 보고서에 올라감
패치 에이전트(patch-generator·patch-verifier)찾은 항목을 고치는 패치 파일을 만들고 따로 검증. 코드에 바로 적용하지는 않음
그 밖보고서 모으기·비밀 값 가리기 에이전트, 훅 4개(메뉴 배너, git push 뒤 점검 권유 등)

플러그인 안내 문서에 따르면 점검 강도는 low(조사자 하나 + 검증 셋), medium(기본값, 구성 요소 × 관점마다 조사자), high(조사자 두 배) 세 단계입니다. 결과 폴더에는 사람이 읽는 보고서(.md), 기계가 읽는 JSONL·SARIF, 어느 커밋을 점검했는지 적은 기록 파일이 들어갑니다. 폴더 안에 .gitignore가 있어 실수로 커밋되지 않습니다.

1단계. 플러그인 깔기 (약 1분)

점검할 저장소 폴더에서 터미널에 아래 명령을 실행합니다. claude-plugins-official은 클로드 코드에 처음부터 등록된 공식 플러그인 저장소입니다. --scope local은 이 폴더에서만 켜는 옵션입니다.

claude plugin install claude-security@claude-plugins-official --scope local
claude plugin details claude-security@claude-plugins-official
터미널에서 claude-security 플러그인을 설치하고 구성 목록을 띄운 화면. 스킬 1개, 에이전트 9개, 훅 4개, 상시 약 778토큰
설치 성공 문구와 구성 목록(스킬 1개, 에이전트 9개, 훅 4개, 상시 약 778토큰)

이렇게 나오면 성공 ✔ Successfully installed plugin: claude-security@claude-plugins-official (scope: local)(플러그인 설치 성공, 범위: 이 폴더). 구성 목록에 Skills (1) claude-security와 Agents (9)가 나옵니다.

  • 설치 명령이 플러그인을 찾지 못하면 claude plugin marketplace add anthropics/claude-plugins-official로 저장소를 등록한 뒤 다시 설치합니다.
  • 클로드 코드 안에서는 /plugin install claude-security@claude-plugins-official 뒤 /reload-plugins로도 깔 수 있습니다(공식 README).
  • 플러그인이 쓰는 도우미 스크립트는 파이썬이라, 파이썬 3.9 이상이 없으면 메뉴를 열 때 경고가 나옵니다.

필요 없어지면 같은 폴더에서 아래 명령으로 지웁니다.

claude plugin uninstall claude-security@claude-plugins-official --scope local

2단계. 실습 웹앱 받기 (약 1분)

실습 재료 zip을 풀면 app/(파이썬 표준 라이브러리로 만든 예약 웹앱, 208줄), tests/, receipts/가 나옵니다. 손님이 예약을 만들고 영수증을 내려받고, 사장님이 /admin에서 오늘 예약을 보는 가상의 동네 카페 앱입니다. 넣은 취약점 6개는 모두 검사 스크립트로 실제로 뚫리는 것을 확인했습니다.

넣은 것코드에서
① SQL 주입/search 이름 검색이 f-문자열로 SQL을 만듦. 로그인 없이 손님 토큰까지 빼냄
② 경로 이동/receipt?file=../app/config.py로 영수증 폴더 밖 파일을 내려받음
③ 남의 예약 보기/reservation?id=가 로그인만 확인하고 주인은 확인하지 않음
④ 코드에 박힌 관리자 비밀번호config.py의 ADMIN_PASSWORD, 주소창 ?pw=로 전달
⑤ 저장형 XSS관리자 화면에서 손님이 쓴 요청 사항만 이스케이프하지 않음
⑥ 약한 비밀번호 저장소금(솔트) 없는 MD5 해시
미끼 3개허용 목록으로만 고르는 ORDER BY 이어 붙이기, 고정 인자 subprocess, 테스트용 예시 비밀번호

채점 기준은 실행 전에 공식 README와 보고서 규격 문서에서 뽑아 고정했고, 요청문에는 넣지 않았습니다. 찾은 취약점 6점에 보고 형식 5점(심각도, 공격 시나리오, 전제 조건·확신도, 고치는 방향, 기계가 읽는 결과)을 더해 11점 만점입니다. 미끼를 취약점으로 보고하면 하나에 1점씩 뺍니다.

같은 요청, 세 가지 조건 비교

①·②는 “이 저장소는 동네 카페가 쓰는 예약 관리 웹앱입니다. 보안 취약점을 찾아 보고서로 정리해 주세요. 코드는 고치지 마세요. 시간이 오래 걸리고 토큰을 많이 써도 괜찮다는 것을 이해했습니다.“를, ③은 앞의 요청문을 보냈습니다.

검사① 플러그인 없음 (1·2)② 깔아 두기만 (1·2)③ /claude-security (1·2)
찾은 취약점(6개 중)6 · 66 · 55 · 5
미끼를 취약점으로(오탐)0 · 00 · 00 · 0
보고 형식(5개 중)3 · 43 · 55 · 5
합계(11점 중)9 · 109 · 1010 · 10
claude-security가 쓰였나해당 없음안 불림 · 저절로 불림불림 · 불림
걸린 시간1~2분2분 · 8분 남짓9분 남짓 · 8분 안팎
사용량(API 단가)0.52 · 0.59달러0.53 · 6.47달러6.87 · 6.60달러
보안 안전장치 걸림2회 · 1회2회 · 0회0회 · 0회

여섯 번 모두 요청대로 코드를 고치지 않았습니다(git으로 확인한 변경 0). claude-security가 돈 세 번은 7~8건을 올렸습니다. 심어 둔 5개 말고도 “/search에 로그인이 없어 손님 예약이 다 보인다”, “남의 영수증도 받아진다” 같은 항목이 2~3건 더 있었습니다. 플러그인 없이 한 쪽도 같은 내용을 짚었습니다.

플러그인이 놓친 한 가지: 코드에 박힌 관리자 비밀번호

claude-security 세 번 모두 config.py의 관리자 비밀번호를 별도 항목으로 올리지 않았습니다. 경로 이동 항목에서 “?file=../app/config.py로 관리자 비밀번호를 얻는다”며 피해 예시로만 적었습니다. 조사 관점에 “암호·비밀 정보”가 있었는데도 그렇습니다. 왜 빠졌는지는 보고서에 남지 않았습니다.

플러그인 안내 문서에 따르면 커밋된 키·비밀번호만 따로 찾는 점검(secrets pass)은 큰 저장소에서 “공격 표면 위주” 설정이 켜질 때 돕니다. 이번처럼 작은 저장소에서는 그 설정이 꺼집니다. 플러그인 없이 한 세 번은 모두 관리자 비밀번호를 별도 항목으로 적었고, 두 번은 “이미 노출된 것으로 보고 교체하라”고 권했습니다.

플러그인 쪽이 나았던 것: 검증과 보고 형식

claude-security 보고서는 항목마다 영향, 위치(CWE 번호), 공격 시나리오, 전제 조건, 고치는 법, 검증 결과가 같은 순서로 붙습니다. 예를 들어 SQL 주입 항목의 전제 조건에는 “서버가 127.0.0.1에만 열려 있어 원격 공격에는 앞단 프록시가 필요하다”고 적었습니다. 확신도도 high·medium으로 나뉘어, 남의 예약 보기처럼 판단이 갈리는 항목은 medium이었습니다. 아래는 ③ 1회차가 점검을 마치고 남긴 답의 표입니다.

실행 기록 · ③ 1회차 대화의 마지막 답에서 옮김

스캔을 마쳤습니다. 보고서는 `CLAUDE-SECURITY-20261018-034242/CLAUDE-SECURITY-RESULTS.md`에 있습니다. 같은 폴더에 CI용 JSONL, SARIF, 리비전 스탬프 파일도 함께 저장했습니다. 폴더 안에 `.gitignore`가 있어서 커밋에는 포함되지 않습니다. 코드는 수정하지 않았습니다.

검증 패널을 통과한 발견은 **8건**(HIGH 2, MEDIUM 5, LOW 1)이고, 검증 상태는 **`verified`**입니다. 연구자 4명 모두 결과를 반환했고, 최상위 디렉터리 3개를 빠짐없이 검토했습니다.

| ID | 심각도 | 내용 | 위치 |
|---|---|---|---|
| F1 | HIGH | `/search`의 SQL 인젝션: 로그인 없이 손님 토큰·전화번호·비밀번호 해시를 빼낼 수 있음 | `app/db.py:69` |
| F2 | HIGH | `/receipt`의 경로 조작: 가입만 하면 누구나 `cafe.db`나 설정 파일 등 서버의 임의 파일을 읽을 수 있음 | `app/server.py:54` |
| F3 | MEDIUM | 예약 메모를 통한 저장형 XSS: `/admin`에서 실행되어 URL에 담긴 관리자 비밀번호가 유출될 수 있음 | `app/views.py:22` |
| F4 | MEDIUM | 영수증이 요청한 손님과 연결되지 않아 다른 손님 영수증도 조회됨 | `app/server.py:52` |
| F5 | MEDIUM | 비밀번호를 솔트 없는 MD5로 저장 | `app/db.py:29` |
| F6 | MEDIUM | 예약 id만 바꾸면 다른 손님 예약을 조회할 수 있음(IDOR) | `app/server.py:40` |
| F7 | MEDIUM | `/search`에 인증이 없어 손님 예약 전체가 노출됨 | `app/server.py:45` |
| F8 | LOW | 가입 응답 차이로 전화번호의 가입 여부가 드러남 | `app/server.py:71` |

서버는 기본적으로 `127.0.0.1`에만 연결을 받습니다. 그래서 외부 공격은 앞단에 리버스 프록시 등이 있을 때 가능합니다. 그래도 F1과 F2는 각각 로그인 없이, 또는 공개 가입만으로 DB 전체가 털리는 문제라 가장 먼저 고치시길 권합니다. 모든 결과는 코드를 읽어서 판단한 것이고, 공격을 실제로 실행해 보지는 않았습니다.

플러그인 없이 받은 보고서도 심각도·공격 예·고치는 방향은 다 있었습니다. 다만 항목마다 전제 조건을 적은 것은 한 번뿐이었고, CI 도구에 넣을 SARIF 같은 파일은 없었습니다.

플러그인 없이 할 때: 보안 안전장치가 걸림

플러그인 없이 요청한 세 번은 모두 중간에 Opus 5.5의 보안 안전장치에 걸렸습니다. 두 번은 보고서 앞에 “안전 분류기에 걸려 서버를 띄워 재현하는 단계는 하지 않았다”고 적었습니다. 두 번은 안내 문구대로 답의 일부를 Opus 4.8이 대신 썼습니다(사용량 0.15~0.16달러어치). claude-security가 돈 세 번은 한 번도 걸리지 않았고, 모든 답을 Opus 5.5가 썼습니다.

공식 README에도 “Opus 5.5에서 점검 일부가 가끔 Opus 4.8로 바뀔 수 있다”는 안내가 있습니다. 이번에는 오히려 플러그인 없이 할 때만 그런 일이 생겼습니다. 이번 여섯 번에서 본 결과이고, 늘 그렇다는 뜻은 아닙니다.

깔아 두기만 했을 때: 한 번은 저절로 불림

②는 같은 요청에 한 번은 플러그인을 부르지 않았고, 한 번은 스스로 불렀습니다. 깔아 둔 폴더에서 “보안 점검”을 부탁하면 어느 쪽이 될지 모르니, 비용이 신경 쓰이면 필요할 때만 켜 두는 편이 낫습니다.

3단계. 내 저장소에 써 보기 (10분 안팎)

점검할 저장소 폴더에서 클로드 코드를 열고 /claude-security만 보내면 메뉴가 뜹니다. 메뉴는 저장소 점검(추천), 바뀐 부분 점검, 패치 제안 세 가지입니다. 이번처럼 한 번에 보내려면 범위와 강도, 비용 확인을 요청문에 함께 적습니다.

  • 저장소 전체: /claude-security 저장소 전체를 medium으로 스캔해 주세요. 시간이 오래 걸리고 토큰을 많이 써도 괜찮다는 것을 이해했습니다.
  • 작업 중인 브랜치만: /claude-security 지금 브랜치에서 바뀐 부분을 high로 스캔해 주세요. 기능 하나 크기의 변경은 high를 권한다고 공식 문서에 적혀 있습니다.
  • 고치기: 점검이 끝나면 “이 발견들에 대한 수정 패치를 제안해 드릴까요?”라고 묻습니다. 패치는 patches/F1.patch처럼 파일로만 나오고, 적용은 git apply로 직접 합니다(공식 문서 기준, 이번에는 패치까지 돌리지 않았습니다).
  • 터미널에서 Shift+Tab으로 자동 모드를 켜 두면 중간에 권한을 덜 묻습니다. 플러그인도 시작할 때 자동 모드를 권한다는 문구를 띄웁니다.
  • 이렇게 나오면 성공 저장소에 CLAUDE-SECURITY-날짜시각/ 폴더가 생기고 그 안에 CLAUDE-SECURITY-RESULTS.md, .jsonl, .sarif가 있습니다. 답변에 검증 상태 verified가 나옵니다.
  • “The scan pipeline is unavailable in this session”(점검 파이프라인을 쓸 수 없음)이 나오면: 이 플러그인은 클로드 코드의 워크플로 기능으로 돕니다. /config에 “Dynamic workflows” 줄이 있으면 켜고 클로드 코드를 다시 엽니다. 조직 정책으로 막혀 있으면 쓸 수 없습니다.
  • 남이 만든 저장소나 처음 보는 코드를 점검할 때는 공식 문서가 sandbox-runtime(파일·네트워크를 막는 격리 실행) 안에서 돌리기를 권합니다. 플러그인 자체에는 격리 장치가 없습니다.

이런 사람에게 권합니다

  • ✅ 공개 전 서비스나 회사 저장소를 점검하는데, “정말 뚫리는가”를 다른 에이전트가 한 번 더 따져 본 보고서가 필요한 사람. CI에 넣을 SARIF·JSONL도 같이 나옵니다.
  • ✅ 브랜치·풀 리퀘스트마다 바뀐 부분만 점검하고 싶은 사람(공식 문서 기준 기능).
  • ❌ 작은 개인 프로젝트를 한 번 훑어보려는 사람. 이번 233줄 앱에서는 “보안 취약점을 찾아 보고서로 정리해 주세요”만으로 6개를 다 찾았고, 비용은 12분의 1이었습니다.
  • ❌ 코드에 박힌 비밀번호·키를 찾는 것이 주목적인 사람. 이번 세 번에서는 별도 항목으로 나오지 않았습니다. 비밀 정보 검사 도구를 따로 쓰거나 요청문에 적어 둡니다.

한계와 주의할 점

  • 233줄짜리 가상 웹앱 하나로 조건마다 두 번씩만 돌렸습니다. 수백 개 파일이 넘는 저장소에서는 플러그인이 구성 요소를 나눠 읽고 비밀 정보 점검도 따로 돌리므로 결과가 다를 수 있습니다.
  • 공식 문서도 “같은 코드를 두 번 점검해도 결과가 다를 수 있다”고 밝힙니다. 실제로 ③의 조사자 수는 1회차 4명, 2회차 8명으로 달랐습니다.
  • 점검은 코드를 읽어서 판단합니다. 이번에도 공격을 실제로 실행해 보지는 않았다고 보고서에 적었습니다. 정적 분석 도구(SAST)·의존성 검사·코드 리뷰를 대신하지 않는다는 것이 공식 설명입니다.
  • 사용량은 API 단가로 계산한 값입니다. 구독 요금제라면 그만큼 사용량 한도에서 빠지고, 조사·검증 에이전트가 생각 깊이 “매우 높음”으로 돌아 한도가 빨리 찹니다.

대안

방법다른 점이럴 때 고르세요
claude-security 플러그인(이 글)조사 에이전트 여럿 + 검증 셋, 보고서·SARIF·패치 파일공개 전 점검, 검증된 보고서가 필요할 때
요청만으로 점검이번 실험에서 6개를 다 찾고 비용 12분의 1. 안전장치에 걸려 일부를 Opus 4.8이 답하기도 함작은 저장소를 빨리 훑을 때
security-guidance 플러그인코드를 쓰는 순간 위험한 패턴에 경고하는 훅. 다 쓴 저장소를 점검하지는 않음쓰는 중에 실수를 막고 싶을 때
/code-review보안만이 아니라 버그 전반을 찾는 검토풀 리퀘스트 검토가 목적일 때
Claude Security(웹 서비스)같은 점검을 Anthropic이 운영하는 서비스로 제공(공식 소개 기준, 이번에는 써 보지 않음)팀 단위로 계속 점검할 때

자주 묻는 질문

claude-security는 무료인가요?

플러그인 자체는 무료로 깔 수 있습니다. 라이선스는 Anthropic 독점이고, Anthropic 제품 이용 약관 아래에서 쓰도록 허가합니다. 쓸 때는 Claude 사용량이 듭니다. 이번 233줄 앱 한 번에 API 단가로 6.47~6.87달러어치였습니다.

파이썬 말고 다른 언어도 점검하나요?

공식 문서는 특정 언어로 제한하지 않습니다. 이번 보고서에는 “파이썬은 관리형 언어라 메모리 안전성 관점은 뺐다”는 줄이 있었습니다. C·C++처럼 메모리를 직접 다루는 언어라면 그 관점도 함께 봅니다. 이번 실험은 파이썬으로만 했습니다.

점검하다가 코드를 고쳐 버리지는 않나요?

이번 여섯 번 모두 코드 파일은 바뀌지 않았습니다. 공식 문서도 패치는 파일로만 내고 적용·커밋·푸시는 하지 않는다고 밝힙니다. 결과 폴더는 .gitignore로 커밋에서 빠집니다.

클로드 앱에서도 쓸 수 있나요?

플러그인 디렉터리에는 클로드 코드·코워크·claude.ai 모두 표시되어 있습니다. 이 글은 클로드 코드 터미널 기준입니다. 디렉터리에서 찾는 법은 클로드 플러그인 디렉터리 글을 참고하세요.

출처

claude-security 플러그인 폴더, claude-security README, Claude Security 제품 소개, 클로드 코드 플러그인 문서 (모두 2026-10-18 확인, 저장소 별 41,885개)