
문서 기반 AI 웜(AI worm)이 Word용 Copilot을 통해 자가 전파될 수 있음
요약
Word용 Copilot이 문서 내 숨겨진 악성 명령을 실행하고 이를 새로운 문서로 복사하여 자가 전파하는 'AI 웜' 취약점을 분석합니다. 교차 도메인 프롬프트 주입(XPIA) 공격을 통해 공격자가 원본 문서 없이도 악성 지침을 지속적으로 확산시킬 수 있음을 경고합니다.
핵심 포인트
- Copilot이 문서 내 숨겨진 지침을 사용자 명령으로 오인하여 실행 가능
- 악성 명령이 포함된 내용이 생성/편집된 문서로 복사되어 자가 전파됨
- 교차 도메인 프롬프트 주입(XPIA)을 통한 기밀성 침해 위험 존재
- 신뢰할 수 있는 소스 자료를 활용하는 워크플로가 공격 매개체가 될 수 있음
이번 기술 분석 및 공개된 취약점의 완화 조치에 대해 협력해 준 Microsoft 제품 팀과 Microsoft Security Response Center (MSRC)에 감사를 표합니다. 아래에 반영된 편집 의견은 전적으로 저의 개인적인 의견이며, 제가 협력한 조직의 의견을 반드시 반영하는 것은 아닙니다.
이 포스트에 기술된 조사 결과는 MSRC 및 Microsoft 제품 팀과의 조율된 공개(coordinated disclosure)의 일환입니다. Microsoft에는 재현 단계, 영상, 환경 가정 및 테스트 중에 사용된 정확한 개념 증명 (PoC) 프롬프트가 제공되었습니다. 또한 공개 전 90일간의 조율 기간에 대해서도 통보되었습니다. 이 기간은 두 차례 연장되어 결과적으로 144일의 조율 기간을 가졌습니다.
이 시리즈의 파트 1과 2에서 저는 외부 입력이 Copilot의 응답에 어떻게 영향을 미칠 수 있는지, 그리고 어떤 경우에는 교차 도메인 프롬프트 주입 공격 (Cross-Domain Prompt Injection Attacks (XPIAs))을 통해 잠재적으로 기밀성 영향을 미칠 수 있는지를 보여주었습니다. 이 보고서는 해당 조사 결과들을 바탕으로 하며, XPIA 분석을 단일 상호작용 침해에서 신뢰할 수 있는 문서 워크플로 전반의 전파로 확장합니다. 이는 한 문서에 포함된 공격자 제어 명령이 Copilot이 생성하거나 편집한 Word 문서로 복사될 수 있으며, 이로 인해 해당 다운스트림 (downstream) 문서들이 동일한 공격의 새로운 매개체가 될 수 있음을 보여줍니다.
이전에도 AI 웜 (AI-worms)의 사례는 존재했습니다. 특히, Morris II는 생성형 AI (GenAI) 기반의 이메일 어시스턴트 생태계에서 자가 복제되는 프롬프트 전파를 입증했습니다. 하지만 제가 알기로는, 이번 사례는 주류 상용 생산성 제품군 내의 일반적인 워크플로를 통해 문서 기반 AI 웜이 자가 전파되는 것을 보여준 최초의 공개 시연 중 하나입니다.
보고된 시나리오는 다음과 같습니다:
- 외부로 공유된 문서에 숨겨진 악성 명령이 Word에서 초안을 작성하거나 편집 중인 문서를 Copilot이 수정하도록 만들 수 있으며, 이를 통해 공격을 새로운 문서로 전파할 수 있습니다.
공격자는 나중에 Word용 Copilot의 소스 자료(source material)로 사용될 문서에 숨겨진 지침(hidden instructions)을 삽입합니다. Copilot은 해당 지침을 사용자의 요청 일부로 해석하여, 작성 중이거나 편집 중인 문서를 조작할 수 있습니다. 그 후 Copilot은 결과물로 생성된 문서에 해당 숨겨진 지침을 복사할 수 있으며, 이로 인해 해당 문서가 새로운 매개체(carrier)로 변하게 됩니다. 만약 이 매개체가 이후에 다른 Copilot 지원 워크플로(workflow)에서 사용된다면, 공격자의 원본 문서가 존재하지 않더라도 지침이 다시 트리거되어 추가적인 문서들로 전파될 수 있습니다.
재무 보고서를 작성 중인 직원의 사례를 가정해 보겠습니다. 직원은 신뢰할 수 있는 웹사이트에서 시장 분석 보고서를 다운로드하지만, 해당 문서에 숨겨진 지침이 포함되어 있다는 사실은 알지 못합니다. 이 웹사이트는 이미 해킹된 상태입니다. 이후 직원은 Copilot으로 보고서를 작성할 때 이 분석 내용을 소스 자료로 포함합니다. 숨겨진 지침으로 인해 Copilot은 재무 보고서의 내부 수치를 변경하고, 공격 내용을 새 문서로 복사합니다. 직원은 겉보기에 정상적인 이 보고서를 저장하여 사내에 공유합니다. 나중에 동료가 이를 다른 보고서의 소스 자료로 사용하면, 지침이 다시 트리거되어 새 보고서를 변경하고 스스로를 앞으로 복사합니다. 따라서 이 공격은 해킹된 웹사이트나 원본 악성 문서의 추가적인 개입 없이도 계속될 수 있습니다. 영향을 받은 보고서들이 재사용됨에 따라, 추가적인 보고서와 문서들이 공격의 매개체가 될 수 있습니다.
-
벤더 (Vendor): Microsoft
-
협력적 공개 (Coordinated disclosure): MSRC 및 Microsoft 제품 팀을 통해 처리됨
-
본 포스트에 포함된 내용: Microsoft Copilot for Word에서의 XPIA 및 자가 전파 (self-propagation) 시나리오
-
고객 조치 사항: 본 게시물 발행 시점 기준으로 고객 측에서 문제를 완전히 해결할 수 있는 조치 방법은 없습니다. 고객은 다음과 같은 방법으로 노출을 줄일 수 있습니다:
- Copilot과 함께 사용할 때 외부에서 가져온 문서를 신뢰할 수 없는 것으로 취급하십시오.
- Copilot을 통한 생성 또는 편집을 시작하기 전에 첨부된 모든 문서를 검토하십시오.
- Copilot이 생성하거나 편집한 문서를 재사용, 공유 또는 배포하기 전에 주의 깊게 검토하십시오.
-
Microsoft 측 상태: 현재 배포된 모든 완화 조치(mitigations)가 적용된 상태에서도 테스트를 통해 공격 재현에 성공했습니다. 본 게시물 발행 시점 기준으로, 더 넓은 범위의 취약점 클래스 (vulnerability class)에 대한 강력한 완화 조치는 사용할 수 없습니다.
파트 1 및 2와 달리, 이 시나리오는 게시 시점에도 여전히 악용 가능합니다. 저는 이 점을 신중하게 고려했습니다. Microsoft와 합의된 협력 기간이 종료되었으며, 테스트 결과 현재 더 넓은 범위의 취약점 클래스에 대한 강력한 완화 조치가 없음을 확인했습니다. 모델 업그레이드를 포함한 두 차례의 완화 시도가 있었으나, 해당 클래스를 차단하지 못했습니다.
따라서 저는 페이로드 (payload) 수준이 아닌 클래스 (class) 수준에서 공개하기로 결정했습니다. 그 이유는 방어자가 인지하지 못하는 위험에 대해서는 노출을 줄일 수 없으며, 여기서 설명하는 전파 메커니즘이 많은 조직이 이미 의존하고 있는 일반적인 문서 워크플로 (workflow)에 영향을 미치기 때문입니다. 문제의 존재를 숨기는 것은 조직이 정보에 기반한 결정을 내리지 못하게 만들 뿐이며, 추가적인 보호를 제공하지도 못합니다.
2026-03-06: 재현 단계, 비디오, 환경 가정 및 PoC (Proof of Concept) 프롬프트와 함께 MSRC에 초기 보고서 제출.**
2026-03-09: MSRC가 수신을 확인하고 케이스를 오픈함.**
2026-03-31: Microsoft가 보고된 동작을 확인함.**
2026-03-31: Microsoft 제품 팀이 완화 (Mitigation) 작업을 시작함; 기술적 논의 진행 중.**
2026-04-03: 첫 번째 완화 조치 적용 (새로운 “Edit with Copilot” 환경)**
2026-04-09: 기존 공격 프롬프트 문구가 “Edit with Copilot”을 통해 완화되었음을 확인.**
2026-04-09: 새로운 XPIA (Cross-Prompt Injection Attack) 프롬프트 작업(재무 데이터 조작)을 사용하여 “Edit with Copilot”에서 공격 동작 재현. MSRC에 별도 케이스로 보고됨.**
2026-04-10: MSRC가 수신을 확인하고 케이스를 오픈함.**
2026-04-10: Microsoft 제품 팀이 완화 (Mitigation) 작업을 시작함; 기술적 논의 진행 중.**
2026-06-08: Microsoft의 요청에 따라 공개 일정을 2026-07-15로 연기함.**
2026-07-14: 두 번째 완화 수정 사항 적용. 이 완화 조치는 기반 모델을 GPT-5.5로 업그레이드하는 것으로 구성됨.**
2026-07-15: 당시 사용 가능한 최신 모델인 GPT-5.6을 사용하여 웜(Worming) 특성을 가진 성공적인 익스플로잇 (Exploit) 재현.**
2026-07-15: 새로운 완화 조치를 위한 시간을 확보하기 위해 공개를 2주 더 연기하여 2026-07-28로 미룰 것을 제안함.**
2026-07-15: Microsoft가 동의함.**
2026-07-28: 공격이 여전히 재현됨.**
2026-07-28: 조정된 공개 (본 포스트).
공격자는 피해자의 Microsoft 365 테넌트 (Tenant)에 대한 액세스 권한이 필요하지 않습니다. 공격자는 피해자에게 악성 문서를 공유하기만 하면 됩니다. 이는 SharePoint, Teams, Outlook 또는 기타 문서 공유 방식을 통해 수행될 수 있습니다.
이 시나리오에서 관련 보안 경계 (Security boundary)는 첨부된 문서와 현재 작성 중인 문서 사이의 경계입니다. 첨부된 문서 중 어느 하나라도 XPIA를 포함하고 있다면 공격이 트리거될 수 있습니다.
Copilot은 현재 작성 중인 작업에 포함할 부분을 결정하기 위해 첨부된 모든 문서를 읽어야 합니다. 하지만 첨부된 문서는 신뢰할 수 있는 사용자 지침(user instruction)이 아니라, 신뢰할 수 없는 정보(untrusted information)로 취급되어야 합니다.
경계 위반 (Boundary violation)
공격자가 제어하는 문서가 이메일, SharePoint 또는 기타 공유 옵션을 통해 다운로드되거나 공유됩니다. 만약 이러한 문서가 작성 작업 중에 Copilot에 첨부된다면, 신뢰 관계가 깨지게 됩니다.
기대되는 동작 (Expected behavior)
사용자가 Copilot에게 예를 들어 첨부된 문서들을 기반으로 1분기 재무 보고서(Q1 financial report)를 작성하도록 요청할 때, Copilot은 문서 내에 포함된 지침을 권위 있는 지침으로 취급하지 않고 첨부된 문서의 정보를 활용해야 합니다.
관찰된 동작 (Observed behavior)
문서에 포함된 지침이 Copilot의 동작을 변경하게 만듭니다. 제시된 사례는 다음과 같습니다:
1: Copilot이 재무 보고서의 수치 데이터를 조용히 변경함
2: Copilot이 전체 XPIA를 후속 문서(downstream documents)에 붙여넣어 전파하며, 이는 이후의 작성 세션에서 다시 첨부 파일로 사용될 수 있음
이러한 시나리오의 초기 공격 벡터(attack vector)는 악성 문서를 사용합니다. 악성 문서에는 문서가 Copilot의 컨텍스트(context)에 포함될 때 공격을 트리거하는 JSON 형식의 악성 프롬프트(malicious prompt)가 포함되어 있습니다. 이 프롬프트는 피해자로부터 숨기기 위해 흰색 배경에 흰색 텍스트로, 혹은 아주 작은 글꼴 크기로 렌더링될 수 있습니다. Word용 Copilot은 텍스트를 기반 모델인 대규모 언어 모델 (LLM)에 전달하기 전에 색상이나 글꼴 크기와 같은 모든 텍스트 서식을 제거하기 때문에, 피해자는 볼 수 없더라도 Copilot에게는 이 텍스트가 완전히 읽힐 수 있습니다. 이 공격은 작업과 관련 있는 텍스트가 포함된 겉보기에 무해한 문서에 이를 삽입함으로써 더욱 은밀하게 수행될 수 있습니다.
이 공격이 성공하려면 악성 문서가 Word 내 Copilot의 컨텍스트의 일부로 포함되어야 합니다. 따라서 사용 중인 Copilot의 버전에 따라 피해자는 다음 중 하나를 수행해야 합니다:
- Word용 Copilot에 문서를 능동적으로 첨부하거나 업로드해야 합니다.
- 업무/Work IQ 모드에서 “Copilot으로 편집 (Edit with Copilot)” 기능을 사용하고 Copilot이 피해자의 OneDrive에서 악성 문서를 찾도록 해야 합니다. 이 경우, Copilot은 해당 문서가 관련이 있다고 판단하여 컨텍스트 (context)에 포함시켜야 합니다. 따라서 공격자는 이 중 하나 또는 두 가지 모두의 가능성을 높이는 문서를 정교하게 제작해야 합니다.
이 익스플로잇 (exploit)은 Word의 “매직 펜 (magic pen)” 기능과 “Copilot으로 편집 (Edit with Copilot)” 기능 모두와 관련이 있습니다.
공격은 두 단계로 진행됩니다. 첫 번째 단계에서는 발판 (foothold)을 마련하고, 두 번째 단계에서는 초안 작성이나 편집의 일부로 Word용 Copilot을 사용하는 문서들을 통해 공격이 자가 전파 (self-propagates)됩니다.
첫 번째 단계에서 공격자는 악성 숨겨진 프롬프트 (malicious hidden prompt)가 포함된 문서를 제작합니다. 저의 초기 PoC (Proof of Concept)에서는 흰색 배경에 흰색 텍스트로 악성 프롬프트만 포함된 문서를 사용했습니다. 이는 Copilot이 해당 문서를 사용하기 위해 악성 문서가 반드시 피해자의 작업과 관련이 있을 필요는 없음을 보여주기 위함이었습니다. 문서가 컨텍스트에 포함되기만 하면 읽히게 되며, 따라서 공격이 트리거 (trigger)될 수 있습니다.
PoC 프롬프트는 두 부분으로 구성되었습니다:
첫 번째 부분은 문서에 영향을 미치는 방법에 대한 지침을 포함했습니다. 이는 요약의 의미를 약간 변경하는 것부터 재무 문서의 숫자를 바꾸는 것까지 다양할 수 있습니다. 핵심은 Copilot이 해당 프롬프트를 작업과 관련이 있고 무해하다고 믿도록 구성하는 것이었습니다. 많은 실험에서 저는 Copilot이 변경 사항을 강조하도록 지시해야 했는데, 변경 사항이 종종 식별하기 어려운 의미 있는 변화였기 때문입니다. 이는 주의 깊은 검토자조차 쉽게 놓칠 수 있는 방식으로 텍스트를 미묘하게 변경하는 이 공격이 얼마나 효과적인지를 보여줍니다. 실제 환경에서 공격자는 당연히 그러한 지침을 포함하지 않을 것입니다. 따라서 이 공개 내용의 나머지 부분에서는 즉각적으로 눈에 띄는 변화인 재무 보고서의 숫자 변경을 예로 들어 설명하겠습니다.
두 번째 부분에는 공격을 자가 전파(self-propagate)하기 위한 지침이 포함되어 있었습니다. 여기서 정확한 문구(wording) 또한 중요하지만, 일반적으로는 하류 문서(downstream documents)에서 출처를 추적하는 목적을 수행하는 것으로 프레임이 짜여 있었습니다. 또한 가독성을 개선하기 위한 지침이라는 명목으로 자신을 숨기는 방법에 대한 지침도 포함되어 있었습니다.

그림 1: 초기 공격 벡터(attack vector) 문서. 본 PoC를 위해 저는 가상의 경제 상황과 비전을 가진 Tfosorcim Ltd.라는 완전한 가짜 회사를 만들었습니다. 이 공격 벡터 문서는 일반적으로 공격자가 이용할 수 있는 회사 정보를 사용하여 작성된 가짜 시장 분석 보고서입니다. 공격 내용은 흰색 텍스트를 사용하여 문서 끝에 추가되었습니다. [보안을 위해 대부분의 XPIA 텍스트는 흐리게 처리되었습니다]
이 악성 문서가 Word용 Copilot으로 문서를 초안하거나 편집할 때 컨텍스트(context)에 포함되면, 공격이 트리거되어 Copilot이 지침을 실행하게 됩니다. 따라서 영향을 받은 문서의 재무 수치가 변경됩니다. 그런 다음 Copilot은 악성 프롬프트(prompt) 전체를 흰색 텍스트와 8포인트 글자 크기를 사용하여 영향을 받은 문서의 하단에 복사함으로써, 피해자로부터 효과적으로 이를 은닉합니다.

그림 2: Copilot이 생성한 하류 초안(downstream draft)은 저의 악성 문서를 첨부 파일([att] Direct wmr.docx)로 사용했습니다. 결과물인 1분기 재무 보고서 초안에서는 모든 재무 수치가 절반으로 줄어들었습니다. 스크린샷에는 다른 첨부 문서(Tfosorcim 내부 문서)도 표시됩니다.

그림 3: 이 그림은 본 글을 작성할 당시 OpenAI의 최신 모델인 GPT-5.6이 이러한 PoC에 사용되었음을 보여줍니다.

AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Posts의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기