오픈클로(OpenClaw) 보안 해부: 개발자가 알아야 할 5가지 위험과 대응책
GitHub 역사상 가장 빠르게 성장한 오픈소스 AI 어시스턴트, 오픈클로(OpenClaw). 하지만 평문 자격증명, 프롬프트 인젝션, 공급망 공격 등 심각한 보안 취약점이 존재한다.
오픈클로(OpenClaw, 구 몰트봇/Moltbot) 보안 해부: 개발자가 알아야 할 5가지 위험과 대응책
"It's incredible. It's terrifying. It's MoltBot." - 1Password 블로그
TL;DR
오픈클로(구 Moltbot/Clawdbot)는 GitHub 역사상 가장 빠르게 성장한 오픈소스 중 하나지만, 심각한 보안 취약점을 가지고 있다.
| 취약점 | 심각도 | 현재 상태 | |--------|--------|-----------| | 평문 자격증명 저장 | Critical | 미해결 | | 노출된 관리 포트 | Critical | PR #4576 대기 | | 프롬프트 인젝션 | High | PR #4542 대기 | | 스킬 중독 (공급망) | High | 미해결 | | 명령 인젝션 | High | PR #4542 대기 |
결론: 프로덕션 사용은 권장하지 않음. 로컬 테스트 전용으로, 보안 체크리스트 필수 적용.
1. 배경
프로젝트 개요
- 개발자: Peter Steinberger (@steipete) - PSPDFKit 창업자
- 리브랜딩 히스토리: Clawdbot → Moltbot (2026-01-27) → OpenClaw
- GitHub Stars: 100,000+ (역대 최고 속도 성장)
- 핵심 컨셉: "Claude with hands" - 대화만 하는 AI가 아닌, 실제 작업 수행
주요 기능
- 영구 메모리: 대화, 선호도, 습관 기억
- 멀티 플랫폼: Discord, Telegram, Slack, iMessage, WhatsApp 등 10개+
- 풀 시스템 액세스: 터미널, 파일, 브라우저 제어
- 스킬 시스템: Markdown/TypeScript 기반 플러그인 100개+
2. 5대 보안 취약점 분석
2.1 평문 자격증명 저장 (Critical)
문제점:
~/.clawdbot/
├── config.json # API 키 평문 저장
├── credentials/
│ └── auth # OAuth 토큰 평문
└── state/
└── conversations/ # 대화 기록 (민감 정보 포함 가능)
위험:
- 인포스틸러 악성코드에 감염되면 모든 자격증명 탈취
- 같은 사용자의 모든 프로세스에서 읽기 가능 (권한 600 아님)
- Shodan 검색으로 노출된 인스턴스에서 실제 API 키 발견
대응책:
# 권한 강화
chmod 600 ~/.clawdbot/config.json
chmod -R 600 ~/.clawdbot/credentials/
# 시스템 키체인 사용 (권장)
# macOS: Keychain Access 활용
# Linux: libsecret 또는 gnome-keyring
2.2 노출된 관리 포트 (Critical)
문제점:
- 웹 인터페이스가 "로컬 전용"이나 실제로 공개 인터넷에 바인딩되는 경우 다수
- 보안 연구원이 Shodan으로 수백 개 인스턴스 발견
- 8개 인스턴스는 인증 없이 완전 오픈 - 명령 실행, 설정 조회 가능
실제 사례 (Bitdefender 보고):
검색어: "Clawdbot Control"
결과: API 키, 봇 토큰, OAuth 비밀, 전체 대화 기록 노출
대응책:
# 127.0.0.1만 바인딩 확인
lsof -i :18789
# 외부 노출 차단
# UFW 방화벽
sudo ufw deny 18789
# 또는 iptables
sudo iptables -A INPUT -p tcp --dport 18789 -s 127.0.0.1 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 18789 -j DROP
2.3 프롬프트 인젝션 (High)
문제점:
- 외부 콘텐츠 (이메일, 웹페이지, 스킬)가 정책 검증 없이 직접 실행
- 메모리 시스템이 "수주~수개월 전 상호작용"을 기억 → 지연된 공격 가능
공격 데모 (연구자 Matvey Kukuy):
- 악성 이메일 전송 (숨겨진 프롬프트 포함)
- Moltbot이 이메일 읽음
- AI가 명령을 "정상 지시"로 해석
- 사용자의 최근 이메일 5개를 공격자 주소로 전송
- 소요 시간: 5분
현재 상태:
- PR #4542:
scrubSensitiveEnv()함수로 환경변수 필터링 제안 - PR #4542: 사용자 입력을 태그로 격리 + 시스템 프롬프트 강화
- 상태: 리뷰 0, 머지 대기
대응책:
# 신뢰할 수 없는 콘텐츠 처리 비활성화
email_processing: false
web_browsing: restricted
# 중요 작업은 명시적 승인 요구
require_approval:
- send_email
- delete_file
- execute_command
2.4 스킬 중독 - 공급망 공격 (High)
문제점:
- 누구나 공개 스킬 라이브러리에 업로드 가능 (심사 프로세스 부재)
- 다운로드 수 조작으로 신뢰도 위조 가능
- 스킬 내에서 직접 프롬프트 인젝션 수행 가능
2026년 증명된 공격:
- 공격자가 인기 스킬 복사
- 다운로드 수 인위적 증가 (4,000+)
- 악성
curl명령 추가 → 사용자 데이터 외부 전송 - 7개국 개발자가 중독된 패키지 다운로드
대응책:
# Cisco Skill Scanner 사용 (오픈소스)
skill-scanner analyze ./my-skill/
# 스킬 설치 전 코드 검토
cat skill.md | grep -E "(curl|wget|fetch|http|eval|exec)"
# 승인된 스킬만 사용
allowlist:
- official/calendar
- official/email
- verified/github
2.5 명령 인젝션 (High)
문제점:
- 사용자 입력이 셸 명령으로 직접 전달
- 이스케이핑 불충분
예시:
// 취약한 코드
exec(`git commit -m "${userMessage}"`);
// 공격 입력
userMessage = '"; rm -rf / #'
// 결과
exec(`git commit -m ""; rm -rf / #"`)
현재 상태:
- PR #4542:
escapeShellCommand()함수 제안 - 상태: 리뷰 0, 머지 대기
대응책:
# Docker 샌드박스 사용
docker run \
--read-only \
--cap-drop=ALL \
--network=none \
moltbot/moltbot:latest
# 또는 최소 권한 사용자
sudo useradd -r -s /bin/false moltbot
sudo -u moltbot openclaw gateway
3. 현재 PR 상태 분석 (2026-01-30)
머지된 보안 PR (최근)
| PR | 제목 | 날짜 | |----|------|------| | #3700 | fix: security hardening media attachments | 01-29 | | #3687 | Harden zip extraction path validation | 01-28 | | #3282 | Fix path traversal in zip/tar extraction | 01-27 | | #2544 | Fix XSS vulnerability in Canvas Host | 01-27 | | #2000 | Apply Agents Council Security Recommendations | 01-26 |
오픈된 보안 PR (리뷰 대기)
| PR | 제목 | 리뷰 | 중요도 | |----|------|------|--------| | #4570 | Comprehensive Security Shield | 0 | Critical | | #4542 | Prompt/Credential/Command Injection 수정 | 0 | Critical | | #4576 | Gateway public IP binding 경고 | 2 | High | | #4334 | Security wrap CLI | 0 | Medium |
문제점: 리뷰어 병목
| 기여자 | 기여 수 | 비율 | |--------|---------|------| | steipete | 6,911 | ~97% | | 기타 49명 | ~200 | ~3% |
steipete 혼자 거의 모든 코드 작성 → 보안 PR이 리뷰 없이 대기 중
4. Claude Code와 비교: 왜 다른가?
| 기능 | Moltbot | Claude Code | |------|---------|-------------| | 기본 권한 | 전체 시스템 액세스 | 읽기 전용 (승인 필요) | | 자격증명 | 평문 저장 | 암호화 저장 | | 샌드박싱 | 선택 (미사용 다수) | 기본 제공 | | 프롬프트 인젝션 방어 | 약함 | 8개 메커니즘 | | 네트워크 격리 | 없음 | 도메인 화이트리스트 | | 명령 실행 | 자동 | 명시적 승인 |
Claude Code의 보안 설계
# Claude Code 기본 동작
permissions:
file_read: allow # 읽기는 허용
file_write: require # 쓰기는 승인 필요
bash: require # 명령 실행은 승인 필요
network: deny # 네트워크는 기본 차단
sandbox:
enabled: true
allowedDomains: [] # 명시적 허용만
왜 Moltbot은 다른가?
- 설계 철학: "편의성 우선" vs "보안 우선"
- 대상 사용자: 파워 유저 vs 일반 개발자
- 신뢰 모델: "사용자가 알아서" vs "기본값 안전"
5. 사용한다면: 필수 보안 체크리스트
설치 전
- [ ] Node.js 22.12.0+ 설치 (CVE 대응)
- [ ] 전용 사용자 계정 생성
- [ ] 격리된 환경 준비 (VM/Docker)
설정 시
- [ ]
~/.clawdbot/권한 600으로 변경 - [ ] gateway.auth 강력한 토큰 설정
- [ ] 웹 인터페이스 127.0.0.1만 바인딩
- [ ] 방화벽으로 포트 차단
스킬 설치
- [ ] 공식/검증된 스킬만 사용
- [ ] 설치 전 코드 검토
- [ ] Skill Scanner로 분석
운영 중
- [ ]
openclaw doctor정기 실행 - [ ] 자격증명 주 1회 로테이션
- [ ] 네트워크 트래픽 모니터링
- [ ] 비정상 동작 감시
권장하지 않는 것
- [ ] 메인 개발 머신에서 실행
- [ ] 공개 인터넷 노출
- [ ] 검증되지 않은 스킬 설치
- [ ] 프로덕션 환경 사용
6. 결론
오픈클로(OpenClaw)는 혁신적인 개인 AI 어시스턴트이지만, 현재 상태로는 보안 위험이 높다.
사용해도 되는 경우
- 로컬 테스트/실험 목적
- 격리된 VM/Docker 환경
- 보안 체크리스트 100% 적용
사용하면 안 되는 경우
- 프로덕션 환경
- 민감한 데이터 처리
- 엔터프라이즈 배포
대안
- Claude Code: 보안 중심 설계, 엔터프라이즈 지원
- GitHub Copilot: IDE 통합, 제한된 범위
"There is no 'perfectly secure' setup." - Moltbot 공식 FAQ
이 말이 맞다. 하지만 기본값이 안전해야 한다.