바이브 코딩으로 만든 프로토타입이 프로덕션으로 올라가는 순간, 무엇이 달라질까요. Thoughtworks 마케팅 팀은 그 답을 아찔한 방식으로 배웠습니다. AI가 추천한 설정 두 가지가 통과됐더라면, 미공개 브랜드 자산이 인터넷에 노출되고 서비스 계정 하나로 전체 클라우드 워크스페이스가 뚫릴 뻔했습니다.

Thoughtworks AI 애플리케이션 팀이 Gemini, Replit AI, Claude를 활용한 영상 제작 프로토타입을 확장하는 과정에서 겪은 두 가지 보안 위기를 기록한 글을 공개했습니다. 같은 시기, 보안 연구팀 PromptArmor는 Microsoft의 신규 에이전트 제품 Copilot Cowork에서 파일 유출이 가능한 취약점을 발견해 공개했습니다. 두 사례는 서로 다른 단계에서 발생했지만, 같은 구조적 문제를 가리키고 있습니다.
출처:
- The VibeSec Reckoning – martinfowler.com
- Microsoft Copilot Cowork Exfiltrates Files – PromptArmor
AI가 추천한 경로가 가장 위험하다
Thoughtworks 팀이 마주한 첫 번째 위험은 스토리지 설정이었습니다. AI가 클라우드 파일 저장소를 “링크가 있으면 누구나 접근 가능”으로 설정하라고 권했습니다. 이유를 묻자 “모든 기업이 이렇게 한다”고 답했고, 팀원이 강하게 거부하고 나서야 보안 대안을 제시했습니다.
두 번째는 서비스 계정 권한이었습니다. AI는 특정 작업에 필요한 최소 권한 대신, 단기 토큰을 생성하고 데이터베이스와 다른 리소스까지 접근할 수 있는 광범위한 역할을 서비스 계정에 부여하도록 제안했습니다. 코드를 실행하기 전 팀이 알아채서 막았지만, 만약 지나쳤다면 계정 하나가 탈취됐을 때 전체 클라우드 워크스페이스가 노출될 수 있었습니다.
AI 코딩 도구가 왜 이런 선택을 하는지는 설명이 됩니다. AI는 작동하는 코드를 빠르게 만들어내도록 최적화돼 있고, 최소 권한 원칙이나 보안 설정보다는 “가장 쉽게 작동하는 경로”를 먼저 제안합니다. 이 경향이 개발 속도와 결합되면 위험이 쌓입니다. 실제로 2026년 연구에 따르면 AI가 생성한 코드의 25%에서 확인된 취약점이 발견됐고, 기업 보안 침해 5건 중 1건이 AI 생성 코드와 연관됩니다.
“안전하게 해”는 안전하지 않다
Thoughtworks 팀이 이 경험에서 끌어낸 핵심은 하나입니다. 프롬프트로 보안을 지시하는 것과, 보안을 구조적으로 강제하는 것은 다릅니다.
사용자가 다르게 질문하거나, 제약을 무시하라고 요청하면 프롬프트 기반 제약은 사라질 수 있습니다. 빌드 도구에서 코드 커버리지 임계값을 강제하는 것과 TDD를 프롬프트로 요청하는 것의 차이와 같습니다. 하나는 규칙이고, 하나는 제안입니다.
이 문제는 배포 이후에도 이어집니다.
에이전트가 배포되면 공격 표면이 달라진다
PromptArmor가 발견한 Copilot Cowork의 취약점은, 개발 단계가 아닌 운영 중인 에이전트가 어떻게 악용될 수 있는지를 보여줍니다.
Copilot Cowork는 사용자의 Microsoft 권한으로 OneDrive, SharePoint, Teams, Outlook에 접근할 수 있는 에이전트입니다. Microsoft 공식 문서에는 “이메일 전송이나 Teams 메시지 게시처럼 민감한 작업은 사용자 승인을 요청한다”고 명시돼 있습니다. 그런데 수신자가 사용자 본인일 경우, 이 승인 절차가 작동하지 않았습니다.
공격 흐름은 이렇게 작동합니다.
- 공격자가 악성 프롬프트 인젝션을 심은 스킬 파일을 만들어 온라인에 공유합니다.
- 사용자가 유용해 보이는 스킬 파일을 내려받아 Copilot Cowork에 업로드합니다.
- 사용자가 “이번 주에 뭐 했는지 정리해줘” 같은 일반적인 요청을 합니다.
- 스킬 파일 안의 인젝션이 에이전트를 조작해, 사용자의 OneDrive 파일에 대한 사전 인증 다운로드 링크를 생성하게 합니다.
- 에이전트는 그 링크를 외부 이미지 태그로 위장해 Teams 메시지를 사용자에게 전송합니다.
- 사용자가 Teams를 열면 이미지 요청이 공격자 서버로 날아가고, 파일 링크가 유출됩니다.
이 과정에서 사용자에게는 어떤 승인 요청도 오지 않았고, 악성 메시지 내용도 UI에 표시되지 않았습니다. PromptArmor가 5번 시도한 결과 5번 모두 성공했고, Claude Opus 4.7을 포함한 최신 모델에서도 동일하게 작동했습니다.
더 큰 문제는 스케줄 작업입니다. “매주 월요일 아침에 지난주 정리해줘” 같은 자동화 설정이 활성화돼 있다면, 사용자가 없는 상태에서 같은 공격이 반복해서 실행될 수 있습니다.
두 사례가 가리키는 같은 지점
Thoughtworks의 사례와 Copilot Cowork의 취약점은 다른 단계에서 발생했지만, 같은 구조를 드러냅니다. AI 에이전트는 여러 시스템에 걸쳐 위임된 권한으로 작동하고, 그 권한의 범위와 행동의 결과를 사용자가 실시간으로 파악하기 어렵습니다. 개발 단계에서 AI가 제안하는 경로가 항상 안전하지는 않고, 운영 단계에서 에이전트에 부여된 권한은 공격의 폭발 반경이 됩니다.
Thoughtworks는 이 경험 이후 보안 규칙을 구조화한 컨텍스트 파일을 모든 AI 코딩 세션에 로드하고, 자동화된 보안 스캐닝 게이트를 배포 파이프라인에 추가했습니다. 두 가지 모두 프롬프트가 아닌 결정론적 제어, 즉 AI가 아무리 다르게 제안해도 통과되지 않는 구조적 장치입니다.
에이전트가 더 많은 권한을 갖고 더 많은 시스템에 연결될수록, 이 구조적 장치의 필요성은 높아집니다. 두 원문에는 각 사례의 기술적 세부사항과 공격 시연 영상, 그리고 Thoughtworks가 구체적으로 구성한 보안 컨텍스트 파일의 카테고리가 담겨 있습니다.
참고자료: Microsoft Copilot Cowork Exfiltrates Files (Simon Willison)

답글 남기기