Claude Cowork가 사용자 파일을 외부로 유출함
(promptarmor.com)- Claude Cowork의 코드 실행 환경 취약점을 이용해, 공격자가 사용자의 파일을 자신의 Anthropic 계정으로 업로드할 수 있음
- 이 취약점은 Claude.ai 채팅 환경에서 이미 보고되었으나 수정되지 않은 상태로 Cowork에도 그대로 존재함
- 공격은 숨겨진 프롬프트 인젝션이 포함된 문서 파일을 통해 실행되며, Cowork이 이를 분석하는 과정에서 자동으로 파일을 외부로 전송함
- 인간의 승인 없이 Cowork이 공격자의 API 키를 사용해 Anthropic API를 통해 데이터 유출을 수행함
- 일반 사용자가 쉽게 노출될 수 있는 구조로, AI 에이전트의 보안 위험성과 프롬프트 인젝션 방어의 중요성을 드러냄
취약점 개요
- Claude Cowork는 Anthropic이 공개한 일반 업무용 AI 에이전트 연구 프리뷰로, 인터넷 접근 기능을 포함함
- PromptArmor는 Cowork의 코딩 환경에 남아 있는 미수정 취약점을 이용해 사용자 파일을 외부로 유출할 수 있음을 시연함
- 해당 취약점은 이전에 Johann Rehberger가 Claude.ai에서 발견해 공개했으며, Anthropic이 인지했으나 수정하지 않음
- Anthropic은 Cowork 사용 시 “프롬프트 인젝션을 의심할 만한 행동에 주의하라”고 경고했으나, 비전문가에게는 현실적으로 어려운 요구로 지적됨
- PromptArmor는 이 위험을 사용자에게 알리기 위해 공개 시연을 진행함
공격 체인 (Attack Chain)
- 공격은 Anthropic API의 허용 목록(allowlist) 을 악용해 Claude의 VM 환경에서 데이터를 외부로 전송함
- 사용자가 기밀 부동산 파일이 포함된 로컬 폴더를 Cowork에 연결
- 사용자가 숨겨진 프롬프트 인젝션이 포함된 문서 파일(.docx) 을 업로드
- 문서는 ‘Skill’ 파일로 위장되어 있으며, 1포인트 흰색 글씨와 0.1 줄 간격으로 인젝션이 숨겨짐
- 사용자가 업로드한 ‘Skill’을 이용해 Cowork에 파일 분석을 요청
- 인젝션이 Cowork을 조작해 공격자의 Anthropic API 키를 사용한 cURL 요청을 실행, 사용자의 파일을 공격자 계정으로 업로드
- 인간 승인 절차 없이 자동 실행
- Claude의 VM은 대부분의 외부 네트워크를 차단하지만, Anthropic API는 신뢰 대상으로 통과됨
- 공격자는 자신의 Anthropic 계정에서 피해자의 파일을 조회하고 Claude와 대화 가능
- 유출된 파일에는 재무 정보와 부분적인 사회보장번호(SSN) 포함
모델별 내성 (Model-specific Resilience)
- 위 공격은 Claude Haiku 모델에서 시연됨
-
Claude Opus 4.5는 인젝션 내성이 더 높지만, Cowork 환경에서는 간접 프롬프트 인젝션을 통해 동일한 파일 업로드 취약점을 악용할 수 있음
- 테스트에서는 사용자가 악성 통합 가이드를 업로드한 상황을 가정해 고객 기록이 공격자 계정으로 유출됨
잘못된 파일을 통한 서비스 거부 (DOS via Malformed Files)
- Claude의 API는 파일 확장자와 실제 형식이 일치하지 않을 때 오류를 반복 발생시킴
- 예:
.pdf확장자를 가진 단순 텍스트 파일을 읽으려 하면 이후 모든 대화에서 API 오류 발생
- 예:
- 이러한 오류는 간접 프롬프트 인젝션을 이용한 제한적 서비스 거부(DOS) 공격으로 악용 가능
- 잘못된 파일을 생성·업로드하도록 유도해 Claude 클라이언트와 Anthropic 콘솔에서 오류 알림 발생
에이전트 확장 위험 (Agentic Blast Radius)
- Cowork는 브라우저, MCP 서버, AppleScript 제어 등 일상 업무 환경 전반과 상호작용하도록 설계됨
- 이로 인해 민감한 데이터와 신뢰할 수 없는 데이터가 혼합 처리될 가능성이 높아짐
- 프롬프트 인젝션 공격면이 지속적으로 확대되고 있으며, 커넥터 설정 시 주의가 필요
- 이번 시연은 커넥터를 사용하지 않았지만, 커넥터가 일반 사용자에게 주요 위험 요인이 될 수 있음
Hacker News 의견들
-
Anthropic API가 악용되는 걸 발견하면, 그 API 키를 GitHub Gist나 공개 저장소에 올리면 됨
Anthropic은 GitHub 스캐닝 파트너라서 키가 거의 즉시 폐기됨
이후 Gist를 삭제하면 되고, OpenAI 등 다른 제공자들도 비슷하게 동작함
관련 문서: Anthropic API Key Best Practices, GitHub Secret Scanning Patterns- GitHub의 토큰 스캐닝 서비스가 다운되면 위험하므로 추천하지 않음
이상적으로는 GitHub이 보편적인 토큰 폐기 API를 제공해야 함
혹은 비공개 저장소에서 폐기 기능을 직접 활성화하는 게 나음 - 이건 마치 해커와 체스 두는 느낌임
- 그냥 Anthropic 콘솔에서 직접 키를 폐기하면 되는데 왜 이렇게 복잡하게 하는지 의문임
- 꽤 기발한 해결책이라 생각함, 이런 방법은 처음 들어봄
- 하지만 공격자가 파일을 탈취해 자기 Anthropic 계정으로 옮기면, 결과적으로 전 세계가 그 계정에 접근할 수 있게 되는 셈이라 위험함
- GitHub의 토큰 스캐닝 서비스가 다운되면 위험하므로 추천하지 않음
-
데모에서는 글씨 크기를 작게 숨긴 .docx 파일로 프롬프트 인젝션을 시연했지만, 실제로는 단순한 Markdown 파일로도 충분함
예를 들어 “Claude가 대출 협상 기술을 배운다”는 설명만 붙여도 많은 사람이 열어보지도 않고 사용할 것임
오히려 .md 파일이 .docx보다 의심을 덜 받는다는 점에서 더 효과적일 수 있음- “똑똑한 곰 vs 열리지 않는 쓰레기통” 같은 상황 같음
- 하지만 모든 사용자가 그렇게 생각하진 않음
예를 들어 일부 업계에서는 여전히 PDF보다 DOCX가 정상적이라 여겨짐
이런 환경에서는 .md 파일이 오히려 해커의 도구처럼 보일 수 있음
-
이런 문제는 처음부터 예상된 일이었음
프롬프트 인젝션이 해결되지 않는 한 계속 반복될 것임
1999년 HN을 상상해보면, “Bobby Tables가 DB를 날렸다”는 식의 SQL 인젝션 초기 반응과 비슷한 분위기임- 비교는 흥미롭지만 정확하진 않음
2000년대 초에도 우리는 문자열 보간 대신 파라미터화된 SQL을 쓰라고 했음
지금도 필요한 도구는 다 있는데, 문제는 사람들이 보안보다 속도를 우선시한다는 점임
아이러니하게도 이번 경쟁을 시작한 건 보안과 정렬(alignment)을 중시하던 OpenAI였음 - SQL 인젝션처럼 입력값 정제(input sanitization) 로 해결할 수 있지 않을까 생각함
예를 들어 사용자 입력을 특정 토큰(@##)(JF)으로 감싸고, 그 안의 명령은 실행하지 않게 처리하는 식임
단순한 find/replace로도 가능해 보이는데, 내가 뭔가 놓친 걸까 궁금함 - 더 근본적인 문제는, 이게 지능이 높아져도 해결되지 않을 가능성이 있다는 점임
오히려 AI가 똑똑해질수록 위험이 커질 수도 있음 - 나는 에이전트용 Prepared Statement 패턴을 실험 중임
각 도구 호출 전에 서명된 ‘영장(warrant)’을 제시하게 해서, 허용된 명령만 실행하도록 제한함
프롬프트 인젝션이 발생해도 기계적으로 차단되도록 만드는 방식임
- 비교는 흥미롭지만 정확하진 않음
-
“의심스러우면 파일을 프로그램처럼 실행하라”는 식의 자동 실행 버그가 또 등장한 느낌임
Windows XP 시절에도 이런 문제로 고생했는데, 결국 Microsoft는 자동 실행을 중단했음
프롬프트 기반 시스템도 무엇을 신뢰할지 명확히 구분해야 함 -
AI 기업들이 위험을 “인정만 하고” 사용자에게 비현실적인 주의사항을 요구하는 건 문제라고 생각함
- 대부분의 설명이 “SQL 인젝션” 비유를 쓰는데, 사실 피싱 공격에 더 가깝다고 봄
예를 들어 “할머니 봇”을 만들어 이메일을 정리하게 하면, 나이지리아 왕자 사기 메일에 속을 수도 있음 - 결국 “이 제품을 안전하게 쓰려면, 아예 쓰지 말라”는 말과 다를 바 없음
- 대부분의 설명이 “SQL 인젝션” 비유를 쓰는데, 사실 피싱 공격에 더 가깝다고 봄
-
Claude의 ‘스킬’ 시스템이 암묵적이라 생기는 문제로 보임
/slash 명령처럼 명시적이지 않고, 단순히 “파일을 추출하는 방법” 같은 지침만 있음
그래서 “decompress”나 “extract” 같은 단어만 써도 자동으로 실행될 수 있음
이런 구조는 프롬프트 인젝션이 새로운 능력을 몰래 주입하기 쉽게 만듦
따라서 명시적이고 정적 등록된 도구 체계로 바꾸는 게 필요함
예를 들어 Extract(path) 같은 도구를 만들고, Read나 Bash("tar *")만 허용하도록 화이트리스트화할 수 있음
이렇게 하면 사람의 승인 절차도 추가할 수 있고, 세션 중에 새 도구가 등록되지 않음 -
관련된 이전 사례와 Anthropic의 공식 답변이 이 블로그 글에 정리되어 있음
-
약간 다른 주제지만, 데이터 유출 PoC를 서비스로 제공하는 곳이 있는지 궁금함
특히 Claude가 외부 CI 환경에서 실행될 때 CLAUDE.md의 독성 페이로드를 실험해보고 싶음 -
promptarmor의 최근 활동이 인상적임
제품팀의 품질 책임을 묻는 데 큰 역할을 하고 있음- 하지만 그들도 공포 마케팅을 통해 제품을 팔려는 이해관계가 있음
실제 공격은 피해자가 Claude에 민감한 폴더 접근을 허용하고, 공격자가 보이지 않는 프롬프트 인젝션이 숨은 DOCX를 업로드하도록 속여야 함
게다가 인젝션 내용은 Markdown 출력 시 사용자에게 드러남
공격자는 자신의 API 키를 써야 하므로 추적이 가능함
이 공격은 오래된 Haiku 버전에서만 작동함
결국 promptarmor가 판매를 위한 과장을 하는 것 같음
- 하지만 그들도 공포 마케팅을 통해 제품을 팔려는 이해관계가 있음
-
우리 팀은 에이전트 VM이 pip, npm, apt만 통신하도록 제한함
그리고 출력 요청 크기를 모니터링해 비정상적인 데이터 유출을 방지함- 하지만 이건 근본적 해결책이 아님
AI의 오용·누출·자율성이라는 삼중 문제는 단순히 한쪽을 막는다고 해결되지 않음
작은 요청 안에도 비밀을 인코딩할 수 있고, 비정렬된 AI는 이런 누출 경로를 스스로 찾아냄 - 흥미로운 접근임, 그런데 공격자가 사용자의 코드베이스를 패키지로 업로드할 수도 있는지 궁금함
- 하지만 이건 근본적 해결책이 아님