스킬 설치 전 검증하기
안전한 스킬과 트로이목마를 구분하는 5단계 검증 프레임워크. VirusTotal, Cisco Skill Scanner, 수동 검토, 그리고 반드시 멈춰야 하는 위험 신호.
프리미엄 강좌 콘텐츠
이 레슨은 프리미엄 강좌의 일부예요. Pro로 업그레이드하면 모든 프리미엄 강좌와 콘텐츠를 이용할 수 있어요.
- 모든 프리미엄 강좌 이용
- 1000개 이상의 AI 스킬 템플릿 포함
- 매주 새로운 콘텐츠 추가
스킬의 36%에 문제가 있어요
🔄 Quick Recall: 에이전트를 컨테이너화(레슨 3)하고 권한 경계(레슨 4)를 설정했어요. 하지만 악성 스킬은 컨테이너 안에서, 여러분의 권한 경계 안에서 실행돼요. 내부자 위협이에요. 이 레슨에서 입구에서 차단하는 법을 배워요.
Snyk가 ClawHub에서 3,984개 스킬을 스캔했어요. 결과: 1,467개(36.82%)가 어떤 형태의 취약점이나 악성 패턴을 가지고 있었어요. 그 중 534개가 치명적 심각도(13.4%)였고 76개가 확인된 악성 페이로드를 포함했어요.
별도로 Cisco가 31,000개 에이전트 스킬을 분석해 26%가 최소 하나의 취약점을 가지고 있었으며 — 외부 서버로 curl 명령을 통한 능동적 데이터 유출이 탐지되었어요.
이 레슨을 마치면 다음을 할 수 있어요:
- 설치 전 모든 스킬에 5단계 검증 프레임워크를 적용
- 자동화된 스캐닝(도움이 됨)과 수동 검토(필수)를 구분
자동화된 스캐닝만으로 부족한 이유
OpenClaw가 ClawHub 스킬에 VirusTotal 스캐닝을 통합했어요. 중요한 단계였어요: 모든 스킬이 70개 이상의 안티바이러스 엔진으로 스캔되고 결과(양성/의심/악성)가 사용자에게 표시돼요.
하지만 VirusTotal은 알려진 멀웨어 시그니처를 탐지해요. 잡는 것과 놓치는 것:
| 위협 유형 | VirusTotal이 잡나? | 이유 |
|---|---|---|
| 알려진 멀웨어 (AMOS 트로이목마) | 예 | 알려진 바이너리와 시그니처 매칭 |
| 난독화된 멀웨어 | 때때로 | 난독화 기법에 따라 다름 |
| SKILL.md의 프롬프트 인젝션 | 아니오 | 일반 텍스트 지시, 멀웨어 아님 |
| 소셜 엔지니어링 (“이것을 설치”) | 아니오 | 코드가 아니고 시그니처 아님 |
| 컨텍스트를 통한 자격증명 유출 | 아니오 | 기능적 코드, 멀웨어 아님 |
| 시간 지연 페이로드 | 설치 시 아니오 | 페이로드가 아직 존재하지 않음 |
핵심: 자동화된 스캐닝은 1번 레이어. 수동 검토가 2번 레이어. 둘 다 단독으로는 충분하지 않아요.
5단계 검증 프레임워크
서드파티 스킬을 설치하기 전에 다섯 가지를 모두 확인하세요:
1단계: 출처 확인
스킬만이 아니라 작성자를 확인하세요.
- GitHub 계정이 6개월 이상이고 실제 활동이 있나요?
- 작성자에게 다른 합법적인 저장소가 있나요?
- 계정이 지속적으로 활성인가요, 아니면 갑자기 스킬 게시를 시작했나요?
위험 신호: 수년간 비활성이었다가 갑자기 일주일에 20개 스킬을 게시한 계정.
중요한 주의: 계정 나이는 신호이지 증명이 아니에요. 탈취된 합법적 계정은 실제 히스토리를 가져요. 작성자가 신뢰할 만해 보인다고 나머지 네 단계를 건너뛰지 마세요.
2단계: 자동화된 스캐닝
두 가지 스캐너를 모두 실행하세요:
VirusTotal: ClawHub에서 스킬의 상태(양성/의심/악성)를 확인하세요. 의심 또는 악성이면 중단.
Cisco Skill Scanner: 다운로드한 스킬에서 로컬로 실행하세요. 에이전트 스킬 특유의 취약점 패턴 — 자격증명 노출, 의심스러운 네트워크 호출, 위험한 도구 사용 — 을 확인해요.
목표: 두 스캐너 모두 발견 사항 0. 발견 사항이 있으면 설치 전에 조사가 필요해요.
3단계: 전체 파일 검토
✅ Quick Check: 스킬을 다운로드했어요. SKILL.md는 깨끗해 보여요 — 회의록 포맷팅을 위한 유용한 지시. 하지만
scripts/setup.sh파일이 보여요. 스킬을 설치해야 하나요? (답: setup.sh의 모든 줄을 읽기 전에는 안 돼요. Snyk는 무해한 SKILL.md 파일이 종종 악성 번들 스크립트와 함께 제공되는 것을 발견했어요. ClawHavoc 캠페인이 정확히 이 패턴으로 멀웨어를 전달했어요.)
SKILL.md뿐만 아니라 스킬 디렉토리의 모든 파일을 읽으세요:
| 파일 유형 | 확인할 것 |
|---|---|
| SKILL.md | 외부 URL 참조, 에이전트에게 데이터 전송 지시, 에이전트 설정/메모리 수정 지시 |
| scripts/*.py, *.sh | 다운로드, 네트워크 호출, 시스템 수정, 인코딩/난독화된 코드 |
| 설정 파일 | 하드코딩된 URL, 예상치 못한 엔드포인트, 내장된 자격증명 |
| assets/ | 비정상적으로 큰 바이너리 파일, 데이터로 위장한 실행 파일 |
스크립트의 위험 신호:
- 낯선 도메인으로의
curl또는wget - Base64 인코딩된 문자열 (악성 코드 은닉에 사용)
- 소프트웨어를 설치하는 명령 (
pip install,npm install,brew install) - 스킬 자체 디렉토리 밖의 파일 작업
4단계: 사전 요구사항 확인
스킬이 무언가를 설치하라고 요구하면 모든 의존성을 하나하나 확인하세요:
- 패키지 이름을 독립적으로 검색. 실제로 알려진 패키지인가?
- URL을 공식 소스와 대조. 실제 npm 레지스트리인가, 타이포스쿼팅된 패키지가 아닌가?
ClawHavoc 캠페인은 335개 스킬이 사용자에게 실제로는 멀웨어인 “사전 요구사항” 설치 명령을 실행하라고 해서 성공했어요.
규칙: 스킬 README의 설치 명령을 모든 패키지와 URL을 독립적으로 확인하지 않고는 절대 실행하지 마세요.
5단계: 격리된 테스트
실제 데이터로 스킬을 사용하기 전에 격리해서 테스트하세요:
- 새로운 에이전트 인스턴스를 만들거나 별도 Docker 컨테이너를 사용
- 개인 API 키나 자격증명을 로드하지 않기
- 더미 데이터로 스킬 실행
- 스킬이 무엇을 하는지 모니터링: 어떤 파일에 접근하나? 어떤 네트워크 호출을 하나?
스킬이 범위 밖의 파일에 접근하거나 예상치 못한 네트워크 요청을 하거나 설명과 다르게 동작하면 — 설치하지 마세요.
빠른 참조 체크리스트
- 출처: 작성자 계정 6개월 이상, 실제 활동, 일관된 패턴
- 스캔: VirusTotal 양성 + Cisco Skill Scanner 발견 사항 0
- 검토: 모든 파일 읽기 (SKILL.md + 스크립트 + 설정 + 에셋)
- 사전 요구사항: 모든 의존성을 독립적으로 확인
- 테스트: 자격증명 없는 격리된 환경에서 올바르게 실행
하나라도 건너뛰면? 설치하지 마세요.
설치 후: 지속적 경계
검증은 설치에서 끝나지 않아요. 설치 시 안전했던 스킬을 구체적으로 표적으로 하는 두 가지 공격 벡터:
의존성 포이즈닝: 합법적인 npm 패키지를 참조하는 스킬. 설치 후 공격자가 그 의존성의 악성 버전을 게시. 스킬이 손상된 버전으로 자동 업데이트.
시간 지연 공격: 설치 시 모든 스캔을 통과하는 스킬. 신뢰(와 스타)를 얻은 후 공격자가 악성 업데이트를 푸시.
방어: 의존성 버전을 고정. 업데이트 알림 구독. 설치된 스킬을 주기적으로 Cisco Skill Scanner로 재스캔.
핵심 정리
- **ClawHub 스킬의 36.82%**가 취약점이나 악성 패턴을 가지고 있었어요 — 자동화된 스캐닝만으로는 절반도 못 잡아요
- VirusTotal은 알려진 멀웨어를 탐지하지만 프롬프트 인젝션, 소셜 엔지니어링, 자격증명 유출은 놓쳐요
- 5단계 프레임워크: 출처 확인, 자동화된 스캐닝, 전체 파일 검토, 사전 요구사항 확인, 격리된 테스트
- 탈취된 계정이 작성자 평판을 신호로 만들지 증명은 아니에요
- 모든 파일을 읽으세요, SKILL.md만이 아니라 — 악성 페이로드가 스크립트와 에셋에 숨어요
- 설치 후 경계가 의존성 포이즈닝과 시간 지연 공격을 잡아요
다음 레슨
스킬을 검증하고 권한을 제어하고 있어요. 하지만 실행 후 문제가 생기면 어떻게 알 수 있을까요? 다음 레슨에서 모니터링과 로깅을 다뤄요 — 피해가 발생하기 전에 위협을 실시간으로 잡는 방법.
이해도 체크
먼저 위의 퀴즈를 완료하세요
레슨 완료!