마이크로소프트는 10월 13일 월간 보안 패치에서 Copilot 관련 원격 코드 실행 취약점을 수정했다. 식별 번호는 CVE-2026-103572이며, Visual Studio(2026과 2022 등 이전 버전 포함)와 SQL Server Management Studio(SSMS)가 영향을 받는다. 발견자는 보안 연구원 Johann Rehberger로, 같은 날 개인 블로그 Embrace The Red에 기술적 세부 내용을 공개했다.
두 제품은 핵심 라이브러리 Microsoft.VisualStudio.Copilot.Core.dll을 공유하며 취약점이 바로 여기에 있다. 그래서 한 곳의 결함이 두 제품에 동시에 영향을 미친다.
마침표 하나가 검사를 우회하는 방식
Copilot은 IDE 안에서 사용자 대신 파일을 쓸 수 있지만, .mcp.json이나 Visual Studio 설정 파일 같은 구성 파일은 보호 대상으로 지정돼 건드릴 수 없다. 문제는 검사 방식에 있다. 검증 로직이 원본 문자열을 비교하고 있었다.
Windows의 Win32 계층에는 오래된 규칙이 하나 있다. 파일 이름 끝의 마침표는 자동으로 제거된다는 것이다. Rehberger는 마이크로소프트 자체 문서를 인용한다. "File and Folder names that end with the ASCII Period (0x2E) character will also be saved without this character." 그 결과 검증 시점에는 settings.json.과 settings.json이 서로 다른 문자열이어서 검사를 통과한다. 그러나 실제로 디스크에 저장될 때는 끝의 점이 사라지고, 기록되는 것은 보호 대상 파일 그 자체다.
공격 흐름은 대략 다음과 같다. 공격자는 먼저 간접 프롬프트 인젝션으로 Copilot에 영향을 준다. 예를 들어 MCP 서버가 반환하는 데이터에 지시문을 끼워 넣는다. Copilot이 이를 따라 .mcp.json 같은 구성 파일에 공격자가 원하는 내용을 쓴다. IDE가 그 구성을 읽을 때 악성 명령이 실행된다. Visual Studio에서는 관련 도구 경로 설정을 바꾸는 것만으로도 명령 실행을 유발할 수 있다.
Rehberger는 몇 가지 다른 문제도 함께 보고했다. ..\를 이용한 경로 탐색으로 제한된 파일을 읽을 수 있고, 일부 파일에서 설치 식별자가 유출되며, MAI-Code-1-Flash 모델은 간접 프롬프트 인젝션에 대한 저항력이 약한 편이라는 것이다. 그의 분석에 따르면 마이크로소프트의 수정은 GetFullPath 호출을 한 번 추가한 것이다. 먼저 경로를 정규화해 끝의 점을 제거하고 ..을 풀어낸 뒤 비교를 수행한다.
같은 유형의 구멍, 두 번째
Rehberger가 구성 파일을 노린 것은 이번이 처음이 아니다. 2025년 8월 그는 VS Code의 GitHub Copilot 원격 코드 실행 취약점(CVE-2025-53773)을 공개했다. 프롬프트 인젝션으로 Copilot이 작업 공간의 settings.json을 고쳐 쓰게 하고, 확인 없이 도구를 자동 실행하는 스위치를 켠 뒤에는 곧바로 명령을 실행할 수 있었다. 그때도 마이크로소프트 정기 패치와 함께 수정됐다.
두 사례를 나란히 놓으면 수법이 일관된다. 에이전트에게 파일 쓰기가 허용되고, 구성 파일이 에이전트와 IDE가 할 수 있는 일을 결정하며, 에이전트가 구성에 쓰도록 만들 수만 있으면 권한은 에이전트 스스로에 의해 확대된다. 2025년의 교훈은 구성 파일에 보호 목록을 두는 것이었는데, 이번에 뚫린 것이 바로 그 계층이다. Rehberger가 글에서 내린 결론은 다음과 같다.
"Security controls around agents must hold even when the agent itself is compromised or misaligned."
에이전트를 둘러싼 보안 통제는 에이전트 자체가 침해되거나 의도와 어긋나게 동작할 때도 유지되어야 한다.
사용자가 해야 할 일
시간순으로 보면 Rehberger는 8월 4일 보고서를 제출했고, 8월 4일부터 7일까지 Visual Studio에 대한 영향과 악용 세부 내용을 보충했으며, 8월 30일에 후속 연락을 했다. 마이크로소프트는 9월 16일 이를 확인했고, 10월 11일 포상금이 0이라고 통보했으며, 10월 13일 수정본을 배포했다. 마이크로소프트가 포상금을 주지 않은 이유는 공개 자료에 설명되어 있지 않다.
Visual Studio와 SSMS를 쓰는 팀이 할 일은 하나뿐이다. 이번 달 패치를 최대한 빨리 설치하는 것이다. Copilot을 서드파티 MCP 서버에 연결해 쓰는 환경은 위험이 더 높다. 프롬프트 인젝션의 입구가 바로 그런 외부 데이터이기 때문이다.
참고 출처: Embrace The Red 기술 블로그, CocoLoop, 마이크로소프트 보안 업데이트 가이드. CVE 번호, CVSS 점수와 공개 시점은 연구자 블로그와 마이크로소프트 공지를 기준으로 한다.