본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 29. 23:30

CVE-2026-42824 SearchLeak: M365 Copilot가 어떻게 원클릭 데이터 유출 도구가 되었나

요약

Microsoft 365 Copilot Enterprise에서 발견된 치명적인 취약점 체인 'SearchLeak(CVE-2026-42824)'을 분석합니다. 파라미터-투-프롬프트 인젝션, HTML 렌더링 레이스 컨디션, Bing SSRF를 결합하여 단 한 번의 클릭만으로 조직의 민감한 데이터를 유출할 수 있는 공격 메커니즘을 다룹니다.

핵심 포인트

  • P2P 인젝션을 통해 검색 쿼리를 AI 명령어로 변조 가능
  • 스트리밍 응답 중 HTML 렌더링 레이스 컨디션으로 보안 필터 우회
  • Bing SSRF를 활용하여 콘텐츠 보안 정책(CSP) 무력화
  • 단 한 번의 클릭으로 이메일, OTP, 조직 파일 등 대규모 데이터 유출 위험

CVE-2026-42824는 이를 발견한 Varonis Threat Labs 연구원들에 의해 "SearchLeak"라고 명명되었으며, Microsoft 365 Copilot Enterprise에서 발견된 치명적인 3단계 취약점 체인입니다. 이 취약점은 공격자가 정교하게 제작된 링크를 단 한 번 클릭하는 것만으로, 공격자 측에 추가적인 권한이 필요 없이 이메일, 일회용 비밀번호 (OTP), 비밀번호 재설정 링크, 일정 항목 및 인덱싱된 조직 파일을 유출할 수 있게 했습니다. Microsoft는 2026년 6월 초에 백엔드에서 이 취약점에 대한 패치를 적용했으며, 2026년 6월 15일에 심각(critical) 등급으로 공개했습니다. 패치를 적용하기 위해 테넌트 관리자(tenant administrator)가 취해야 할 조치는 없습니다.

이 공격은 Exchange, SharePoint, OneDrive, Teams를 포함한 조직의 전체 데이터 자산에 접근할 수 있는 계층인 M365 Copilot Enterprise를 구체적으로 겨냥합니다. 이러한 접근 범위가 피해 범위(blast radius)를 상당히 크게 만들었습니다. Copilot이 M365 환경에 얼마나 광범위하게 연결되어 있는지에 따라, 피해자의 계정이 읽을 수 있는 것이라면 무엇이든 Copilot이 검색하여 유출할 수 있었습니다.

SearchLeak의 작동 방식: 함께 존재해서는 안 될 세 가지 버그

Varonis는 공격을 수행하기 위해 세 가지 별개의 약점을 체인(chain)으로 연결했습니다. 개별적으로는 각각 유의미한 악용을 하기에는 불충분합니다. 하지만 이들이 결합되면 공격자는 단 한 번의 클릭으로 피해자의 메일함과 인덱싱된 조직 콘텐츠에 대해 조용히 읽기 권한을 얻을 수 있습니다.

1단계 — 파라미터-투-프롬프트 인젝션 (Parameter-to-Prompt Injection, P2P). Microsoft 365 Copilot Enterprise Search는 검색 쿼리를 위해 q URL 파라미터를 수락합니다. 문제는 이 파라미터가 사용자 제공 검색 입력으로 처리되지 않고, Copilot의 AI 엔진에 실행 가능한 명령(instruction)으로 직접 전달되었다는 점입니다. 피해자가 정교하게 제작된 m365.cloud.microsoft/search/?q=<PAYLOAD> URL을 클릭하도록 유도할 수 있는 공격자는 Copilot이 무엇을 검색할지, 그리고 검색 결과로 무엇을 할지를 제어할 수 있었습니다. 공격자 측의 인증도 필요 없으며, 권한 상승도 필요 없습니다. 오직 링크 하나면 충분합니다.

2단계 — HTML 렌더링 레이스 컨디션 (HTML Rendering Race Condition). AI가 생성한 HTML이 실행되는 것을 방지하기 위해, Microsoft는 Copilot의 응답을 <code> 블록으로 감쌌습니다. 문제는 이 감싸기 작업이 스트리밍 응답 (streaming response)이 완료된 후에 발생한다는 점이었습니다. 스트리밍이 진행되는 동안, 브라우저는 가공되지 않은 원시 HTML (raw HTML)을 일시적으로 렌더링했습니다. AI의 출력물에 삽입된 <img 태그가 — 탈취된 데이터를 담은 외부 HTTP 요청을 발생시키며 — 새니타이저 (sanitizer)가 활성화되기 전에 실행되었습니다. 방어 기제 (guardrail)가 작동했을 때는 이미 요청이 떠난 후였습니다.

3단계 — Bing SSRF를 통한 CSP 우회 (CSP Bypass via Bing SSRF). 브라우저의 콘텐츠 보안 정책 (Content Security Policy, CSP)은 임의의 도메인에서 로드되는 이미지를 차단했습니다. 하지만 Bing의 "이미지로 검색" 엔드포인트(bing.com/images/searchbyimage?imgurl=…)는 CSP에서 허용 목록 (allowlisted)에 포함되어 있었습니다. 삽입된 <img 태그가 탈취된 데이터를 URL 파라미터에 포함하여 이 Bing 엔드포인트를 가리키자, Bing의 백엔드는 공격자의 서버로부터 "이미지"를 가져오기 위해 서버 측 페치 (server-side fetch)를 수행했습니다. CSP는 피해자의 브라우저에 적용되는 것이지, Bing의 인프라에 적용되는 것이 아니었습니다. Bing은 자신도 모르는 사이에 데이터 유출 프록시 (exfiltration proxy)가 되었습니다.

전체 공격 체인: 피해자가 링크 클릭 → Copilot이 q 파라미터를 검색 명령으로 해석 → 메일함 및 인덱싱된 조직 내 콘텐츠 검색 → <img 태그가 포함된 응답 생성 → 새니티제이션 (sanitization) 전 스트리밍 중에 이미지 실행 → Bing이 경로에 탈취된 데이터가 포함된 공격자 URL을 페치 → 공격자가 서버 로그에서 이메일 제목, OTP 코드, 파일 이름 등을 읽음. 두 번째 클릭은 필요 없습니다. 정교하게 제작된 링크는 microsoft.com을 가리키고 있어, 표준 안티 피싱 (anti-phishing) URL 필터를 우회했습니다.

광범위한 데이터 접근 권한을 가진 AI 어시스턴트는 왜 계속해서 이러한 종류의 취약점을 만들어내는가?

SearchLeak가 M365 Copilot을 프롬프트 인젝션 (Prompt Injection) 기반 데이터 유출의 매개체로 만든 첫 번째 사례는 아닙니다. Varonis는 이전에 Copilot Personal에서 "Reprompt"를 발견한 바 있습니다. AI 어시스턴트가 사용자가 제어하는 입력값으로부터 주입된 명령을 처리한 뒤, 사용자의 실제 의도와 다르게 동작하는 유사한 패턴은 LangChain, AutoGen, 그리고 Semantic Kernel 배포 환경 전반에서 문서화되어 왔습니다.

이러한 취약점이 계속해서 발생하는 구조적인 이유는 기업용 AI 어시스턴트의 설계 방식과 이들이 작동하는 위협 모델 (Threat Model) 사이의 불일치에 있습니다.

기업용 AI 어시스턴트는 최대한의 도움을 주도록 설계되었습니다. 즉, 사용자가 접근할 수 있는 모든 것을 검색하고, 풍부한 응답을 생성하며, 전체 데이터 자산 (Data Estate)과 통합되도록 구축됩니다. 여기서 보안상의 가정은 AI의 출력이 사용자의 의도를 대변한다는 것입니다. 만약 Copilot이 이미지 요청을 생성하거나 서식이 지정된 응답을 내놓는다면, 이는 쿼리 문자열에 명령을 주입한 공격자가 아니라 인증된 사용자를 위해 동작하고 있다고 간주하는 것입니다.

파라미터-투-프롬프트 인젝션 (Parameter-to-Prompt Injection)은 입력 계층에서 이러한 가정을 깨뜨립니다. URL 파라미터, 검색된 문서, 캘린더 이벤트 본문, Teams 메시지 등 사용자가 제어할 수 있는 그 어떤 입력값이든 모델이 수행해야 한다고 믿는 내용을 수정할 수 있다면, 모델의 출력은 더 이상 사용자 의도를 나타내는 신뢰할 수 있는 대리자 (Proxy)가 아닙니다. 동일한 논리가 간접 프롬프트 인젝션 (Indirect Prompt Injection)에도 적용됩니다. 공격자가 에이전트가 나중에 검색하고 처리하게 될 문서 내에 명령을 심어두는 방식입니다.

실행 전 강제 적용 (Pre-execution enforcement) — 즉, AI가 동작을 수행하기 전에 무엇을 하려는지 확인하는 절차 — 는 오늘날 대부분의 기업용 AI 어시스턴트 애플리케이션 계층에는 존재하지 않습니다. 이들은 출력값을 정화 (Sanitize)할 뿐입니다. SearchLeak는 AI 응답이 스트리밍 (Streaming)될 때 사후 처리 단계로서의 출력 정화가 왜 실패하는지를 보여줍니다. 정화 도구가 따라잡기 전에 부수 효과 (Side effects)가 먼저 발생해 버리기 때문입니다.

M365 Copilot을 운영하는 팀은 지금 당장 무엇을 해야 하는가?

백엔드 패치는 특정 SearchLeak 체인을 차단합니다. 하지만 이와 별개로 취해야 할 몇 가지 조치들이 있습니다.

패치가 귀하의 테넌트(tenant)에 적용되었는지 확인하십시오. Microsoft가 이를 서버 측(server-side)에서 적용했기 때문에 관리자의 별도 조치는 필요하지 않습니다. 하지만 귀하의 Copilot Enterprise 인스턴스가 패치된 버전에 있는지 Microsoft 계정 팀을 통해 확인하십시오. 특히 배포가 지연되는 소버린 클라우드(sovereign cloud) 또는 GCC 환경에서 운영 중인 경우 더욱 그렇습니다.

Copilot의 인덱싱된 데이터 범위(scope)를 감사하십시오. SearchLeak의 피해 범위(blast radius)는 Copilot이 읽기 권한을 가진 데이터가 무엇인지에 전적으로 달려 있었습니다. Copilot의 검색 인덱스(search index)에 어떤 SharePoint 사이트, Exchange 사서함, OneDrive 폴더가 포함되어 있는지 검토하고, 최소 권한 원칙(least-privilege)을 적용하십시오. 사용자가 Copilot을 통해 실제로 접근해야 하는 범위로 인덱싱을 제한해야 합니다.

M365 통합 감사 로그(Unified Audit Logs)에서 비정상적인 Copilot 검색 URL 패턴을 검토하십시오. SearchLeak은 피해자가 조작된 URL을 클릭해야 했습니다. Copilot Enterprise 출시부터 6월 15일 사이에 사용자가 Copilot 검색으로 연결되는 의심스러운 링크를 받았다면 로그 검토가 필요합니다. 감사 로그에서 HTML 태그를 포함하거나 Bing의 이미지 검색(search-by-image) 엔드포인트를 가리키는 인코딩된 이미지 URL이 포함된 q 파라미터를 찾으십시오.

위협 모델(threat model)에 P2P 인젝션(injection)을 추가하십시오. URL 파라미터, 도구 설명(tool description), 또는 검색된 문서가 엄격한 타입 강제(type enforcement) 없이 LLM에 도달하는 모든 AI 시스템은 이 부류의 공격에 취약합니다. 이는 아직 대부분의 위협 모델링 프레임워크에서 표준은 아니지만, 반드시 포함되어야 합니다.

Waxell MCP 게이트웨이가 이 부류의 공격을 처리하는 방식

SearchLeak은 AI 어시스턴트가 신뢰받는 작업과 공격자가 입력 계층(input layer)에서 명령을 주입했을 때 실제로 수행하는 작업 사이의 간극을 악용했습니다. 그 간극, 즉 광범위한 데이터 접근 권한을 가진 AI 어시스턴트가 실행 전 강제 계층(pre-execution enforcement layer) 없이 작동하는 문제는 거버넌스(governance)의 문제입니다. 패치는 이 문제의 특정 형태만을 해결할 뿐입니다.

Waxell MCP Gateway는 AI 클라이언트(Claude Desktop, Claude Code, Cursor 및 기타 모든 MCP 호환 클라이언트)와 해당 클라이언트들이 사용하는 160개 이상의 업스트림 MCP 커넥터(upstream MCP connectors) 사이에 위치합니다. 도구 호출(tool call)이 실행되기 전, 즉 도구 호출 경계(tool call boundary)에 위치함으로써, Waxell은 AI 클라이언트 스스로는 수행할 수 없는 제어 기능을 강제할 수 있습니다.

지문 인식 단계에서의 프롬프트 인젝션 스캐너 (Prompt injection scanner at fingerprint time). MCP 도구가 게이트웨이에 등록될 때, Waxell은 에이전트 호출(agent call)이 도구에 도달하기 전, 도구 설명(tool descriptions) 내에 주입된 명령어가 있는지 스캔합니다. SearchLeak에서 나타난 P2P 인젝션 벡터(P2P injection vector, 사용자 제어 입력 필드를 통해 모델로 전달되는 악성 명령어)는 프롬프트 인젝션 스캐너가 도구 설명 파라미터에서 포착하도록 설계된 것과 동일한 유형의 공격입니다. 주입된 오버라이드(override) 명령어가 포함된 도구는 단 하나의 에이전트 호출이 실행되기 전에 플래그(flag)가 지정되어 검토를 위해 보류됩니다. 이는 데이터가 이미 이동한 후가 아니라, 실행 전 단계에서 이루어집니다.

전송 중 개인정보(PII) 삭제 및 비밀 정보 차단 (PII redaction and secret blocking in-flight). SearchLeak으로 인해 운영상 가장 큰 피해를 준 출력물은 일회용 비밀번호(OTP), 비밀번호 재설정 링크, 그리고 이메일 내용이었습니다. Waxell MCP Gateway는 개인정보(PII) — 이메일 주소, 사회보장번호(SSN), 금융 데이터 — 를 제거하고, 비밀 정보(보안 코드, API 토큰, 비밀번호 재설정 링크)가 게이트웨이를 통해 다운스트림 엔드포인트(downstream endpoint)로 전송되기 전에 차단합니다. 게이트웨이의 50개 이상의 정책 카테고리에는 신원(identity), 개인정보(privacy), 콘텐츠(content)에 대한 특정 정책이 포함되어 있으며, 이는 0.045ms p95 지연 시간(latency)으로 강제됩니다. 즉, 거버넌스(governance)가 유의미한 오버헤드(overhead)를 발생시키지 않는다는 의미입니다. 주입된 프롬프트가 민감한 콘텐츠를 검색하는 데 성공하더라도, 게이트웨이를 통해 조직의 경계(perimeter) 밖으로 나갈 수는 없습니다.

외부 데이터 전송에 대한 Human-in-the-loop 승인. SearchLeak의 SSRF 체인은 Bing의 백엔드에서 시작된 아웃바운드 HTTP 요청을 통해 데이터가 조직 외부로 유출되는 방식에 의존했습니다. Waxell MCP Gateway는 조직의 환경을 벗어나는 결과를 초래하는 모든 도구 호출(tool call)에 대해 사람의 승인을 요구할 수 있습니다. 즉, 스트리밍 응답 중에 조용히 실행되도록 두는 대신, 작업이 완료되기 전에 검토자에게 해당 동작을 노출합니다.

지속 가능한 감사 추적(Durable audit trail). 게이트웨이는 모든 도구 호출에 대해 내보낼 수 있는 로그를 유지합니다: 에이전트가 무엇을 요청했는지, 어떤 인자(arguments)를 전달했는지, 도구가 무엇을 반환했는지에 대한 기록입니다. SearchLeak 급의 데이터 유출 시도는 로그에 비정상적인 아웃바운드 데이터 패턴으로 나타날 것입니다. 200개 이상의 라이브러리 및 프레임워크 전반에서 AI 클라이언트 측을 계측하는 Waxell Observe와 결합하면, 모델 추론(inference)부터 도구 실행에 이르기까지 전체 추적(trace)을 확보할 수 있습니다.

Microsoft의 패치는 특정 구현 결함을 해결합니다. 거버넌스 모델은 이 취약점의 범주(class)를 다룹니다. 광범위한 데이터 접근 권한을 가진 AI 어시스턴트 중 도구 호출 경계에서 실행 전 강제 적용 계층(pre-execution enforcement layer)이 없는 어시스턴트는, AI 어시스턴트의 통합이 확장됨에 따라 이 체인의 변종들에 계속 노출될 것입니다.

Waxell MCP Gateway를 무료로 체험해 보세요 — 재구축이 필요 없으며, 하나의 URL이 모든 상위 MCP 설정을 대체합니다 — waxell.dev/signup에서 확인 가능합니다.

자주 묻는 질문 (Frequently Asked Questions)

CVE-2026-42824 SearchLeak이란 무엇인가요?
CVE-2026-42824는 Microsoft 365 Copilot Enterprise에서 발견된 심각한 3단계 취약점 체인으로, 이를 발견한 Varonis Threat Labs 연구원들에 의해 SearchLeak이라는 이름이 붙여졌습니다. 이는 Parameter-to-Prompt Injection 약점, HTML 렌더링 레이스 컨디션(race condition), 그리고 Bing의 서버 측 요청 위조(SSRF)를 통한 CSP 우회를 결합하여 이메일, MFA 코드, 비밀번호 재설정 링크, 인덱싱된 조직 파일을 클릭 한 번으로 유출할 수 있게 합니다. Microsoft는 2026년 6월 15일에 공개된 백엔드 수정을 통해 이를 패치했습니다.

SearchLeak가 공격자에게 특별한 권한이나 여러 단계의 절차를 요구하나요?
아니요. 공격자는 m365.cloud.microsoft — 즉, 합법적인 Microsoft 도메인 — 을 가리키는 정교하게 제작된 URL을 피해자가 클릭하게 만들기만 하면 됩니다. 승인된 권한, 플러그인, 또는 추가적인 사용자 작업은 전혀 필요하지 않습니다. 피해자의 관점에서는 Copilot이 데이터를 유출하기 전 잠시 "생각(think)"하는 것처럼 보이며, 그 후 백그라운드에서 조용히 데이터 유출이 완료됩니다.

SearchLeak는 어떤 데이터를 훔칠 수 있나요?
보안 코드, 일회용 비밀번호(OTP), 비밀번호 재설정 링크를 포함한 이메일 제목 및 본문, 캘린더 회의 세부 정보 및 참석자 정보, SharePoint 문서, OneDrive 파일, 그리고 Copilot Enterprise Search에 의해 인덱싱된 기타 모든 조직 내 콘텐츠를 훔칠 수 있습니다.

M365 Copilot을 패치하는 것만으로 향후 유사한 공격을 방지하기에 충분할까요?
특정한 SearchLeak 공격 체인은 차단되었습니다. 하지만 P2P 인젝션 (P2P injection), 검색된 콘텐츠를 통한 간접 프롬프트 인젝션 (indirect prompt injection), 그리고 SSRF 기반 유출 (SSRF-based exfiltration)은 단일 버그가 아닌 하나의 공격 범주입니다. Varonis는 Copilot Enterprise에서 이 공격 체인을 기록했으며, 이전에는 Copilot Personal에서 관련 변종을 발견한 바 있습니다. 유사한 패턴은 다른 AI 어시스턴트 프레임워크에서도 존재합니다. 도구 호출 경계 (tool call boundary)에서 실행 전 제어 (pre-execution controls)를 강제하지 않는, 광범위한 데이터 접근 권한을 가진 AI 어시스턴트들은 향후 나타날 변종 공격에 여전히 노출되어 있습니다.

AI 자동 생성 콘텐츠

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

원문 바로가기
0

댓글

0