OpenClaw 보안 가이드: MITRE ATLAS 기반 위협 모델링
AI 에이전트를 개발하다 보면 보안이 항상 걱정되죠. 내가 만든 에이전트가 예상치 못한 방식으로 공격받지는 않을지, 혹은 데이터가 유출되지는 않을지 불안할 때가 많아요. 에이전트 시스템은 구조가 복잡해서 어디서부터 보안을 챙겨야 할지 막막한 경우가 대부분입니다.
OpenClaw는 이런 고민을 해결하기 위해 업계 표준인 MITRE ATLAS 프레임워크를 활용해 위협 모델을 구축했어요. AI 시스템에 특화된 보안 위협을 체계적으로 관리하고 대응할 수 있는 가이드를 소개할게요.
필요한 것
섹션 제목: “필요한 것”- MITRE ATLAS 프레임워크에 대한 기본적인 이해
- OpenClaw 시스템 아키텍처(Runtime, Gateway 등)에 대한 지식
빠른 시작
섹션 제목: “빠른 시작”OpenClaw의 보안 상태를 점검하고 위협 모델링에 참여하는 4가지 단계입니다.
- 프레임워크 참조: ATLAS Techniques와 ATLAS Tactics를 방문하여 AI 시스템을 겨냥한 공격 기법을 확인하세요.
- 보안 범위 확인: OpenClaw Agent Runtime, Gateway, Channel Integrations, ClawHub Marketplace, MCP Servers가 보호 범위에 포함되는지 체크하세요.
- 위협 보고: 새로운 보안 위협을 발견했다면 CONTRIBUTING-THREAT-MODEL.md 가이드라인에 따라 리포트를 제출하세요.
- 대응 방안 제안: 발견된 위협에 대한 완화 방법이나 공격 체인 시나리오를 커뮤니티에 공유하고 함께 논의하세요.
문제 해결
섹션 제목: “문제 해결”문서 작업이나 위협 모델링 과정에서 발생할 수 있는 상황들에 대한 해결책입니다.
- 새로운 위협을 발견했을 때: 커뮤니티에서 관리하는 CONTRIBUTING-THREAT-MODEL.md 문서를 참고하여 정해진 절차에 따라 제보해 주세요.
- 기존 위협 내용이 최신 정보와 다를 때: 이 문서는 OpenClaw 커뮤니티가 함께 관리하는 살아있는 문서입니다. 업데이트가 필요한 부분을 직접 제안하거나 수정할 수 있습니다.
보안은 한 번에 완성되는 것이 아니라 지속적으로 관리해야 하는 영역이에요. OpenClaw 위협 모델을 통해 더 안전한 AI 에이전트 환경을 함께 만들어 봐요.
더 궁금한 점이 있다면 AI Setup Assistant에 물어보세요!
다음 단계
섹션 제목: “다음 단계”메신저 앱에 AI 에이전트를 연결하거나 외부 툴을 실행할 때, 보안 걱정이 되신 적 있나요? 내 데이터가 어디로 흐르는지, 외부 공격으로부터 어떻게 보호받는지 파악하는 것은 개발자에게 정말 중요한 일이죠.
이 시스템이 복잡한 환경 속에서 어떻게 안전한 통로를 만드는지, 그 핵심 구조를 친절하게 설명해 드릴게요.
필요한 것
섹션 제목: “필요한 것”시스템 아키텍처를 이해하기 위해 필요한 구성 요소들이에요. (원문 문서 기준)
- Channels: WhatsApp, Telegram, Discord 등
- Gateway: 인증 및 접근 제어 담당
- Agent Sessions: 세션 격리 및 정책 관리
- Execution Sandbox: Docker 또는 Host 환경
- ClawHub: Skill 퍼블리싱 및 공급망 보안
Quick Start: 5분 안에 파악하는 5단계 신뢰 경계
섹션 제목: “Quick Start: 5분 안에 파악하는 5단계 신뢰 경계”시스템은 총 5개의 Trust Boundary(신뢰 경계)를 통해 데이터를 겹겹이 보호하고 있어요. 아래 다이어그램과 설명을 통해 흐름을 한눈에 확인해 보세요.
┌─────────────────────────────────────────────────────────────────┐│ UNTRUSTED ZONE ││ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ││ │ WhatsApp │ │ Telegram │ │ Discord │ ... ││ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ ││ │ │ │ │└─────────┼────────────────┼────────────────┼──────────────────────┘ │ │ │ ▼ ▼ ▼┌─────────────────────────────────────────────────────────────────┐│ TRUST BOUNDARY 1: Channel Access ││ ┌──────────────────────────────────────────────────────────┐ ││ │ GATEWAY │ ││ │ • Device Pairing (30s grace period) │ ││ │ • AllowFrom / AllowList validation │ ││ │ • Token/Password/Tailscale auth │ ││ └──────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ TRUST BOUNDARY 2: Session Isolation ││ ┌──────────────────────────────────────────────────────────┐ ││ │ AGENT SESSIONS │ ││ │ • Session key = agent:channel:peer │ ││ │ • Tool policies per agent │ ││ │ • Transcript logging │ ││ └──────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ TRUST BOUNDARY 3: Tool Execution ││ ┌──────────────────────────────────────────────────────────┐ ││ │ EXECUTION SANDBOX │ ││ │ • Docker sandbox OR Host (exec-approvals) │ ││ │ • Node remote execution │ ││ │ • SSRF protection (DNS pinning + IP blocking) │ ││ └──────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ TRUST BOUNDARY 4: External Content ││ ┌──────────────────────────────────────────────────────────┐ ││ │ FETCHED URLs / EMAILS / WEBHOOKS │ ││ │ • External content wrapping (XML tags) │ ││ │ • Security notice injection │ ││ └──────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘ │ ▼┌─────────────────────────────────────────────────────────────────┐│ TRUST BOUNDARY 5: Supply Chain ││ ┌──────────────────────────────────────────────────────────┐ ││ │ CLAWHUB │ ││ │ • Skill publishing (semver, SKILL.md required) │ ││ │ • Pattern-based moderation flags │ ││ │ • VirusTotal scanning (coming soon) │ ││ │ • GitHub account age verification │ ││ └──────────────────────────────────────────────────────────┘ │└─────────────────────────────────────────────────────────────────┘- Gateway (Channel Access): 외부 채널이 처음 만나는 관문이에요. Device Pairing 시 30초의 유예 기간을 두며, AllowFrom/AllowList 검증과 Tailscale 같은 인증을 처리해요.
- Agent Sessions (Session Isolation):
agent:channel:peer조합으로 고유한 세션 키를 만들어 각 대화를 격리해요. 에이전트별로 툴 정책을 다르게 적용할 수도 있죠. - Execution Sandbox (Tool Execution): 툴이 실행되는 공간이에요. Docker 샌드박스나 승인이 필요한 Host 환경을 사용하며, SSRF 공격을 막기 위해 DNS 고정 및 IP 차단 기술을 써요.
- External Content: 외부 URL이나 이메일 데이터를 가져올 때 XML 태그로 감싸고 보안 알림을 주입해서 안전하게 처리해요.
- ClawHub (Supply Chain): Skill이 공유되는 곳이에요. 유효한 버전 관리(semver)와 GitHub 계정 생성일 확인 등을 통해 공급망 보안을 챙기고 있어요.
Data Flows 요약
섹션 제목: “Data Flows 요약”데이터가 어디서 어디로 흐르는지 표로 정리해 보았어요.
| Flow | Source | Destination | Data | Protection |
|---|---|---|---|---|
| F1 | Channel | Gateway | User messages | TLS, AllowFrom |
| F2 | Gateway | Agent | Routed messages | Session isolation |
| F3 | Agent | Tools | Tool invocations | Policy enforcement |
| F4 | Agent | External | web_fetch requests | SSRF blocking |
| F5 | ClawHub | Agent | Skill code | Moderation, scanning |
| F6 | Agent | Channel | Responses | Output filtering |
문제 해결
섹션 제목: “문제 해결”문서에서 언급된 주의 사항들이에요.
- Device Pairing 실패: 페어링 시 30초의 유예 기간(grace period) 안에 작업이 완료되지 않으면 연결이 거부될 수 있어요.
- 외부 데이터 접근 차단: SSRF protection 기능 때문에 특정 IP나 DNS 설정에 따라 외부 URL 호출이 차단될 수 있으니 설정을 확인해 보세요.
- Skill 배포 거부: ClawHub에 Skill을 올릴 때는
SKILL.md파일이 반드시 필요하고, GitHub 계정 생성 기간 등 검증 조건을 만족해야 해요.
설정 중에 막히는 부분이 있나요? AI Setup Assistant에게 물어보면 바로 도움을 받을 수 있어요.
다음 단계
섹션 제목: “다음 단계”아키텍처를 이해했다면 다음 단계로 넘어가 보세요.
---title: "ATLAS Tactic으로 알아보는 OpenClaw 보안 위협 분석"description: "OpenClaw 시스템의 잠재적인 보안 취약점을 ATLAS 프레임워크를 통해 상세히 분석하고 대응 방안을 살펴봅니다."---
AI 에이전트를 구축하다 보면 즐겁기도 하지만, 한편으로는 보안 걱정에 밤잠을 설치기도 하죠. 내가 만든 도구가 의도치 않게 악용되지는 않을지, 혹은 소중한 API 토큰이 어디선가 새어 나가고 있지는 않은지 걱정되는 건 모든 개발자의 공통된 고민이에요.
보안은 단순히 '조심하는 것'을 넘어, 어떤 공격이 가능한지 구체적으로 파악하는 것부터 시작해야 해요. 오늘은 ATLAS 프레임워크를 기반으로 OpenClaw에서 발생할 수 있는 위협 시나리오를 하나씩 짚어볼게요.
## 필요한 것
- OpenClaw Gateway 및 노출된 API 엔드포인트에 대한 이해- `~/.openclaw/credentials/` 등 설정 파일 구조 파악- `exec-approvals.ts` 및 커맨드 allowlist 설정 지식- ClawHub 및 Skill 로딩 메커니즘 이해
## 빠른 시작
OpenClaw 보안 상태를 빠르게 점검하고 싶다면 다음 4가지 단계를 먼저 확인해 보세요.
1. **Gateway 노출 최소화**: Gateway를 기본적으로 loopback에 바인딩하고, 필요한 경우 Tailscale auth 옵션을 활성화하세요.2. **실행 승인 활성화**: 위험한 커맨드에 대해서는 `ask` 모드를 사용해 사용자 승인을 거치도록 설정하세요.3. **격리 환경 사용**: 가능한 경우 Docker sandbox 옵션을 켜서 호스트 시스템과 실행 환경을 분리하세요.4. **토큰 관리**: 설정 파일(`~/.openclaw/credentials/`)의 파일 권한이 적절하게 제한되어 있는지 확인하세요.
---
## 3. Threat Analysis by ATLAS Tactic
### 3.1 Reconnaissance (AML.TA0002)
공격자가 시스템을 탐색하는 단계예요.
#### T-RECON-001: Agent Endpoint Discovery- **ATLAS ID**: AML.T0006 - Active Scanning- **설명**: 공격자가 외부에 노출된 OpenClaw gateway 엔드포인트를 스캔해요.- **Attack Vector**: Network scanning, shodan queries, DNS enumeration- **영향을 받는 컴포넌트**: Gateway, 노출된 API 엔드포인트- **현재 방어책**: Tailscale auth 옵션, 기본적으로 loopback에 바인딩- **잔존 리스크**: 중간 (Medium) - 공개된 Gateway는 발견될 수 있어요.- **권장 사항**: 안전한 배포 가이드를 문서화하고, discovery 엔드포인트에 rate limiting을 추가하세요.
#### T-RECON-002: Channel Integration Probing- **ATLAS ID**: AML.T0006 - Active Scanning- **설명**: 공격자가 메시징 채널을 조사해서 AI가 관리하는 계정을 식별해요.- **Attack Vector**: 테스트 메시지 전송 후 응답 패턴 관찰- **영향을 받는 컴포넌트**: 모든 channel integrations- **현재 방어책**: 없음- **잔존 리스크**: 낮음 (Low) - 발견만으로는 가치가 제한적이에요.- **권장 사항**: 응답 타이밍을 무작위화하는 방안을 고려해 보세요.
---
### 3.2 Initial Access (AML.TA0004)
공격자가 시스템에 처음 발을 들이는 단계예요.
#### T-ACCESS-001: Pairing Code Interception- **ATLAS ID**: AML.T0040 - AI Model Inference API Access- **설명**: 30초의 유예 기간 동안 공격자가 pairing code를 가로채요.- **Attack Vector**: Shoulder surfing, network sniffing, social engineering- **영향을 받는 컴포넌트**: Device pairing system- **현재 방어책**: 30초 만료 시간, 기존 채널을 통해 코드 전송- **잔존 리스크**: 중간 (Medium) - 유예 기간이 악용될 수 있어요.- **권장 사항**: 유예 기간을 단축하고 확인 단계를 추가하세요.
#### T-ACCESS-002: AllowFrom Spoofing- **ATLAS ID**: AML.T0040 - AI Model Inference API Access- **설명**: 공격자가 채널 내에서 허용된 발신자 ID를 사칭해요.- **Attack Vector**: 채널에 따라 다름 (전화번호 스푸핑, 사용자 이름 사칭 등)- **영향을 받는 컴포넌트**: 채널별 AllowFrom 검증 로직- **현재 방어책**: 채널별 ID 검증 수행- **잔존 리스크**: 중간 (Medium) - 일부 채널은 스푸핑에 취약해요.- **권장 사항**: 채널별 리스크를 문서화하고 가능한 경우 암호화된 검증 방식을 추가하세요.
#### T-ACCESS-003: Token Theft- **ATLAS ID**: AML.T0040 - AI Model Inference API Access- **설명**: 공격자가 설정 파일에서 인증 토큰을 훔쳐가요.- **Attack Vector**: Malware, 권한 없는 장치 접근, 설정 백업 노출- **영향을 받는 컴포넌트**: `~/.openclaw/credentials/`, 설정 저장소- **현재 방어책**: 파일 권한 설정- **잔존 리스크**: 높음 (High) - 토큰이 평문으로 저장돼요.- **권장 사항**: 저장 시 토큰을 암호화하고 토큰 로테이션 기능을 추가하세요.
---
### 3.3 Execution (AML.TA0005)
공격자가 악성 명령을 실행하는 단계예요.
#### T-EXEC-001: Direct Prompt Injection- **ATLAS ID**: AML.T0051.000 - LLM Prompt Injection: Direct- **설명**: 공격자가 에이전트의 행동을 조종하기 위해 조작된 프롬프트를 보내요.- **Attack Vector**: 적대적 지시가 포함된 채널 메시지- **영향을 받는 컴포넌트**: Agent LLM, 모든 입력 인터페이스- **현재 방어책**: 패턴 탐지, 외부 콘텐츠 래핑(wrapping)- **잔존 리스크**: 심각 (Critical) - 탐지만 가능하고 차단은 어려우며, 정교한 공격은 우회가 가능해요.- **권장 사항**: 다층 방어 체계를 구축하고, 출력값 검증 및 민감한 작업에 대한 사용자 확인 절차를 도입하세요.
#### T-EXEC-002: Indirect Prompt Injection- **ATLAS ID**: AML.T0051.001 - LLM Prompt Injection: Indirect- **설명**: 공격자가 가져온 콘텐츠(웹 페이지 등)에 악성 지시를 심어둬요.- **Attack Vector**: 악성 URL, 오염된 이메일, 침해된 webhook- **영향을 받는 컴포넌트**: web_fetch, email ingestion, 외부 데이터 소스- **현재 방어책**: XML 태그 및 보안 공지를 이용한 콘텐츠 래핑- **잔존 리스크**: 높음 (High) - LLM이 래퍼 지시를 무시할 수 있어요.- **권장 사항**: 콘텐츠 새니타이징(sanitization)을 구현하고 실행 컨텍스트를 분리하세요.
#### T-EXEC-003: Tool Argument Injection- **ATLAS ID**: AML.T0051.000 - LLM Prompt Injection: Direct- **설명**: 프롬프트 주입을 통해 도구의 인자(argument)를 조작해요.- **Attack Vector**: 도구 파라미터 값에 영향을 주는 조작된 프롬프트- **영향을 받는 컴포넌트**: 모든 도구 호출(Tool invocations)- **현재 방어책**: 위험한 커맨드에 대한 실행 승인- **잔존 리스크**: 높음 (High) - 사용자의 판단에 의존해야 해요.- **권장 사항**: 인자 검증 로직과 파라미터화된 도구 호출 방식을 도입하세요.
#### T-EXEC-004: Exec Approval Bypass- **ATLAS ID**: AML.T0043 - Craft Adversarial Data- **설명**: 승인 allowlist를 우회하는 커맨드를 생성해요.- **Attack Vector**: 커맨드 난독화, alias 악용, 경로 조작- **영향을 받는 컴포넌트**: `exec-approvals.ts`, 커맨드 allowlist- **현재 방어책**: Allowlist 및 ask 모드- **잔존 리스크**: 높음 (High) - 커맨드 새니타이징이 미흡해요.- **권장 사항**: 커맨드 정규화(normalization)를 구현하고 blocklist를 확장하세요.
---
### 3.4 Persistence (AML.TA0006)
공격자가 시스템에 계속 머물기 위해 사용하는 방법이에요.
#### T-PERSIST-001: Malicious Skill Installation- **ATLAS ID**: AML.T0010.001 - Supply Chain Compromise: AI Software- **설명**: 공격자가 ClawHub에 악성 Skill을 게시해요.- **Attack Vector**: 계정 생성 후 악성 코드가 숨겨진 Skill 게시- **영향을 받는 컴포넌트**: ClawHub, Skill 로딩, 에이전트 실행부- **현재 방어책**: GitHub 계정 생성일 확인, 패턴 기반 모더레이션 플래그- **잔존 리스크**: 심각 (Critical) - 샌드박싱이 없고 리뷰가 제한적이에요.- **권장 사항**: VirusTotal 연동(진행 중), Skill 샌드박싱, 커뮤니티 리뷰 도입이 필요해요.
#### T-PERSIST-002: Skill Update Poisoning- **ATLAS ID**: AML.T0010.001 - Supply Chain Compromise: AI Software- **설명**: 인기 있는 Skill을 침해한 후 악성 업데이트를 배포해요.- **Attack Vector**: 계정 탈취, Skill 소유자에 대한 사회 공학적 공격- **영향을 받는 컴포넌트**: ClawHub 버전 관리, 자동 업데이트 흐름- **현재 방어책**: 버전 지문(fingerprinting)- **잔존 리스크**: 높음 (High) - 자동 업데이트가 악성 버전을 가져올 수 있어요.- **권장 사항**: 업데이트 서명, 롤백 기능, 버전 고정(pinning) 기능을 구현하세요.
#### T-PERSIST-003: Agent Configuration Tampering- **ATLAS ID**: AML.T0010.002 - Supply Chain Compromise: Data- **설명**: 에이전트 설정을 수정해서 지속적인 접근 권한을 확보해요.- **Attack Vector**: 설정 파일 수정, 세팅 주입- **영향을 받는 컴포넌트**: Agent config, 도구 정책- **현재 방어책**: 파일 권한 관리- **잔존 리스크**: 중간 (Medium) - 로컬 접근 권한이 필요해요.- **권장 사항**: 설정 무결성 검증 및 설정 변경에 대한 감사 로그를 추가하세요.
---
### 3.5 Defense Evasion (AML.TA0007)
방어 체계를 우회하는 기법들이에요.
#### T-EVADE-001: Moderation Pattern Bypass- **ATLAS ID**: AML.T0043 - Craft Adversarial Data- **설명**: 모더레이션 패턴을 피하도록 Skill 콘텐츠를 제작해요.- **Attack Vector**: 유니코드 호모글리프, 인코딩 트릭, 동적 로딩- **영향을 받는 컴포넌트**: ClawHub `moderation.ts`- **현재 방어책**: 패턴 기반 `FLAG_RULES`- **잔존 리스크**: 높음 (High) - 단순 정규표현식은 쉽게 우회돼요.- **권장 사항**: 행동 분석(VirusTotal Code Insight) 및 AST 기반 탐지를 추가하세요.
#### T-EVADE-002: Content Wrapper Escape- **ATLAS ID**: AML.T0043 - Craft Adversarial Data- **설명**: XML 래퍼 컨텍스트를 탈출하는 콘텐츠를 제작해요.- **Attack Vector**: 태그 조작, 컨텍스트 혼동, 지시사항 덮어쓰기- **영향을 받는 컴포넌트**: 외부 콘텐츠 래핑- **현재 방어책**: XML 태그 및 보안 공지- **잔존 리스크**: 중간 (Medium) - 새로운 탈출 기법이 계속 발견되고 있어요.- **권장 사항**: 다중 래핑 레이어를 적용하고 출력 측 검증을 강화하세요.
---
### 3.6 Discovery (AML.TA0008)
시스템 내부 정보를 탐색하는 단계예요.
#### T-DISC-001: Tool Enumeration- **ATLAS ID**: AML.T0040 - AI Model Inference API Access- **설명**: 프롬프트를 통해 사용 가능한 도구 목록을 나열해요.- **Attack Vector**: "어떤 도구를 가지고 있니?" 같은 질의- **영향을 받는 컴포넌트**: Agent tool registry- **현재 방어책**: 없음- **잔존 리스크**: 낮음 (Low) - 도구는 일반적으로 문서화되어 있어요.- **권장 사항**: 도구 가시성 제어 기능을 고려해 보세요.
#### T-DISC-002: Session Data Extraction- **ATLAS ID**: AML.T0040 - AI Model Inference API Access- **설명**: 세션 컨텍스트에서 민감한 데이터를 추출해요.- **Attack Vector**: "이전에 무슨 이야기를 했지?" 등의 질의, 컨텍스트 조사- **영향을 받는 컴포넌트**: 세션 기록, 컨텍스트 윈도우- **현재 방어책**: 발신자별 세션 격리- **잔존 리스크**: 중간 (Medium) - 세션 내 데이터는 접근 가능해요.- **권장 사항**: 컨텍스트 내 민감 데이터 비식별화(redaction)를 구현하세요.
---
### 3.7 Collection & Exfiltration (AML.TA0009, AML.TA0010)
데이터를 수집하고 외부로 유출하는 단계예요.
#### T-EXFIL-001: Data Theft via web_fetch- **ATLAS ID**: AML.T0009 - Collection- **설명**: 에이전트에게 외부 URL로 데이터를 보내도록 지시해요.- **Attack Vector**: 프롬프트 주입으로 에이전트가 공격자 서버에 POST 요청을 보내게 함- **영향을 받는 컴포넌트**: `web_fetch` 도구- **현재 방어책**: 내부 네트워크에 대한 SSRF 차단- **잔존 리스크**: 높음 (High) - 외부 URL 호출은 허용되어 있어요.- **권장 사항**: URL allowlisting을 구현하고 데이터 분류 인지 기능을 추가하세요.
#### T-EXFIL-002: Unauthorized Message Sending- **ATLAS ID**: AML.T0009 - Collection- **설명**: 에이전트가 민감한 데이터를 포함한 메시지를 보내게 해요.- **Attack Vector**: 프롬프트 주입으로 에이전트가 공격자에게 메시지를 보내게 함- **영향을 받는 컴포넌트**: Message tool, channel integrations- **현재 방어책**: 아웃바운드 메시지 게이팅(gating)- **잔존 리스크**: 중간 (Medium) - 게이팅이 우회될 수 있어요.- **권장 사항**: 새로운 수신자에 대해서는 명시적인 확인을 요구하세요.
#### T-EXFIL-003: Credential Harvesting- **ATLAS ID**: AML.T0009 - Collection- **설명**: 악성 Skill이 에이전트 컨텍스트에서 자격 증명을 수집해요.- **Attack Vector**: Skill 코드가 환경 변수나 설정 파일을 읽음- **영향을 받는 컴포넌트**: Skill 실행 환경- **현재 방어책**: Skill 전용 방어책 없음- **잔존 리스크**: 심각 (Critical) - Skill이 에이전트 권한으로 실행돼요.- **권장 사항**: Skill 샌드박싱과 자격 증명 격리를 구현하세요.
---
### 3.8 Impact (AML.TA0011)
최종적으로 시스템에 미치는 악영향이에요.
#### T-IMPACT-001: Unauthorized Command Execution- **ATLAS ID**: AML.T0031 - Erode AI Model Integrity- **설명**: 사용자 시스템에서 임의의 커맨드를 실행해요.- **Attack Vector**: 프롬프트 주입과 실행 승인 우회의 조합- **영향을 받는 컴포넌트**: Bash 도구, 커맨드 실행부- **현재 방어책**: 실행 승인, Docker sandbox 옵션- **잔존 리스크**: 심각 (Critical) - 샌드박스 없는 호스트 실행 시 위험해요.- **권장 사항**: 샌드박스를 기본값으로 설정하고 승인 UX를 개선하세요.
#### T-IMPACT-002: Resource Exhaustion (DoS)- **ATLAS ID**: AML.T0031 - Erode AI Model Integrity- **설명**: API 크레딧이나 컴퓨팅 자원을 소진시켜요.- **Attack Vector**: 자동화된 메시지 플러딩, 비용이 많이 드는 도구 호출- **영향을 받는 컴포넌트**: Gateway, 에이전트 세션, API provider- **현재 방어책**: 없음- **잔존 리스크**: 높음 (High) - Rate limiting이 없어요.- **권장 사항**: 발신자별 rate limit과 비용 예산(cost budgets)을 설정하세요.
#### T-IMPACT-003: Reputation Damage- **ATLAS ID**: AML.T0031 - Erode AI Model Integrity- **설명**: 에이전트가 해롭거나 공격적인 콘텐츠를 보내게 해요.- **Attack Vector**: 부적절한 응답을 유도하는 프롬프트 주입- **영향을 받는 컴포넌트**: 출력 생성, 채널 메시징- **현재 방어책**: LLM 제공업체의 콘텐츠 정책- **잔존 리스크**: 중간 (Medium) - 제공업체의 필터링은 완벽하지 않아요.- **권장 사항**: 출력 필터링 레이어와 사용자 제어 기능을 추가하세요.
---
궁금한 점이 있거나 내 시스템의 보안 설정을 도와줄 도우미가 필요하다면 [AI Setup Assistant](/docs/)에게 언제든 물어보세요!
## 다음 단계
- [Secure Deployment Guide](/docs/)- [Configuring Docker Sandbox](/docs/)- [Managing API Credentials](/docs/)- [Skill Security Review Process](/docs/)외부에서 만든 스킬이나 라이브러리를 내 프로젝트에 추가할 때, 코드가 정말 안전한지 걱정해 본 적 있으시죠? 내가 모르는 사이에 데이터가 유출되거나 악성 스크립트가 실행될까 봐 불안한 마음이 드는 건 개발자라면 누구나 겪는 고민이에요.
ClawHub는 이런 공급망 공격으로부터 사용자를 보호하기 위해 여러 단계의 보안 장치를 운영하고 있어요. 현재 어떤 보안 제어 기능이 작동하고 있는지, 그리고 앞으로 어떤 부분을 더 강화할지 핵심 내용을 정리해 드릴게요.
필요한 것
섹션 제목: “필요한 것”- GitHub 계정 (계정 생성 시기 확인용)
moderation.ts파일에 정의된 FLAG_RULES 이해skillReports및auditLogs테이블 구조에 대한 지식
Quick Start: 현재 보안 제어 현황
섹션 제목: “Quick Start: 현재 보안 제어 현황”ClawHub가 현재 공급망 보안을 위해 적용 중인 제어 항목들이에요. 각 항목이 얼마나 효과적인지 바로 확인해 보세요.
| Control | Implementation | Effectiveness |
|---|---|---|
| GitHub Account Age | requireGitHubAccountAge() | Medium - 신규 공격자의 진입 장벽을 높임 |
| Path Sanitization | sanitizePath() | High - Path traversal 공격 방지 |
| File Type Validation | isTextFile() | Medium - 텍스트 파일만 허용하지만, 여전히 악성 코드 포함 가능 |
| Size Limits | 50MB total bundle | High - 리소스 고갈 방지 |
| Required SKILL.md | Mandatory readme | Low - 정보 제공용이며 보안 가치는 낮음 |
| Pattern Moderation | FLAG_RULES in moderation.ts | Low - 우회하기 쉬움 |
| Moderation Status | moderationStatus field | Medium - 수동 검토 가능 |
Moderation Flag Patterns
섹션 제목: “Moderation Flag Patterns”현재 moderation.ts 파일에서 감지하고 있는 주요 패턴이에요. 이 정규식들은 알려진 악성 식별자나 의심스러운 키워드를 찾아냅니다.
// Known-bad identifiers/(keepcold131\/ClawdAuthenticatorTool|ClawdAuthenticatorTool)/i
// Suspicious keywords/(malware|stealer|phish|phishing|keylogger)/i/(api[-_ ]?key|token|password|private key|secret)/i/(wallet|seed phrase|mnemonic|crypto)/i/(discord\.gg|webhook|hooks\.slack)/i/(curl[^\n]+\|\s*(sh|bash))/i/(bit\.ly|tinyurl\.com|t\.co|goo\.gl|is\.gd)/i이 방식은 slug, displayName, summary, frontmatter, metadata, file paths를 체크하지만, 실제 Skill의 코드 내용을 분석하지는 못한다는 한계가 있어요. 단순한 정규식이라 난독화된 코드에 취약할 수 있죠.
Risk Matrix: 잠재적 위협 분석
섹션 제목: “Risk Matrix: 잠재적 위협 분석”보안 위협의 발생 가능성과 영향도를 분석한 리스크 매트릭스예요. P0 등급의 리스크는 최우선으로 관리해야 합니다.
| Threat ID | Likelihood | Impact | Risk Level | Priority |
|---|---|---|---|---|
| T-EXEC-001 | High | Critical | Critical | P0 |
| T-PERSIST-001 | High | Critical | Critical | P0 |
| T-EXFIL-003 | Medium | Critical | Critical | P0 |
| T-IMPACT-001 | Medium | Critical | High | P1 |
| T-EXEC-002 | High | High | High | P1 |
핵심 공격 체인 (Critical Path Attack Chains)
섹션 제목: “핵심 공격 체인 (Critical Path Attack Chains)”공격자가 어떤 경로로 시스템을 침투하는지 보여주는 시나리오예요.
- Skill 기반 데이터 절취: 악성 Skill 게시 (T-PERSIST-001) → Moderation 우회 (T-EVADE-001) → 자격 증명 수집 (T-EXFIL-003)
- Prompt Injection을 통한 RCE: Prompt 주입 (T-EXEC-001) → 실행 승인 우회 (T-EXEC-004) → 명령어 실행 (T-IMPACT-001)
- 가져온 콘텐츠를 통한 간접 주입: URL 콘텐츠 오염 (T-EXEC-002) → Agent가 지침을 가져와 실행 (T-EXFIL-001) → 외부로 데이터 유출
Troubleshooting: 현재 시스템의 한계
섹션 제목: “Troubleshooting: 현재 시스템의 한계”보안 시스템을 운영하면서 발생할 수 있는 문제와 현재 제약 사항이에요.
- 정규식 기반 검사의 한계:
moderation.ts의 정규식은 단순해서 코드를 꼬아 놓으면 잡아내기 어려워요. - 행위 분석 부재: 현재는 코드가 실제로 어떤 동작을 하는지 분석하는 Behavioral analysis 기능이 부족해요.
- 수동 검토 의존성:
moderationStatus필드를 통한 수동 검토에 의존하고 있어 대응 속도가 느려질 수 있어요.
향후 개선 계획
섹션 제목: “향후 개선 계획”ClawHub는 리스크를 줄이기 위해 다음과 같은 개선 사항을 준비하고 있어요.
Immediate (P0)
섹션 제목: “Immediate (P0)”- VirusTotal Integration 완료 (Behavioral analysis 강화)
- Skill Sandboxing 구현
- 민감한 동작에 대한 Output validation 추가
Short-term (P1)
섹션 제목: “Short-term (P1)”- Rate limiting 구현
- 데이터 저장 시 Token encryption 적용
- Exec approval UX 및 유효성 검사 개선
web_fetch를 위한 URL Allowlisting 구현
궁금한 점이 있거나 설정 중에 도움이 필요하면 AI Setup Assistant를 활용해 보세요.
다음 단계
섹션 제목: “다음 단계”AI 시스템을 개발하다 보면 보안 위협이 추상적으로 느껴질 때가 많아요. 막상 코드를 수정하려고 해도 어떤 파일이 보안의 핵심인지 한눈에 파악하기 어렵고, 우리가 대비하는 공격이 실제 어떤 표준 기술과 연결되는지 혼란스러울 때가 있죠.
복잡한 위협 모델을 실제 구현체와 연결하는 작업은 모든 개발자에게 큰 고민거리예요. OpenClaw는 이런 어려움을 해결하기 위해 보안 프레임워크와 소스 코드를 직접 매핑하여 관리하고 있어요.
필요한 것
섹션 제목: “필요한 것”- OpenClaw 소스 코드 접근 권한
- MITRE ATLAS 프레임워크에 대한 기본 이해
빠른 시작
섹션 제목: “빠른 시작”7.2 Key Security Files목록을 보고 프로젝트 내 위험 수준이 높은 핵심 로직의 위치를 파악하세요.7.1 ATLAS Technique Mapping을 통해 OpenClaw가 방어하는 구체적인 위협(Threats)과 표준 기술 ID를 대조해 보세요.
7. Appendices
섹션 제목: “7. Appendices”7.1 ATLAS Technique Mapping
섹션 제목: “7.1 ATLAS Technique Mapping”| ATLAS ID | Technique Name | OpenClaw Threats |
|---|---|---|
| AML.T0006 | Active Scanning | T-RECON-001, T-RECON-002 |
| AML.T0009 | Collection | T-EXFIL-001, T-EXFIL-002, T-EXFIL-003 |
| AML.T0010.001 | Supply Chain: AI Software | T-PERSIST-001, T-PERSIST-002 |
| AML.T0010.002 | Supply Chain: Data | T-PERSIST-003 |
| AML.T0031 | Erode AI Model Integrity | T-IMPACT-001, T-IMPACT-002, T-IMPACT-003 |
| AML.T0040 | AI Model Inference API Access | T-ACCESS-001, T-ACCESS-002, T-ACCESS-003, T-DISC-001, T-DISC-002 |
| AML.T0043 | Craft Adversarial Data | T-EXEC-004, T-EVADE-001, T-EVADE-002 |
| AML.T0051.000 | LLM Prompt Injection: Direct | T-EXEC-001, T-EXEC-003 |
| AML.T0051.001 | LLM Prompt Injection: Indirect | T-EXEC-002 |
7.2 Key Security Files
섹션 제목: “7.2 Key Security Files”| Path | Purpose | Risk Level |
|---|---|---|
src/infra/exec-approvals.ts | Command approval logic | Critical |
src/gateway/auth.ts | Gateway authentication | Critical |
src/web/inbound/access-control.ts | Channel access control | Critical |
src/infra/net/ssrf.ts | SSRF protection | Critical |
src/security/external-content.ts | Prompt injection mitigation | Critical |
src/agents/sandbox/tool-policy.ts | Tool policy enforcement | Critical |
convex/lib/moderation.ts | ClawHub moderation | High |
convex/lib/skillPublish.ts | Skill publishing flow | High |
src/routing/resolve-route.ts | Session isolation | Medium |
7.3 Glossary
섹션 제목: “7.3 Glossary”| Term | Definition |
|---|---|
| ATLAS | MITRE’s Adversarial Threat Landscape for AI Systems |
| ClawHub | OpenClaw’s skill marketplace |
| Gateway | OpenClaw’s message routing and authentication layer |
| MCP | Model Context Protocol - tool provider interface |
| Prompt Injection | Attack where malicious instructions are embedded in input |
| Skill | Downloadable extension for OpenClaw agents |
| SSRF | Server-Side Request Forgery |
이 위협 모델은 살아있는 문서입니다. 보안 관련 취약점을 발견하면 security@openclaw.ai로 보고해 주세요.
문제 해결
섹션 제목: “문제 해결”- 보안 취약점을 발견한 경우: 혼자 해결하려 하지 말고 즉시 security@openclaw.ai로 연락해 주세요.
- 파일 경로를 찾을 수 없는 경우: 최신 메인 브랜치에서 소스 코드를 동기화했는지 확인하세요.
설정 과정에서 도움이 필요하신가요? AI Setup Assistant에게 물어보세요.
다음 단계
섹션 제목: “다음 단계”OpenClaw Expert
아직 막혀 있나요?
이 문서에서 답을 못 찾았다면 OpenClaw Expert에게 바로 물어보세요.