NVIDIA SkillSpector

🏷️ 정보 Headliner 에이전트 오픈소스 AI평가

이 글은 NVIDIA/SkillSpector GitHub 저장소 및 관련 자료를 바탕으로 작성했습니다.

Claude Code·Codex CLI·Gemini CLI 같은 에이전트 도구가 스킬이나 MCP 확장을 실행하는 방식은 생각보다 취약합니다. 에이전트는 스킬이 시키는 대로 파일을 읽고 외부 API를 호출하고 코드를 실행합니다. 스킬 하나가 오염되면 에이전트 전체 실행 컨텍스트가 공격자 손에 들어올 수 있습니다.

NVIDIA가 공개한 SkillSpector는 이 위협에 직접 대응하는 오픈소스 정적·시맨틱 보안 스캐너입니다. 2026년 6월 16일 v2.0.0으로 출시됐고, 이틀 만에 GitHub 스타 5,500개를 넘겼습니다.

왜 스킬이 공격 표면이 됐나

에이전트 스킬과 MCP 확장은 사실상 코드입니다. 사용자가 "Jira 티켓을 열어줘"라고 하면 에이전트는 설치된 Jira 스킬을 호출하고, 그 스킬은 로컬 파일 시스템이나 네트워크에 접근하는 코드를 실행합니다. 이 과정에 악성 코드가 끼어든다면 어떻게 될까요.

Liu et al. (2026)의 "Agent Skills in the Wild" 연구는 42,447개 야생 스킬을 스캔한 결과를 공개했습니다. 26.1%에서 취약점이 발견됐고, 5.2%는 악의적 의도가 의심됩니다. 네 개 중 하나는 사용하기 전에 검토가 필요하다는 결론입니다.

공격 벡터는 여러 종류입니다.

SkillSpector가 탐지하는 것

SkillSpector는 64개 취약점 패턴을 16개 카테고리로 분류해 탐지합니다.

카테고리

탐지 내용

prompt_injection

스킬 설명·메타데이터 내 인젝션 패턴

data_exfiltration

외부 전송 코드·비인가 API 호출

privilege_escalation

불필요한 권한 상승 시도

supply_chain

오염된 의존성·비신뢰 레지스트리 참조

excessive_agency

실행에 불필요한 파일/네트워크 접근

output_handling

출력물의 안전하지 않은 처리

system_prompt_leakage

시스템 프롬프트 유출 시도

memory_poisoning

에이전트 메모리 오염 시도

tool_misuse

도구 호출의 의도 외 사용

rogue_agent

무허가 에이전트 스폰

trigger_abuse

숨겨진 트리거·조건부 활성화

dangerous_code

AST 기반 위험 코드 패턴 탐지

taint_tracking

오염된 데이터 흐름 추적

yara_signatures

YARA 규칙 기반 알려진 악성 패턴

mcp_least_privilege

MCP 확장의 과도한 권한 선언

mcp_tool_poisoning

MCP 도구 메타데이터 내 인젝션

2단계 분석 파이프라인

SkillSpector의 탐지는 두 단계로 이루어집니다.

1단계 — 빠른 정적 분석: 64개 정규식 패턴 매칭, AST(추상 구문 트리) 행동 분석, 테인트 추적, YARA 시그니처 검사, OSV.dev를 통한 실시간 CVE 조회(오프라인 폴백 자동 지원). 대부분의 스캔이 이 단계에서 몇 초 안에 완료됩니다.

2단계 — 선택적 LLM 시맨틱 분석: 1단계만으로는 의도 파악이 어려운 패턴에 LLM을 투입합니다. 코드가 실제로 악의적 의도를 가지는지 자연어 수준에서 판단합니다. 추가 비용이 들지만 정밀도가 올라갑니다.

MCP 카테고리의 경우 유니코드 동형 문자나 HTML 주석으로 도구 메타데이터에 숨긴 인젝션을 탐지합니다. 육안 코드 리뷰로는 놓치기 쉬운 공격입니다.

사용 방법

설치는 pip 한 줄입니다.

pip install skillspector

스캔 대상은 Git 저장소·URL·zip 파일·디렉토리·단일 파일을 모두 지원합니다.


<!-- -->
# GitHub 저장소 스캔
skillspector scan https://github.com/some-org/some-skill


<!-- -->
# 로컬 디렉토리 스캔
skillspector scan ./my-skill-directory


<!-- -->
# LLM 시맨틱 분석 포함
skillspector scan ./my-skill --semantic


<!-- -->
# SARIF 형식 출력 (CI 통합용)
skillspector scan ./my-skill --format sarif -o results.sarif

출력은 JSON·Markdown·SARIF 세 가지 형식을 지원합니다. SARIF는 GitHub Actions·GitLab CI 등 CI/CD 파이프라인과 바로 연동할 수 있습니다. 스킬 설치 전 자동 검사를 파이프라인에 넣으면 됩니다.

야생 스킬 26.1%가 취약하다는 것의 의미

수치 자체보다 맥락이 중요합니다. 26.1%는 스킬이 악성이라는 뜻이 아닙니다. 취약점 패턴이 발견됐다는 것으로, 의도적 악용보다는 개발자 실수나 설계 결함이 많습니다. 그러나 5.2%의 "악의적 의도 의심" 수치는 다릅니다. 이미 에이전트 스킬이 사이버 공격의 진지한 표적이 됐다는 뜻입니다.

에이전트 환경에서 스킬은 코드보다 느슨하게 취급되는 경향이 있습니다. npm 패키지를 설치할 때는 그래도 package.json을 훑어보는 사람이 있지만, "유용해 보이는 MCP 서버"를 설치할 때 동일한 주의를 기울이는 사람은 드뭅니다. SkillSpector는 이 간극을 메우는 도구입니다.

프로젝트: GitHub — NVIDIA/SkillSpector