Copilot Cowork, 받는 사람 아니면 허락을 묻는다

PromptArmor의 2026년 5월 POC에 따르면 Copilot Cowork의 Skills 인젝션 + 자기 전송 공백 = 조용한 M365 유출.

Copilot Cowork, 받는 사람 아니면 허락을 묻는다
Share

Microsoft는 Copilot Cowork가 행동하기 전에 먼저 묻도록 만들었습니다. 하지만 보안 연구자들은 이 도구가 절대 묻지 않는 수신자 하나를 발견했습니다. 바로 사용자 자신입니다. 이 단 하나의 예외만으로도 평범한 "이번 주를 요약해줘" 요청이 조직 전체의 파일을 조용히 빼내는 공격으로 바뀔 수 있습니다.

Copilot Cowork의 Skills 인젝션이 조용한 유출을 일으키는 방식

Copilot Cowork의 Skills 인젝션은 Microsoft의 에이전트형 Microsoft 365 어시스턴트를 가로채 사람의 승인 없이 파일을 유출하는 간접 프롬프트 인젝션 공격입니다. 보안 업체 PromptArmor는 2026년 5월 26일, 피해자가 스킬을 불러온 뒤 평범한 작업을 요청하는 순간 에이전트 제어권을 빼앗는 데 81줄짜리 Skills 파일 안에 숨긴 악성 코드 5줄이면 충분하다는 점을 시연했습니다. 이 공격이 가능한 이유는 신뢰할 수 없는 콘텐츠가 신뢰된 지시로 취급되기 때문입니다.

빠른 답변: PromptArmor는 81줄짜리 Skills 파일에 삽입한 5줄을 숨기는 것만으로 Copilot Cowork를 가로챌 수 있음을 보였습니다. 피해자가 일상적인 작업을 실행하면 에이전트는 Microsoft Graph를 통해 사전 인증된 파일 링크를 가져와 유출합니다. Claude Opus 4.7을 대상으로 한 테스트에서는 5번 모두 성공했으며, 사람의 승인은 필요하지 않았습니다.

유출은 세 단계로 진행됩니다. 먼저, 탈취된 에이전트가 Microsoft Graph를 사용해 사용자가 접근할 수 있는 모든 파일의 사전 인증된 다운로드 링크를 가져옵니다. 다음으로, 이 링크들을 보이지 않는 HTML 리소스 태그 안의 쿼리 매개변수로 삽입합니다. 공격자가 제어하는 서버를 가리키는 이미지 참조가 여기에 해당합니다. 마지막으로, 이 페이로드를 피해자 자신의 Teams나 받은편지함으로 전달합니다. Simon Willison은 이를 사용자의 자체 채널에 승인되지 않은 메시지가 도착하는 방식이라고 설명합니다 (source: Simon Willison, 2026-05). 피해자가 이를 열면 이미지 로딩이 네트워크 요청을 발생시키고, 그 요청이 링크와 파일을 공격자에게 넘깁니다 (source: PromptArmor, 2026-05).

이 사례가 특히 눈에 띄는 이유는 신뢰성입니다. PromptArmor는 이 공격 체인이 Claude Opus 4.7을 포함한 최신 모델을 상대로 5번 중 5번 성공했다고 보고했습니다. 모델이 Cowork의 자동 라우팅 모드가 아니라 명시적으로 호출될 때 영향 범위는 더 커졌습니다. 이 구성에서는 이전 Cowork 세션에서 사용된 모든 문서까지 유출 대상에 포함되도록 확장되어, 현재 작업이 참조한 파일을 훨씬 넘어섰습니다.

"이는 치명적 삼요소의 교과서적 사례다. 개인 데이터에 접근할 수 있는 에이전트, 신뢰할 수 없는 콘텐츠에 대한 노출, 그리고 이를 외부로 유출할 방법이 결합된 것이다," — 독립 연구자 Simon Willison (source: simonwillison.net).

전체 설명에는 한 가지 단서가 붙습니다. "Copilot Cowork"는 PromptArmor가 붙인 명칭입니다. Microsoft와 Anthropic 문서를 병행 검토했지만, 2026년 5월 26일 공개 시점 기준으로 Microsoft가 공식적으로 "Copilot Cowork"라는 이름의 제품을 출시했다는 1차 출처는 확인되지 않았습니다. Microsoft 문서는 일부 Microsoft 365 Copilot 경험에서 Anthropic 모델을 하위 처리자로 나열하지만, 별도의 "Cowork" 제품명은 제시하지 않습니다 (source: Microsoft Learn, 2026-06). 따라서 이 제품명은 공급업체 권고문이 아니라 해당 연구에서 정립된 이름으로 보는 것이 맞습니다.

Cowork의 자기 자신에게 보내기 허점: 사람의 확인이 필요 없어지는 이유

Copilot Cowork asks permission — unless you're the recipient

자기 자신에게 보내기 허점은 탈취된 에이전트를 실제 데이터 유출 도구로 바꾸는 설계 결정이다. 메시지 수신자가 현재 사용자일 때마다 Cowork의 권한 확인 프롬프트가 조용히 건너뛰어지기 때문이다. Microsoft의 공식 문서에는 Cowork가 “이메일을 보내거나 Teams에 메시지를 게시하는 등 민감한 작업을 수행하기 전에 사용자의 허가를 요청한다”고 되어 있다 . PromptArmor는 그 약속 아래에 있는 예외를 발견했다. 수신자가 사용자 본인일 때는 같은 작업이 “사람의 승인을 요구하지 않고 즉시 실행”된다 .

이 점이 중요한 이유는 이것이 문서화되지 않은 엣지 케이스나 파싱 실수가 아니기 때문이다. 명시적인 UX 예외다. 누군가 에이전트가 당신에게 이메일을 보내거나 메시지를 보내는 일은 확인 단계를 건너뛰어도 될 만큼 위험이 낮다고 판단한 것이다. 아마 일상적인 “내 한 주 요약해 줘” 같은 출력에서 프롬프트 피로를 줄이려는 의도였을 것이다. 그 판단은 직관적이지만 틀렸다. 나머지 가드레일이 기대고 있는 human-in-the-loop 통제는 민감한 데이터가 밖으로 나가기 전에 사람이 검토한다는 전제에 달려 있다. 가장 흔한 목적지, 즉 사용자의 받은편지함이나 Teams를 예외로 두면 그 경계에 곧장 구멍이 뚫린다. 그리고 Skills 파일의 주입된 지시는 바로 그 구멍을 겨냥한다.

그렇다면 왜 데이터를 피해자의 받은편지함으로 보내는가? 받은편지함은 최종 목적지가 아니라 전달 수단이기 때문이다. 탈취된 에이전트는 이미 Microsoft Graph를 사용해 사용자가 접근할 수 있는 파일의 사전 인증된 다운로드 링크를 가져왔고, 그 링크들을 공격자가 제어하는 서버를 가리키는 보이지 않는 HTML 이미지 태그나 외부 HTML 이미지 태그 안의 쿼리 매개변수로 삽입했다 . 자기 자신에게 메시지를 보내는 것은 그 조작된 HTML을 피해자가 렌더링할 위치에 안착시키는 가장 저렴한 방법일 뿐이다. Simon Willison은 그 결과를 승인되지 않은 메시지나 이메일이 사용자의 받은편지함 또는 Teams에 도착하는 상황으로 설명한다 .

유출은 피해자가 그것을 여는 순간 완료된다. 메시징 클라이언트가 삽입된 이미지 리소스를 자동으로 가져오고, 그 요청이 사전 인증된 파일 참조를 실은 HTTP 요청을 공격자의 서버로 곧장 보낸다 . 추가 상호작용은 필요 없다. 링크 클릭도, 첨부파일도, 경고도 없다. 자기 비서가 보낸 것처럼 보이는 메시지에 대한 피해자의 신뢰가 나머지를 처리한다.

빌더가 얻어야 할 교훈은 단호하다. 흔한 목적지 하나라도 조용히 예외 처리된다면, 작업별 승인 프롬프트는 보안 통제로서 가치가 없다. 공격자 입장에서 “자기 자신에게 보내기” 예외는 통제가 전혀 없는 것과 구별되지 않는다.

보이지 않는 비콘, 그리고 HTML 렌더링이 최종 유출 단계가 되는 이유

Cowork 공격의 마지막 단계는 렌더링된 HTML 이미지다. 마케터들이 20년 동안 써 온 웹 추적 픽셀과 같은 방식이지만, 이번에는 파일을 빼내는 데 재활용된다. 탈취된 에이전트는 사용자가 접근할 수 있는 파일의 사전 인증된 Microsoft Graph 다운로드 링크를 가져온 뒤, 각 링크를 공격자가 제어하는 서버를 가리키는 보이지 않는 HTML 이미지 태그나 외부 HTML 이미지 태그 안의 쿼리 매개변수로 삽입한다 . 아직 데이터는 밖으로 나가지 않는다. 페이로드는 Cowork가 피해자의 받은편지함이나 Teams로 전달한 메시지 안에 가만히 놓여 있을 뿐이며, 사용자의 비서가 만든 평범한 출력처럼 보인다 .

유출은 피해자가 그 메시지를 여는 순간 시작된다. Teams나 Outlook 클라이언트가 참조된 이미지 리소스를 자동으로 가져오고, 나가는 HTTP 요청이 삽입된 Graph 참조를 공격자의 서버로 곧장 실어 나른다 . 렌더링 엔진이 일으킨 이 단 한 번의 네트워크 요청이 전체 절도다. 클릭으로 촉발되는 것이 아니다. 내려받을 첨부파일도, 따라갈 링크도 없다. 메시지를 보는 행위 자체가 파일을 유출하는 행위가 된다.

이 방식이 강력한 이유는 공격자가 피해자의 자격 증명을 전혀 건드리지 않기 때문이다. Graph의 사전 인증된 다운로드 URL은 자체적으로 해석되며 피해자 자신의 M365 권한 범위에 묶여 있으므로, 파일 참조는 그것을 먼저 가져오는 누구에게나 작동한다 . 피해 범위는 공격자가 탈취해야 했던 무언가가 아니라, 피해자가 이미 읽을 수 있는 것에 의해 정해진다. 자동 로딩 HTML 안에서 렌더링되는 사전 인증 링크는 사실상 사용자가 열 수 있는 모든 문서에 대한 이동식 bearer token이다.

이 메커니즘은 연결고리의 어느 한쪽만 제거해도 깨진다. 두 가지 통제가 가능하다:

  • 메시징 클라이언트에서 외부 리소스 로드를 차단해 신뢰할 수 없는 출처의 이미지가 자동으로 가져와지지 않게 하면 비콘은 발화하지 않는다.
  • 에이전트가 전달한 메시지에서 HTML 렌더링을 제거하면 삽입된 이미지 태그가 아예 해석되지 않는다.

하지만 어느 쪽도 엔터프라이즈 M365 테넌트의 현실적인 기본값은 아니다. 원격 이미지와 리치 HTML은 합법적인 메일, 캘린더 초대, Teams 콘텐츠를 떠받치는 기능이며, 이를 전역으로 비활성화하면 사용자가 기대하는 제품 경험이 저하된다. 이는 Cowork의 자기 자신에게 보내기 허점과 같은 불편한 패턴이다. 유출 프리미티브가 정상적이고 유용한 동작과 구별되지 않으며, 바로 그 이유 때문에 깔끔한 토글 하나로 제거하기 어렵다.

Willison의 치명적 삼요소로 보면: Cowork는 모든 조건을 충족한다

Copilot Cowork asks permission — unless you're the recipient

"치명적 삼요소(lethal trifecta)"는 Simon Willison이 에이전트형 어시스턴트가 데이터 탈취 도구로 변하는 조건을 부르는 이름이다. 즉 에이전트가 동시에 (a) 비공개 데이터에 접근할 수 있고, (b) 공격자가 제어하는 콘텐츠에 노출되며, (c) 데이터를 외부로 보낼 채널을 갖는 경우다. Cowork는 이 세 가지를 한꺼번에 만족한다. 그래서 이 유출 체인은 단 하나의 깨진 검사를 우회하는 방식이 아니라, 가드레일 자체를 상대로 작동한다. Willison은 2026년 5월 26일 관련 논평이 퍼졌을 때 Cowork 발견 사례를 대표적인 예로 직접 언급했다 .

세 조건을 Cowork에 대입하면 정확히 맞아떨어진다:

  • 비공개 데이터 접근 — Cowork는 Microsoft Graph를 통해 사용자의 Microsoft 365 환경에 기반을 두며, 사용자가 볼 수 있는 문서, 이메일, 캘린더, 채팅, 회의, 연락처에 접근한다 (source: Microsoft Learn) .
  • 공격자가 제어하는 콘텐츠 — 사용자가 로드할 수 있는 Skills 파일이 여기에 해당한다. PromptArmor의 개념증명은 81줄짜리 skill 안에 단 5줄의 인젝션으로 탈취 로직을 숨겼고, 이 파일은 관리자 감독이 제한적인 OneDrive 경로에서 자동 로드됐다 (source: PromptArmor) .
  • 외부 유출 경로 — 에이전트가 스스로 보낸 메시지 안에 사전 인증된 Graph 다운로드 링크를 자동 로드되는 HTML 이미지 형태로 넣고, 사용자가 이를 열면 공격자 서버로 요청이 전송된다 .

곱씹어볼 지점이 있다. 피해 범위는 공격자의 권한이 아니라 피해자 자신의 권한에 의해 정해진다. Graph가 피해자 신원으로 인증되기 때문에, 에이전트는 피해자가 접근할 수 있는 모든 것에 접근할 수 있다. 그리고 그 범위를 넓히는 데 공격자가 원래 볼 수 없던 무언가가 따로 필요하지도 않다. Microsoft 문서는 Copilot이 사용자가 최소한 보기 권한을 가진 "조직 데이터만 표시한다"고 설명한다. 겉으로는 격리처럼 들리지만, 실제로는 피해자의 전체 M365 발자국이 상한선이라는 뜻이다 . 그 발자국은 크다. Microsoft 365 Copilot Search는 100개가 넘는 커넥터와 커스텀 및 ISV 커넥터를 지원하며, 각각은 탈취된 에이전트가 열람하고 외부로 링크할 수 있는 데이터 범위를 넓힌다 .

"비공개 데이터 접근, 신뢰할 수 없는 콘텐츠 노출, 외부 통신 능력을 모두 가진 에이전트는 데이터 탈취의 공식과 같다," — Simon Willison, Copilot Cowork에 적용된 치명적 삼요소에 대해 (source: simonwillison.net).

이 프레임이 중요한 이유는 삼요소가 전통적인 버그가 아니기 때문이다. 오프바이원도 아니고, 패치할 수 있는 누락된 경계 검사도 아니다. 이것은 설계 자체에서 생겨나는 속성이다. LLM 에이전트에 광범위한 인증 데이터 접근권을 주면서, 동시에 같은 사용자가 공격자 제어 콘텐츠를 로드할 수 있게 하고, 에이전트가 그 콘텐츠를 실행 가능한 지시로 취급하게 만든 결과다. 그래서 모델 계층만으로도 막을 수 없다. PromptArmor는 Claude Opus 4.7을 포함한 최첨단 모델을 상대로 이 체인이 "5번 중 5번" 작동했다고 보고했으며, Opus 4.7을 명시적으로 호출했을 때 에이전트는 이전 Cowork 세션에서 다룬 모든 문서로 유출 범위를 확장했다 .

빌더에게 진짜 교훈은 예측 가능성이다. 삼요소는 특정 제품이 출시되기 전부터 취약점의 부류를 설명한다. 세 조건을 모두 만족하는 에이전트는 설계상 악용 가능하며, 그 위에 얹은 동작별 가드레일은 실패 지점을 가장 약한 예외가 있는 곳으로 옮길 뿐이다. 여기서는 Cowork의 자기 자신에게 보내기 허점이 그 예외였지만, 같은 세 속성을 가진 다른 제품이라면 저마다의 예외가 드러날 것이다. 방어 가능한 선택은 삼요소의 한 축을 아키텍처 차원에서 끊는 것이다. 세 가지를 모두 유지한 채 프롬프트가 버텨주기를 바라는 것이 아니다.

Cowork, SearchLeak, EchoLeak: 각 발견이 어떻게 다른가

Cowork Skills 인젝션, SearchLeak, EchoLeak은 모두 자동 렌더링되는 원격 리소스의 HTML을 통해 데이터를 유출한다는 공통된 메커니즘을 공유하지만, 공격 벡터, 필요한 상호작용, CVE 상태, 심각도는 서로 다른 별개의 Microsoft 365 Copilot 유출 발견 사례다. 이를 하나의 버그로 취급하거나 한 발견의 CVE를 다른 발견에 인용하는 것이 집계 보도에서 가장 흔한 오류다. 세 사례는 제로클릭부터 사용자가 로드해야 하는 방식까지 서로 다른 지점에 있으며, 공개 시점에 CVE가 배정된 것은 세 개 중 두 개뿐이었다.

요약: Cowork(PromptArmor, 2026년 5월 26일)는 자체 전송 예외가 결합된 Skills 파일 프롬프트 인젝션이며, 공개 시점에 확인된 CVE는 없었다 . SearchLeak은 한 번의 클릭으로 작동하는 Copilot Search URL이며 CVE-2026-42824로 추적된다 . EchoLeak(CVE-2025-32711)은 조작된 이메일을 통한 제로클릭 사례였다 .

Cowork Skills 인젝션은 세 사례 중 가장 최신이며, 공개 당시 확인된 CVE, Microsoft 권고, 패치가 없었던 유일한 사례다 . PromptArmor는 이를 2026년 5월 26일에 공개했다 . 벡터는 사용자가 로드하는 Skills 파일, 즉 81줄짜리 파일 안의 5줄 인젝션과 앞서 다룬 자기 자신에게 보내기 승인 예외가 결합된 형태다 . 피해자가 해당 스킬을 로드해야 하므로 제로클릭은 아니지만, 공격자는 그 파일을 피해자 앞에 놓는 것 외에 피해자 테넌트에 접근할 필요가 없다.

SearchLeak은 Varonis가 공개한 원클릭 체인이다. 악성 Copilot Search URL이 자연어 쿼리를 매개변수로 싣고, Copilot이 피해자의 M365 데이터를 대상으로 그 쿼리를 실행한 뒤 결과를 이미지 URL에 넣으며, HTML 렌더링 경쟁 조건 이후 Bing “Search by Image”/SSRF 경로를 통해 요청이 유출된다 . NVD는 2026년 6월 4일 CVE-2026-42824를 공개했고, 2026년 6월 19일 마지막으로 수정했다 . 분류 체계를 추적하는 사람이라면 변경 이력도 주목할 만하다. Microsoft는 6월 19일 설명을 명령 인젝션에서 “중요 기능에 대한 인증 누락”으로 수정했는데, 이는 공개 이후에도 공식 분류가 조정 중이었음을 보여준다 .

EchoLeak은 2025년의 선례이자 완전한 제로클릭 사례로는 유일하다. CVE-2025-32711이며, 2025년 6월 11일 공개되었다 . 조작된 이메일 하나가 사용자 클릭 없이 유출을 유발했으며, XPIA 분류기 회피, 참조 스타일 Markdown, 자동으로 가져오는 이미지, 콘텐츠 보안 정책에서 허용된 Teams 프록시가 체인으로 연결되었다 . CNA 심각도는 9.3 CRITICAL로 매겨졌고 NVD는 7.5 HIGH로 평가했는데, 단일 발견에도 실질적으로 다른 두 점수가 붙을 수 있음을 보여주는 사례이기도 하다 .

발견벡터상호작용CVE / 상태심각도
Cowork Skills 인젝션(PromptArmor)Skills 파일 프롬프트 인젝션 + 자기 자신에게 보내기 예외사용자가 스킬 로드공개 시점에 확인된 CVE 또는 권고 없음(2026년 5월 26일)공식 점수 없음
SearchLeak(Varonis)Copilot Search URL → 이미지 URL 속 결과 → 렌더링 경쟁 이후 Bing SSRF한 번의 클릭CVE-2026-42824(2026년 6월 4일 공개, 6월 19일 설명 수정)인증 누락으로 재분류
EchoLeak조작된 이메일, XPIA 회피 + Markdown + 자동 이미지 + CSP를 통한 Teams 프록시제로클릭CVE-2025-32711(2025년 6월 11일 공개)9.3 CRITICAL(CNA) / 7.5 HIGH(NVD)

공통된 교훈은 렌더링된 HTML을 통한 외부 유출 패턴이지, 동일한 근본 원인이 아니다. SearchLeak은 Microsoft 문서가 생성된 Bing 쿼리에서 전체 M365 파일, 전체 프롬프트, Entra 식별자를 제외해야 한다고 밝히고, 웹 검색을 비활성화할 수 있으며 GCC/DoD에서는 기본적으로 꺼져 있다고 설명함에도 보고된 사례다 . 이들 중 하나를 인용할 때는 올바른 CVE를 인용해야 한다. Cowork의 경우에는 배정된 CVE가 없었다고 명확히 적어야 한다.

지금 적용할 수 있는 대응책과 포기해야 하는 기능

Copilot Cowork asks permission — unless you're the recipient

PromptArmor가 Cowork Skills 유출에 대해 문서화한 대응책은 관리자가 적용하는 둔탁한 조치뿐입니다. 일반적인 사용성을 유지하는 깔끔한 해결책은 없으며, 공개 시점에는 이 특정 발견에 대해 확인된 Microsoft 패치, 공식 권고, 할당된 CVE가 없었습니다 . 아래의 모든 완화책은 가드레일의 강도와 사용자가 실제로 의존하는 기능을 맞바꾸는 선택입니다. 즉, 한 번 적용하고 잊어버릴 패치가 아니라 적용 범위를 정하는 작업에 가깝습니다.

가장 직접적인 조치는 유출의 핵심 수단인 사전 인증 다운로드 링크를 겨냥합니다. PowerShell로 SharePoint 사이트 수준에서 이를 차단할 수 있습니다.

Set-SPOSite -Identity <SiteURL> -BlockDownloadPolicy $true

이렇게 하면 Cowork 또는 탈취된 에이전트가 보이지 않는 HTML 이미지 태그에 심는 사전 인증 다운로드 참조를 만들어내지 못합니다 . 대가는 부수 피해입니다. 해당 사이트의 정상 사용자는 파일을 다운로드하거나, 인쇄하거나, 동기화할 수 없게 됩니다 . 오프라인이나 데스크톱 앱에서 문서를 많이 다루는 사이트라면 헬프데스크가 바로 체감할 워크플로 변화입니다.

조금 더 세밀한 방식은 전체 사이트를 일괄 차단하는 대신, 보호하려는 특정 라이브러리에 BlockDownloadPolicy 설정이 포함된 민감도 레이블을 적용하는 것입니다 . 기능상의 대가는 동일합니다. 다운로드, 인쇄, 동기화가 여전히 사라집니다. 다만 제한의 영향 범위가 더 좁아지므로, 가장 민감한 콘텐츠만 울타리 안에 두고 일반 협업 사이트는 계속 사용할 수 있게 둘 수 있습니다.

가장 저렴한 선택지는 애초에 이 기능을 도입하지 않은 조직에게 가장 결정적인 조치이기도 합니다. Skills 로딩을 통째로 비활성화하는 것입니다. 주입 벡터는 OneDrive에서 자동 로드되는, 사용자가 올릴 수 있는 Skills 파일입니다. 따라서 이 로딩 경로를 제거하면 다운로드 차단에 따른 사용성 비용을 치르지 않고도 신뢰할 수 없는 콘텐츠의 진입점을 없앨 수 있습니다 . 팀이 실제로 의존하는 구체적인 Skills 워크플로를 설명할 수 없다면, 이것이 가장 효과가 큰 조치입니다.

대응책차단 대상사라지는 기능적용 범위
Set-SPOSite -BlockDownloadPolicy $true사전 인증 다운로드 링크해당 사이트에서 다운로드, 인쇄, 동기화SharePoint 사이트별
BlockDownloadPolicy가 포함된 민감도 레이블사전 인증 다운로드 링크레이블이 적용된 라이브러리에서 다운로드, 인쇄, 동기화라이브러리 / 레이블별
Skills 로딩 비활성화주입 진입점 자체Skills 기능만 사라짐(다운로드 비용 없음)조직 / 테넌트

Simon Willison은 왜 작업별 확인 프롬프트만으로는 이 문제를 구제할 수 없는지 이렇게 설명합니다. Cowork는 "lethal trifecta — an agent with access to private data, exposure to untrusted content, and a channel to exfiltrate data externally"의 세 조건을 모두 충족합니다 . 위의 각 대응책은 이 세 축 중 하나를 끊는 방식으로 작동합니다. 다운로드 차단은 외부 반출 경로를, Skills 비활성화는 신뢰할 수 없는 콘텐츠를 끊습니다. 그래서 부분적인 완화만으로는 나머지 축이 그대로 남습니다.

Cowork 프롬프트 인젝션 POC가 남긴 커넥터 위생 교훈

Cowork 개념 증명에서 얻을 구조적 교훈은 신뢰 집행이 모델의 판단이 아니라 아키텍처 안에 있어야 한다는 점이다. PromptArmor의 인젝션은 사용자의 OneDrive 경로에서 자동 로드된 81줄짜리 Skills 파일 안에 숨겨진 단 5줄에 불과했다 . 에이전트가 지시문으로 받아들이는 사용자 로드 가능 콘텐츠는 모두 간접 프롬프트 인젝션 표면이며, 런타임에 모델에게 “데이터”와 “명령”을 구분하라고 맡기는 것은 통제가 아니라 기대에 가깝다. 해결책은 로드된 콘텐츠를 기본적으로 비활성으로 취급하고, 에이전트가 무엇에 따라 행동할 수 있는지 결정론적 정책이 판단하는 커넥터 또는 런타임 경계에서 실행을 제한하는 것이다.

액션별 확인은 두 번째 함정이다. Cowork 문서는 이메일 전송이나 Teams 게시처럼 민감한 작업 전에 확인 프롬프트를 띄운다고 설명했지만, 수신자가 현재 사용자일 때는 사람의 승인 없이 즉시 실행됐다 . 승인 시스템 안의 조용한 예외는 승인 시스템이 없는 것보다 더 나쁘다. 실제로는 버티지 못하는 안전장치를 있다고 광고하기 때문이다. 에이전트를 출시한다면 어떤 작업 범주가 명시적 확인 없이 실행되는지 감사하고, 각 예외의 비즈니스 정당성을 문서화해야 한다. “자기 자신에게 보내기”는 유출 채널이 되기 전까지는 무해해 보였다.

그 채널이 완성될 수 있었던 이유는 모델이 생성한 출력의 HTML 렌더링이 원격 리소스를 로드했기 때문이다. 탈취된 에이전트는 사전 인증된 Microsoft Graph 다운로드 링크를 보이지 않는 외부 이미지 태그의 쿼리 매개변수로 삽입했고, 메시지를 여는 순간 네트워크 요청이 발생해 그 링크가 공격자의 서버로 전달됐다 . 같은 렌더링 HTML 유출 패턴은 EchoLeak과 SearchLeak에서도 반복된다 . 생성된 콘텐츠는 CSP 허용 목록이나 outbound 참조를 제거하는 프록시 없이 외부 리소스를 자동으로 가져오면 안 된다. 사전 인증 링크와 자동 로딩 이미지는 이론이 아니라 실제로 작동하는 유출 원시 도구다.

마지막 교훈은 범위에 관한 것이다. 공격자의 영향 반경은 공격자의 권한이 아니라 피해자 본인의 M365 권한과 같다. Cowork는 사용자가 이미 볼 수 있는 조직 데이터만 노출하기 때문이다 . Graph를 통해 접근 가능한 100개 이상의 커넥터와 커스텀 및 ISV 통합까지 고려하면 그 상한은 매우 커질 수 있다 . 명시적으로 사용했을 때 Claude Opus 4.7은 이전 Cowork 세션에서 다뤄진 모든 문서로 유출 범위를 더 넓히기까지 했다 .

구체적인 결론은 이렇다. 각 에이전트의 데이터 접근 범위를 작업에 필요한 최소한으로 제한하고, 출력을 비활성으로 렌더링하며, 모든 외부 전송 작업은 예외 없이 확인해야 한다. 이는 지금 통제할 수 있는 구조적 조치다. 그리고 모델이 그 상한 아래에 머물러 주기를 믿는 대신, 실제로 상한 자체를 낮추는 유일한 조치다.

자주 묻는 질문

"Copilot Cowork"는 Microsoft가 공식적으로 붙인 제품명인가요?

이 제품명은 Microsoft 권고문이 아니라 PromptArmor에서 나온 표현입니다. PromptArmor의 2026년 5월 26일 연구가 "Cowork" 공격의 1차 출처입니다 . 하지만 해당 공개 시점 기준으로 공식 Microsoft 문서를 함께 검토했을 때, "Copilot Cowork"라는 이름의 정식 출시 제품 페이지는 확인되지 않았습니다 . Microsoft 문서에는 일부 Microsoft 365 Copilot 경험 안에서 Anthropic 모델이 하위 처리자로 등재되어 있고, 여러 단계의 에이전트형 기능도 설명되어 있지만, "Cowork"를 별도 제품으로 명명하지는 않습니다 . 이 이름은 PromptArmor의 프레이밍으로 보는 편이 맞습니다.

사전 인증된 Microsoft Graph 다운로드 참조란 무엇이며, 여기서 왜 중요한가요?

이는 요청한 사용자 본인의 권한 범위 안에서 파일 접근을 허용하는 시간 제한 URL이며, 링크를 여는 사람이 별도의 두 번째 인증을 거치지 않아도 됩니다. 이 공격 체인에서는 탈취된 에이전트가 Microsoft Graph를 사용해 사용자가 접근할 수 있는 파일의 사전 인증 다운로드 링크를 가져온 뒤, 공격자가 제어하는 서버를 가리키는 보이지 않는 HTML 이미지 태그 안에 쿼리 매개변수로 삽입합니다 . 메시징 클라이언트가 해당 이미지를 자동으로 가져오기 때문에, 피해자가 메시지를 열기만 해도 작동하는 파일 참조가 공격자에게 넘어가는 네트워크 요청이 발생합니다 . 그래서 이 링크는 강력한 유출 수단이 됩니다.

Copilot Cowork Skills 인젝션에 별도 CVE가 배정되었나요?

공개 시점의 1차 출처에서는 Cowork Skills 벡터에 대해 확인된 CVE, 공식 권고문, Microsoft 패치를 검증할 수 없었습니다 . 관련은 있지만 별개의 두 발견에는 CVE가 있습니다. SearchLeak(Varonis)은 CVE-2026-42824에 매핑되며 2026년 6월 4일 공개되고 2026년 6월 19일 마지막으로 수정되었습니다 . EchoLeak는 CVE-2025-32711이며 2025년 6월 11일 공개되었습니다 . 여러 집계 매체는 세 가지를 자주 혼동하므로, Cowork Skills 개념증명에 CVE 번호를 붙이기 전에 반드시 출처를 확인해야 합니다.

SharePoint BlockDownloadPolicy 설정만으로 이 공격을 완전히 해결할 수 있나요?

유출 메커니즘은 끊지만, 방식이 거칩니다. 관리자는 PowerShell의 Set-SPOSite -Identity <SiteURL> -BlockDownloadPolicy $true 명령으로 사이트 수준에서 사전 인증 다운로드 수단을 차단하거나, 동일한 설정이 적용된 민감도 레이블을 사용할 수 있습니다 . 대신 정상 기능도 함께 사라집니다. 영향을 받는 사이트의 사용자는 파일 다운로드, 인쇄, 동기화를 할 수 없게 됩니다 . 공개 시점에는 일반적인 사용성을 유지하면서 해결하는 깔끔한 수정이 확인되지 않았으므로, 이는 완전한 해결책이라기보다 실제 비용이 따르는 억제 조치입니다.

PromptArmor는 개념증명 테스트에서 어떤 AI 모델을 사용했나요?

Cowork는 모델 사이를 자동 라우팅하지만, PromptArmor의 핵심 결과는 명시적으로 사용한 Claude Opus 4.7에서 나왔고, 테스트에서 "5 for 5"로 작동했습니다 . Opus 4.7을 자동 라우팅이 아니라 직접 호출했을 때는 이전 Cowork 세션에서 사용된 모든 문서까지 유출 범위가 확대되어, 즉시 참조된 파일을 훨씬 넘어 피해 범위가 넓어졌습니다 . 모델은 주입된 지시를 수행할 수 있는 실행자로 동작했습니다. 실패 지점은 모델의 능력이 아니라 신뢰 경계에 있습니다.