Guide 26 · 보안 가이드
엔비디아 스킬스펙터(SkillSpector) — 클로드 스킬 위험 패턴 71개 한글 정리 + 검사 가이드
클로드 스킬은 깔면 클로드가 그 안의 지시와 스크립트를 그대로 믿고 실행해요. 엔비디아가 공개한 스킬스펙터(SkillSpector)는 스킬을 깔기 전에 위험 패턴 71개(17개 분야)를 찾아내고, 스킬마다 0~100점 위험 점수를 매겨 주는 무료 보안 검사 도구예요(깃허브 별 2.4만, Apache-2.0, 2026-11-04 기준).
이 페이지에 설치 명령어, 실제 검사 화면, 위험 패턴 전체 한글 표, 클로드 코드에 바로 붙여 넣는 프롬프트를 정리했어요.
더 많은 클로드 활용법: 유튜브 빌더조쉬 구독 · 조쉬의 뉴스레터 구독

한눈에 보기
| 항목 | 내용 |
|---|---|
| 만든 곳 | 엔비디아(NVIDIA) — 엔비디아가 스킬을 공개하기 전에 검사·평가·서명하는 파이프라인에 쓰는 도구 |
| 하는 일 | 스킬 폴더·SKILL.md·깃허브 저장소·zip을 검사해서 위험한 지시·코드·의존성을 찾아요 |
| 결과 | 스킬마다 0~100점 위험 점수 + 등급(LOW·MEDIUM·HIGH·CRITICAL) + 고치는 방법 |
| 잡아내는 것 | 위험 패턴 71개, 17개 분야 (프롬프트 인젝션, 데이터 유출, 권한 상승, 공급망 등) |
| 비용 | 무료 오픈소스(Apache-2.0). --no-llm 으로 돌리면 API 키·요금 없이 내 컴퓨터에서만 검사 |
| 왜 필요한가 | README 기준, 연구에서 분석한 스킬 31,132개 중 26.1%에서 취약점, 5.2%에서 악의적 의도가 의심됐다고 해요 |
설치 — 명령어 한 줄 (전역 설치)
먼저 파이썬 도구 관리자 uv가 있어야 해요. 없으면 하나만 실행하세요.
Bash
# 맥 (Homebrew)
brew install uv
# 또는 맥·리눅스 공통
curl -LsSf https://astral.sh/uv/install.sh | sh그다음 README 공식 명령으로 스킬스펙터를 깔아요. uv tool install 은 전역 설치라 어느 폴더에서든 skillspector 명령을 쓸 수 있어요.
Bash
uv tool install git+https://github.com/NVIDIA/skillspector.git
# 나중에 업데이트
uv tool update skillspector
- 설치 끝에
is not on your PATH경고가 나오면uv tool update-shell을 한 번 실행하고 터미널을 새로 여세요. - 설치 확인:
skillspector --help
써 보기 — 내 스킬 폴더 통째로 검사
클로드 코드 스킬은 보통 ~/.claude/skills(전체) 또는 프로젝트의 .claude/skills(그 폴더만)에 있어요. 폴더째 넣고 --recursive 를 붙이면 스킬마다 따로 검사해요.
Bash
skillspector scan ~/.claude/skills --recursive --no-llm -o report.md--no-llm: AI 분석 없이 규칙 검사만 해요. 무료이고 빨라요(스킬 10개 약 15초).-o report.md: 스킬별 자세한 이유·위치·고치는 법을 파일로 저장해요. 화면에는 점수표만 남아요.

위 화면은 공개 스킬 10개를 복사한 연습 폴더로 실제로 돌린 결과예요. 스킬마다 점수(0~100) · 등급 · 발견 개수가 표로 나와요. 점수가 높다고 무조건 악성은 아니에요 — 스크립트를 실행하는 스킬은 정상이어도 점수가 올라가요. report.md 에서 어떤 줄이 왜 걸렸는지 꼭 읽어 보세요.
점수 읽는 법 (README 기준)
| 점수 | 등급 | 권장 |
|---|---|---|
| 0~20 | LOW | 설치해도 됨 (SAFE) |
| 21~50 | MEDIUM | 주의 (CAUTION) — 걸린 부분 읽어 보고 판단 |
| 51~80 | HIGH | 설치하지 말 것 (DO NOT INSTALL) |
| 81~100 | CRITICAL | 설치하지 말 것 (DO NOT INSTALL) |
- 점수 계산: CRITICAL 1건 +50, HIGH +25, MEDIUM +10, LOW +5. 실행 파일(스크립트)이 들어 있으면 1.3배.
깔기 전에 검사하는 다른 방법
Bash
# 깃허브 저장소를 받기 전에 바로 검사
skillspector scan https://github.com/<사용자>/<스킬저장소> --no-llm
# SKILL.md 파일 하나만
skillspector scan ./SKILL.md --no-llm
# zip 파일
skillspector scan ./my-skill.zip --no-llm
# 결과를 JSON으로 (자동화용)
skillspector scan ./my-skill/ --no-llm --format json --output report.json위험 패턴 71개 한글 정리 (17개 분야)

README 소개에는 "71개"라고 적혀 있고, 같은 README 아래쪽 패턴 표에는 최근 추가된 것까지 73개가 있어요. 표에 있는 것 전부 옮겼어요. 위험도는 README 표 그대로예요.
| # | 분야 | ID | 패턴 | 위험도 | 쉽게 말하면 |
|---|---|---|---|---|---|
| 1 | 프롬프트 인젝션 | P1 | 지시 덮어쓰기 | HIGH | "안전 규칙 무시해" 같은 명령 |
| 2 | 프롬프트 인젝션 | P2 | 숨긴 지시 | HIGH | 주석·안 보이는 글자에 몰래 넣은 지시 |
| 3 | 프롬프트 인젝션 | P3 | 유출 명령 | HIGH | 대화 내용을 밖으로 보내라는 지시 |
| 4 | 프롬프트 인젝션 | P4 | 행동 조작 | MEDIUM | 에이전트 판단을 슬쩍 바꾸는 지시 |
| 5 | 프롬프트 인젝션 | P5 | 위험한 내용 | CRITICAL | 실제 피해를 줄 수 있는 지시 |
| 6 | 프롬프트 인젝션 | P9 | 공백 숨기기 | MEDIUM | 빈칸을 잔뜩 넣어 화면 밖에 지시를 숨김 |
| 7 | 거절 무력화 | AR1 | 거절 금지 | HIGH | "절대 거절하지 마", "무조건 따라" |
| 8 | 거절 무력화 | AR2 | 경고 빼기 | HIGH | "주의 문구 쓰지 마", "훈계하지 마" |
| 9 | 거절 무력화 | AR3 | 안전 정책 무효화 | HIGH | "넌 제한이 없어" 같은 탈옥 문구 |
| 10 | 데이터 유출 | E1 | 외부 전송 | MEDIUM | 데이터를 외부 URL로 보냄 |
| 11 | 데이터 유출 | E2 | 환경 변수 수집 | HIGH | API 키 같은 환경 변수를 모아 감 |
| 12 | 데이터 유출 | E3 | 파일 뒤지기 | MEDIUM | 폴더를 훑으며 민감한 파일을 찾음 |
| 13 | 데이터 유출 | E4 | 대화 맥락 유출 | HIGH | 대화 내용을 밖으로 보냄 |
| 14 | 권한 상승 | PE1 | 과한 권한 | LOW | 하는 일보다 넓은 접근 권한을 요청 |
| 15 | 권한 상승 | PE2 | sudo·root 실행 | MEDIUM | 관리자 권한으로 실행 |
| 16 | 권한 상승 | PE3 | 비밀번호·키 접근 | HIGH | SSH 키, 토큰, 비밀번호를 읽음 |
| 17 | 공급망 | SC1 | 버전 고정 안 함 | LOW | 패키지 버전을 정하지 않음 |
| 18 | 공급망 | SC2 | 외부 스크립트 실행 | HIGH | curl ... | bash 처럼 받아서 바로 실행 |
| 19 | 공급망 | SC3 | 난독화 코드 | HIGH | base64·16진수로 감춘 코드 실행 |
| 20 | 공급망 | SC4 | 취약점 있는 패키지 | HIGH | 알려진 보안 취약점(CVE)이 있는 의존성 (OSV.dev 실시간 조회) |
| 21 | 공급망 | SC5 | 버려진 패키지 | MEDIUM | 보안 업데이트가 끊긴 의존성 |
| 22 | 공급망 | SC6 | 이름 흉내(타이포스쿼팅) | HIGH | 유명 패키지와 헷갈리는 이름 |
| 23 | 공급망 | SC8 | 파이썬 바이트코드 포함 | HIGH | .pyc 파일로 악성 코드를 숨김 |
| 24 | 공급망 | SC9 | 숨긴 실행 파일 | HIGH | 문서 안이나 숨김 파일에 실행 파일을 넣음 |
| 25 | 공급망 | SC10 | 패키지 출처 바꾸기 | HIGH | 패키지를 받는 저장소 주소를 바꾸거나 추가 |
| 26 | 과한 자율성 | EA1 | 도구 무제한 사용 | HIGH | 제약 없이 모든 도구를 쓰게 함 |
| 27 | 과한 자율성 | EA2 | 혼자 중요한 결정 | HIGH | 사람 확인 없이 큰 결정을 내림 |
| 28 | 과한 자율성 | EA3 | 목적 밖 기능 | MEDIUM | 설명한 용도보다 더 많은 일을 함 |
| 29 | 과한 자율성 | EA4 | 무제한 자원 사용 | MEDIUM | 호출 횟수·사용량 제한이 없음 |
| 30 | 과한 자율성 | EA5 | 외부 모델·업체 지정 | MEDIUM/HIGH | 다른 AI 모델·CLI를 불러 과금 계정이 바뀔 수 있음 |
| 31 | 출력 처리 | OH1 | 검증 없는 출력 사용 | HIGH | AI 답을 걸러내지 않고 그대로 실행·삽입 |
| 32 | 출력 처리 | OH2 | 경계 넘는 출력 | MEDIUM | 출력이 검증 없이 다른 시스템으로 넘어감 |
| 33 | 출력 처리 | OH3 | 출력 무제한 | MEDIUM | 출력 크기·속도 제한이 없음 |
| 34 | 시스템 프롬프트 유출 | P6 | 직접 유출 | HIGH | 시스템 프롬프트·내부 규칙을 보여 주게 함 |
| 35 | 시스템 프롬프트 유출 | P7 | 우회 추출 | MEDIUM | 번역·바꿔 말하기로 몰래 빼냄 |
| 36 | 시스템 프롬프트 유출 | P8 | 도구로 유출 | HIGH | 파일 쓰기·네트워크로 시스템 프롬프트를 내보냄 |
| 37 | 기억 오염 | MP1 | 계속 남는 주입 | HIGH | 다음 대화까지 남도록 심어 둔 내용 |
| 38 | 기억 오염 | MP2 | 맥락 채워 넣기 | MEDIUM | 쓸모없는 글로 안전 규칙을 밀어냄 |
| 39 | 기억 오염 | MP3 | 기억 조작 | HIGH | 에이전트 메모리·저장된 상태를 고침 |
| 40 | 도구 오용 | TM1 | 도구 옵션 악용 | HIGH | shell=True, --force 같은 위험한 옵션 |
| 41 | 도구 오용 | TM2 | 도구 연결 악용 | HIGH | 도구를 이어 붙여 각각의 안전장치를 피함 |
| 42 | 도구 오용 | TM3 | 위험한 기본값 | MEDIUM | TLS 끄기, 인증 없음 같은 느슨한 설정 |
| 43 | 통제 벗어난 에이전트 | RA1 | 자기 수정 | CRITICAL | 실행 중에 자기 코드·설정을 바꿈 |
| 44 | 통제 벗어난 에이전트 | RA2 | 몰래 계속 실행 | HIGH | 크론·시작 프로그램에 몰래 등록 |
| 45 | 트리거 악용 | TR1 | 너무 넓은 트리거 | MEDIUM | 흔한 단어에도 스킬이 켜짐 |
| 46 | 트리거 악용 | TR2 | 명령 가로채기 | HIGH | 기본 명령·다른 스킬 이름을 덮어씀 |
| 47 | 트리거 악용 | TR3 | 키워드 미끼 | MEDIUM | 최대한 자주 켜지도록 만든 트리거 |
| 48 | 위험 코드(AST) | AST1 | exec() 호출 | CRITICAL | 아무 코드나 실행할 수 있음 |
| 49 | 위험 코드(AST) | AST2 | eval() 호출 | HIGH | 아무 식이나 계산·실행 |
| 50 | 위험 코드(AST) | AST3 | 동적 import | HIGH | 실행 중에 아무 모듈이나 불러옴 |
| 51 | 위험 코드(AST) | AST4 | subprocess 호출 | HIGH | 외부 명령 실행 |
| 52 | 위험 코드(AST) | AST5 | os.system 류 | HIGH | os 모듈로 셸 명령 실행 |
| 53 | 위험 코드(AST) | AST6 | compile() 호출 | MEDIUM | 문자열을 코드로 바꿈 |
| 54 | 위험 코드(AST) | AST7 | 동적 getattr() | MEDIUM | 이름을 계산해서 속성에 접근 |
| 55 | 위험 코드(AST) | AST8 | 위험한 실행 연결 | CRITICAL | 네트워크·암호화된 데이터를 exec/eval로 실행 |
| 56 | 위험 코드(AST) | AST9 | getattr 우회 실행 | HIGH | getattr(os,'system') 처럼 돌려서 실행 |
| 57 | 데이터 흐름 추적 | TT1 | 직접 흐름 | HIGH | 입력이 걸러지지 않고 바로 위험한 곳으로 감 |
| 58 | 데이터 흐름 추적 | TT2 | 변수 거친 흐름 | MEDIUM | 중간 변수를 거쳐 위험한 곳으로 감 |
| 59 | 데이터 흐름 추적 | TT3 | 비밀 유출 연결 | CRITICAL | 환경 변수·비밀 값이 네트워크로 나감 |
| 60 | 데이터 흐름 추적 | TT4 | 파일 → 네트워크 | HIGH | 파일 내용이 네트워크로 나감 |
| 61 | 데이터 흐름 추적 | TT5 | 외부 입력 → 실행 | CRITICAL | 외부 입력이 exec·subprocess로 실행됨 |
| 62 | YARA 시그니처 | YR1 | 악성코드 일치 | CRITICAL | 알려진 악성코드 패턴과 같음 |
| 63 | YARA 시그니처 | YR2 | 웹셸 일치 | CRITICAL | 서버 원격 조종용 웹셸 패턴 |
| 64 | YARA 시그니처 | YR3 | 채굴기 일치 | HIGH | 암호화폐 몰래 채굴 흔적 |
| 65 | YARA 시그니처 | YR4 | 해킹 도구 일치 | HIGH | 해킹 도구·익스플로잇 코드 |
| 66 | MCP 최소 권한 | LP1 | 권한 숨김 | HIGH | 선언하지 않은 기능을 코드가 씀 |
| 67 | MCP 최소 권한 | LP2 | 와일드카드 권한 | MEDIUM | 권한 목록에 *, all, full 같은 값 |
| 68 | MCP 최소 권한 | LP3 | 권한 선언 없음 | MEDIUM | 권한 항목이 없는데 코드는 기능을 씀 |
| 69 | MCP 최소 권한 | LP4 | 권한 과다 선언 | LOW | 선언만 하고 실제로 안 쓰는 권한 |
| 70 | MCP 도구 오염 | TP1 | 숨긴 지시 | HIGH | 도구 설명에 숨긴 주석·안 보이는 글자·base64 |
| 71 | MCP 도구 오염 | TP2 | 유니코드 속임수 | HIGH | 비슷하게 생긴 글자, 오른쪽→왼쪽 문자로 속임 |
| 72 | MCP 도구 오염 | TP3 | 매개변수 설명 주입 | MEDIUM | 매개변수 설명에 지시를 끼워 넣음 |
| 73 | MCP 도구 오염 | TP4 | 설명과 동작 불일치 | MEDIUM | 도구 설명과 실제 코드 동작이 다름 (AI 분석 필요) |
- 17개 분야: 프롬프트 인젝션 · 거절 무력화 · 데이터 유출 · 권한 상승 · 공급망 · 과한 자율성 · 출력 처리 · 시스템 프롬프트 유출 · 기억 오염 · 도구 오용 · 통제 벗어난 에이전트 · 트리거 악용 · 위험 코드(AST) · 데이터 흐름 추적 · YARA 시그니처 · MCP 최소 권한 · MCP 도구 오염
클로드 코드에 바로 쓰는 프롬프트
스킬스펙터를 설치했다면 클로드 코드에게 그대로 붙여 넣으세요.
JavaScript
내 ~/.claude/skills 폴더를 skillspector로 검사해 줘. 명령은 skillspector scan ~/.claude/skills --recursive --no-llm -o report.md 로 돌리고, 점수 51점 이상인 스킬만 골라서 왜 걸렸는지 한국어로 쉽게 설명해 줘JavaScript
이 스킬 깔기 전에 검사해 줘: https://github.com/<사용자>/<스킬저장소> . skillspector scan 으로 --no-llm 검사하고, 설치해도 되는지 / 걸린 부분을 고쳐야 하는지 / 깔면 안 되는지 셋 중 하나로 판단해 줘JavaScript
report.md 를 읽고 HIGH·CRITICAL 항목을 표로 정리해 줘. 칸은 스킬 이름, 패턴 ID, 파일:줄, 실제로 위험한지(오탐 가능성), 고치는 방법JavaScript
내가 만든 스킬 폴더 ./my-skill 을 skillspector로 검사하고, 걸린 항목을 하나씩 고쳐서 다시 검사해 줘. 점수가 20점 이하(LOW)가 될 때까지 반복해 줘JavaScript
앞으로 새 스킬을 설치하기 전에는 항상 skillspector scan <경로> --no-llm 을 먼저 돌리고 결과를 보여 준 다음에 설치해 줘. 이 규칙을 CLAUDE.md 에 적어 둬이렇게 쓰면 좋아요
- 새 스킬을 받을 때마다 저장소 주소로 먼저 검사하세요. 내려받기 전에 검사할 수 있어요.
- 이미 깔린 스킬은 한 달에 한 번 폴더째 검사하세요. 스킬이 업데이트되며 바뀔 수 있어요.
- 점수만 보지 말고 report.md 의 이유를 읽으세요. 정상적인 설치 스크립트도 점수가 올라갈 수 있어요(오탐).
- 직접 만든 스킬을 남에게 공유하기 전에 검사해서 LOW로 만든 뒤 올리면 믿고 쓰기 좋아요.
- 더 꼼꼼히 보고 싶으면
--no-llm을 빼고 AI 분석을 켜세요(API 키 필요, 요금 발생).SKILLSPECTOR_PROVIDER=claude_cli로 클로드 코드 로그인을 그대로 쓸 수도 있어요.
자주 묻는 질문
- 점수가 100점인데 악성인가요? → 꼭 그렇진 않아요. 스크립트 실행·API 키 예시가 많은 스킬은 정상이어도 높게 나와요. report.md 에서 걸린 줄을 직접 확인하세요.
- skillspector 명령을 못 찾아요 →
uv tool update-shell실행 후 터미널을 새로 여세요. - 클로드 앱(채팅)에서도 되나요? → 아니요. 내 컴퓨터 터미널이나 클로드 코드에서 돌리는 도구예요.
- 돈이 드나요? →
--no-llm으로 돌리면 무료예요. AI 분석을 켤 때만 쓰는 AI 업체 요금이 나가요. - 윈도우도 되나요? → uv가 깔리면 같은 명령으로 돼요. 도커로 돌리는 방법도 README에 있어요.
링크
- 저장소: https://github.com/NVIDIA/SkillSpector
- 엔비디아 검사 가이드: https://docs.nvidia.com/skills/scanning-agent-skills
- uv 설치: https://docs.astral.sh/uv/
더 받아보기
이 페이지는 유튜브 빌더조쉬가 노션에 공개한 자료를 이미지·글 그대로 옮겨 온 아카이브입니다. 최신 내용과 업데이트는 원문에서 확인하세요.
노션 원문에서 보기 →