에이전트 스택이 안고 있는 1998년의 문제
2026년 6월 마지막 주, AI 에이전트 도구를 겨냥한 CVE가 작은 무리로 몰려 나왔습니다. 그중 둘은 같은 데스크톱 에이전트 클라이언트에서 나왔고, 둘 다 인가 결함이었으며, 하나는 MCP OAuth 콜백 한복판에 자리 잡고 있었습니다. 하나씩 떼어 놓고 보면 각각은 유지 관리자가 주말이면 패치할 중간 심각도(medium) 버그에 불과합니다. 함께 묶어서 보면 이 무리는 하나의 신호이고, 그 신호는 구조적입니다. AI 에이전트 생태계가 공격 표면을 쌓아 올리는 속도가, 그것을 방어할 보안 문화를 쌓아 올리는 속도를 앞지르고 있다는 것입니다. 이는 어느 한 프로젝트의 도덕적 잘못이 아닙니다. 이것은 1998년 무렵 웹이 처해 있던 바로 그 상태입니다. 안전하지 않은 기본값을 가진 언어가 주류로 자리 잡았고, 자격 증명이 사방에 널려 있었으며, 설치 기반이 그 누구도 보안을 강화할 수 없을 만큼 빠르게 늘어나던 때 말입니다. 여러분의 키를 쥐고 여러분의 셸을 실행하는 도구들이, 2026년의 위협 모델 속으로 1998년 수준의 보안 성숙도를 실어 나르고 있습니다. {.answer-block}
TL;DR
- 인기 데스크톱 AI 에이전트 클라이언트인 Cherry Studio는 2026년 6월 29일에 CVE 두 건을 받았습니다. MCP OAuth 콜백 서버의 부적절한 인가 결함(CVE-2026-13524), 그리고 preload API의 인가 우회(CVE-2026-13534)입니다.12
- 이 패턴은 한 앱에만 국한되지 않습니다. MCP 참조 도구 자체가 2025년에 심각한 원격 코드 실행 결함을 내보냈습니다. CVSS 9.6의 mcp-remote(CVE-2025-6514), 그리고 CVSS 9.4의 Anthropic MCP Inspector(CVE-2025-49596)입니다.34
- 에이전트 도구는 과거 어떤 웹 앱보다도 구조적으로 더 노출되어 있습니다. 자격 증명을 쥐고 있고, 설계상 코드를 실행하며, 여러분의 신뢰 경계(IDE, 셸, 브라우저) 뒤가 아니라 그 안에 자리 잡고 있습니다.
- 이런 버그를 막을 지식은 이미 존재합니다. MCP 명세는 혼동된 대리자(confused deputy)와 OAuth 흐름 공격 유형을 상세히 문서화하고 있습니다. 다만 빠르게 쏟아지는 모든 통합에 그 지식을 적용하는 문화가 아직 퍼지지 않았을 뿐입니다.5
- 1998년의 웹은 웜이 보안 부재의 대가를 비싸게 만든 뒤에야 성숙했습니다. 에이전트 생태계에는 아직 그에 상응하는 강제 요인이 없으며, 지금 이런 버그를 찾아내고 있는 바로 그 모델들이 그 강제 요인이 될 웜을 작성할 수도 있습니다.
이 무리를 구체적으로
Cherry Studio는 스스로를 “스마트 채팅, 자율 에이전트, 그리고 300개 이상의 어시스턴트를 갖춘 AI 생산성 스튜디오”라고 내세우는 크로스플랫폼 데스크톱 클라이언트로, Model Context Protocol 서버를 명시적으로 지원합니다. 이 글이 다루는 바로 그런 종류의 도구입니다. 여러분의 API 키를 중개하고, 로컬 통합을 실행하며, 여러분을 대신해 네트워크로 손을 뻗는 소비자용 에이전트 말입니다.
2026년 6월 29일, VulDB는 이 클라이언트를 겨냥한 권고문 두 건을 발표했습니다. CVE-2026-13524는 MCP OAuth 로컬 콜백 서버의 부적절한 인가 결함(CWE-285)으로, src/main/services/mcp/oauth/callback.ts 파일에 있으며 1.9.0부터 1.9.6까지의 버전에 걸쳐 있습니다. 표현은 명료합니다. “인자 code의 조작이 부적절한 인가로 이어진다.” CVSS 3.1 기준 5.6점, 중간(medium) 등급입니다.1 CVE-2026-13534는 CherryIN preload API의 인가 우회(CWE-639)로, 1.9.7 버전까지 영향을 미치며 5.0점입니다.2 둘 다 대서특필될 만한 사안은 아닙니다. 둘 다 모두에게 낯선 영역을 빠르게 훑고 지나가는 팀이 저지르는, 조용한 인가 실수입니다.
첫 번째가 바로 결정적 단서입니다. MCP 클라이언트의 OAuth 콜백은 교과서에 나올 법한 신뢰 경계입니다. 외부 인가 서버가 여러분의 기기로 code를 되돌려주고, 여러분의 기기가 그것을 신뢰할지 말지 결정하는 지점이지요. 이를 잘못 다루는 것은 이색적인 신종 버그 유형이 아닙니다. 오히려 MCP 명세의 보안 문서가 가장 많은 지면을 할애하는 바로 그 유형입니다.
같은 기간에 나온 이웃한 CVE 두 건은 뺐습니다. 이 무리가 실제여야 하기 때문입니다. CVE-2026-13533은 에이전트 프레임워크가 아니라 PHP 콘텐츠 관리자인 agentejo Cockpit CMS이고, CVE-2026-13543은 아예 검증할 수 없었습니다. 탄탄한 사례 몇 개가 부풀린 목록보다 낫습니다.
에이전트 도구가 구조적으로 더 불리한 이유
1998년 무렵의 전형적인 웹 앱도 안전하지 않았지만, 그것은 경계 뒤에 살았습니다. 여러분이 그 안에 들어앉아 있지 않은 서버에서 돌아갔고, 피해 범위는 데이터베이스와 세션에 그쳤으며, 침해가 발생해도 공격자가 손에 넣는 것은 그 앱의 데이터였습니다.
에이전트 도구는 이 구도를 뒤집습니다. 여러분의 기기 위에서, 혹은 여러분의 IDE 안에서 돌아가고, 여러분의 클라우드와 저장소에 접근하는 장기 유효 자격 증명을 쥐고 있으며, 코드 실행을 익스플로잇이 아니라 핵심 기능으로 수행합니다. 뒤에 숨을 경계가 없습니다. 도구 자체가 경계이며, 그 경계는 설계상 구멍이 뚫려 있기 때문입니다.
Simon Willison은 2025년 6월 “치명적 삼중 위협(lethal trifecta)”이라는 이름으로 이 위험을 정확히 짚어냈습니다. 에이전트는 “여러분의 개인 데이터에 대한 접근”, “신뢰할 수 없는 콘텐츠에의 노출”, 그리고 “외부와 통신할 수 있는 능력”이 그 데이터를 훔쳐낼 수 있는 방식으로 결합될 때 악용 가능해집니다.7 유능한 에이전트라면 어느 것이나 기본적으로 이 세 가지를 모두 갖추고 있습니다. 여러분의 비밀을 읽고, 공격자의 영향을 받은 콘텐츠를 받아들이고, 아웃바운드 요청을 보내는 일이 버그가 아니라 그 도구의 기능이기 때문입니다. 이 삼중 위협은 예외적인 경우가 아닙니다. 기본 구성 그 자체입니다.
이것이 구조적 차이입니다. 1998년의 웹 앱은 경계 하나에 담긴 만큼의 데이터를 흘리도록 속아 넘어가야 했습니다. 2026년의 에이전트는 데이터 유출 사슬에 필요한 모든 능력을 이미 갖춘 채로 도착하며, 악의적 입력과 여러분의 자격 증명 사이에 놓인 유일한 방벽은 그 도구가 내부 신뢰 경계를 제대로 그어 두었는가뿐입니다. Cherry Studio의 콜백 버그는 그 경계 중 하나가 조금 잘못 그어졌을 때 벌어지는 일의 모습입니다.
MCP가 키우는 증폭 효과
Model Context Protocol은 2026년 에이전트 스택을 잇는 결합 조직이며, 특정한 방식으로 공격 표면을 배가시킵니다. 모든 MCP 서버는 모델이 호출할 수 있는, 대개 급하게 작성된 새로운 특권 통합입니다. 하나를 추가하는 일에는 마찰이 없습니다. 하나를 감사하는 일에는 있습니다. 통합의 설치 기반이 그 코드를 읽는 사람들의 수를 앞질러 달아나고 있습니다.
참조 도구를 보면 이것이 취미 프로젝트에 국한된 문제가 아님을 알 수 있습니다. 2025년 7월, JFrog은 CVE-2025-6514를 공개했습니다. Claude Desktop, Cursor, Windsurf가 사용하는 커넥터인 mcp-remote의 OS 명령 주입 결함으로, 악의적 서버가 OAuth 흐름 도중 조작된 authorization_endpoint URL로 이를 촉발합니다. 심각(critical) 등급, CVSS 9.6입니다.3 같은 달, Tenable은 CVE-2025-49596을 공개했습니다. Anthropic 자체 MCP Inspector의 CVSS 9.4 원격 코드 실행 결함으로, 인증 검사가 누락된 탓에 악의적 웹사이트가 로컬 포트에 도달하고 DNS 리바인딩을 통해 임의의 명령을 실행할 수 있었습니다.4
이 글에서 다루는 네 건의 CVE 중 둘은 MCP 도구의 OAuth 흐름 결함입니다. 하나는 콜백 서버에, 하나는 엔드포인트 발견 과정에 있습니다. 이것은 우연이 아닙니다. 에이전트 클라이언트에서의 OAuth는 거듭 헛짚게 되는 경계이며, 명세도 이를 대놓고 말하고 있습니다. 2025년 6월 18일 자 MCP 보안 모범 사례 문서는 가장 긴 절을 “혼동된 대리자 문제(confused deputy problem)”에 할애하며, 프록시 서버가 클라이언트별 동의를 구현하고, OAuth state 매개변수를 검증하며, 리다이렉트 URI를 정확히 일치시키도록 의무화합니다.5 이 문서는 Cherry Studio가 콜백 버그를 내보내기 1년 전에 발표되었습니다. 격차는 지식의 문제가 아닙니다. 명세의 보안 부록과, 지난 화요일에 작성된 평범한 통합 사이의 거리입니다.
프롬프트 인젝션은 이 증폭을 옛 웹이 마주했던 그 무엇보다도 질적으로 더 악화시킵니다. Willison은 2022년 9월 이 용어를 만들며 “이것을 가리키는 자명한 이름은 프롬프트 인젝션이어야 한다고 제안한다”라고 썼습니다. SQL 주입에 빗댄 표현으로, 신뢰할 수 있는 지시와 신뢰할 수 없는 입력이 하나의 문자열로 이어 붙여지고 엔진이 이를 해석하는 상황을 가리킵니다.6 에이전트에게는 코드뿐 아니라 데이터도 하나의 공격 벡터입니다. 오염된 웹 페이지, 함정이 심어진 파일, 적대적인 도구 설명 등 모델이 읽는 어떤 바이트든 지시를 실어 나를 수 있습니다. MCP 명세는 이에 대해 단도직입적입니다. 악의적 서버가 클라이언트를 데이터 유출용 프록시로 바꿔 놓을 수 있다고 경고합니다.5 이것은 입력 이스케이핑으로 막을 수 없습니다. 입력은 자연어이고 해석기는 모델이기 때문입니다.
1998년 비유, 정확하게
이 비유는 사실 검증을 통과해야 합니다. 그러지 못하면 그저 분위기에 그치니까요. 그래서 그 시대를 정확하게 짚어 봅니다.
PHP 3는 1998년 6월에 출시되어 동적 웹 언어를 수백만 명의 손에 쥐여 주었는데, 지금 보면 무모하게 느껴지는 기본값을 달고 있었습니다. 쿼리 문자열, 쿠키, 서버에서 온 외부 입력이 곧바로 전역 스코프에 등록되었던 것입니다. register_globals가 켜져 있었고, 공격자가 통제하는 변수가 조용히 여러분의 코드가 신뢰하는 변수가 될 수 있었습니다. 이를 바로잡는 데 4년이 걸렸습니다. 2002년 4월에 출시된 PHP 4.2.0이 기본값을 바꿨고, 릴리스 공지는 이를 담담하게 밝힙니다. “외부 변수(환경, HTTP 요청, 쿠키 또는 웹 서버에서 온)는 더 이상 기본적으로 전역 스코프에 등록되지 않는다.”8 그 시대를 규정한 또 다른 임시방편인 매직 쿼트(magic quotes)는 addslashes를 돌려 알맹이 없이 SQL 주입 안전성을 흉내 냈고, register_globals보다 몇 년을 더 살아남은 끝에야 프로젝트가 마침내 그것을 없앴습니다. 안전하지 않은 기본값, 안전하다는 착각, 그리고 문화가 따라잡기까지의 여러 해에 걸친 지연. 그것이 젊은 웹의 애플리케이션 계층이었습니다.
그 문화는 저절로 오지 않았습니다. 떠밀려 왔습니다. 2001년 7월 19일, Code Red 웜은 Microsoft IIS 웹 서버의 버퍼 오버플로를 악용했고, CAIDA의 집계에 따르면 “14시간이 채 안 되어 35만 9천 대 이상의 컴퓨터가 Code-Red(CRv2) 웜에 감염되었다”고 합니다.9 2003년 1월 25일, Sapphire/Slammer 웜은 Microsoft SQL Server의 버퍼 오버플로를 노려 스스로를 376바이트 패킷에 담았고, “찾아낼 수 있는 취약 호스트 대부분을 10분 안에 감염시켰”습니다. 그때까지 역사상 가장 빠르게 확산된 웜이었습니다.10 이들은 PHP 버그가 아니라 인프라 웜이었고, 저는 둘을 뒤섞지 않겠습니다. 요점은 그 10년의 형태입니다. 모든 계층에 걸친 안전하지 않은 기본값, 그리고 보안 부재가 피부로 와닿게, 공개적으로 비싸진 뒤에야 성숙한 보안 문화입니다. 기본값을 안전하게 두는 것은 업계가 웜으로 값을 치르고 배운 교훈이었습니다.
이것을 2026년에 겹쳐 보면 그 대응 관계가 불편할 정도로 잘 들어맞습니다. 안전하지 않은 기본값: 콜백 code를 신뢰하고 동의 확인을 건너뛰는 에이전트 클라이언트. 안전하다는 착각: admin:* 범위로 발급된 토큰 위에 씌워진 권한 확인 창 하나. 폭발적으로 늘어나는 설치 기반: 무엇에든 붙는 MCP 서버, 클릭 한 번으로 추가되고, 아무도 감사하지 않는. 이 생태계에 아직 없는 것은 웜입니다. 1998년의 기본값과 2001년의 표적 프로필은 갖췄고, 이제 자신의 강제 요인을 기다리고 있습니다.
운영자의 자세
여러분에게는 문화를 기다릴 여유가 없습니다. 여러분은 지금 이 도구들을 쓰고 있으니, 생태계가 아직 여러분을 위해 긋지 않은 경계를 스스로 그어야 합니다. 제가 쓰는 틀은 이 삼중 위협을 운영 점검표로 삼는 것입니다. 어떤 에이전트든 무엇을 읽을 수 있고, 무엇을 실행할 수 있으며, 무엇을 유출할 수 있는지를 물은 다음, 각 항목에 결정론적 방어 장치를 두세요.
| 능력 | 에이전트가 하는 일 | 어디서 잘못되는가 | 방어 장치 |
|---|---|---|---|
| 읽기 | 파일, 웹 페이지, 도구 출력, MCP 응답을 받아들임 | 신뢰할 수 없는 콘텐츠가 주입된 지시를 실어 나름 | 가져온 모든 바이트를 지시가 아니라 적대적 입력으로 취급하고, 외부 데이터 출처에 표시를 붙여 격리하기 |
| 실행 | 설계상 셸을 돌리고, 파일을 수정하고, 도구를 호출함 | 조작된 데이터가 명령이 됨(주입, 혼동된 대리자) | 호출 이전에 평가되는 권한 규칙, 도구와 MCP 서버 허용 목록, 새 로컬 서버에 대한 동의 요구 |
| 유출 | 아웃바운드 요청을 보내고, 저장소에 쓰고, API로 전송함 | 읽기와 실행이 더해져 치명적 삼중 위협을 완성함 | 이그레스 제어, 사설 및 링크-로컬 IP 대역 차단, 토큰을 최소 권한으로 한정, 토큰을 그대로 전달하지 않기 |
방어 장치 열은 이상론이 아닙니다. 결정론적이며, 바로 그 결정론이 핵심입니다. 훅은 모델이 반박할 수 없는 종료 코드와 함께 생명주기 이벤트에서 발동하고, 권한 규칙은 도구가 실행된 뒤가 아니라 그 전에 평가됩니다. “에이전트가 X를 해서는 안 된다”가 “에이전트가 X를 할 수 없다”로 바뀌는 계층이 바로 여기이며, 프롬프트 인젝션 페이로드가 말로 구슬려 빠져나갈 수 없는 유일한 계층입니다. 입력을 신뢰할 수 없고, 그 입력에 대해 모델이 스스로를 단속하리라고도 믿을 수 없을 때, 여러분은 모델이 통제하지 못하는 경계에서 강제합니다.
두 번째 통제 수단은 생산성 기능처럼 보이지만, 실은 보안 수단입니다. 에이전트가 실행에 앞서 자신의 작업을 검토 가능한 계획으로 정리해 낼 때, 그 계획을 검토하는 일은 곧 보안 검토입니다. 호출할 모든 도구와 건드릴 모든 파일을 낱낱이 밝힌 40줄짜리 워크플로 스크립트는, 여러분이 1분 만에 읽어 낼 수 있는 위협 모델입니다. 실시간으로 내려지는 만 개의 결정을 감사할 수는 없지만, 그 결정들을 만들어 낼 계획은 아무것도 소모되기 전에 감사할 수 있습니다.
그리고 이 비대칭을 놓치지 마세요. 이런 CVE를 만들어 내는 바로 그 능력이 그것들을 찾아내기도 합니다. 한 Anthropic 연구자는 코딩 에이전트와 열 줄짜리 스크립트로 23년 묵은 Linux 커널 취약점과 22건의 Firefox CVE를 드러냈습니다. 여러분 책상 위의 그 도구는, 여러분이 겨누기만 한다면 여러분 자신의 스택을 향한 취약점 스캐너입니다. 방어자는 오늘날 취약점 발견을 자동화할 수 있으며, 지금 그 분류 계층을 구축하고 있습니다. 그것이 1998년의 웹에는 없었던 단 하나의 이점입니다.
나의 입장
제가 생각하는 전개는 이렇습니다. 틀릴 수 있을 만큼 구체적으로 말해 보겠습니다. 에이전트 생태계는 보안 문화를 갖추기 전에 자신의 Code Red 순간을 맞이할 것입니다. 웹이 밟은 순서가 바로 그러했기 때문입니다. 그 강제 요인은 십중팔구 공유된 MCP 서버를 통해 에이전트 사이를 옮겨 다니는 자기 전파형 프롬프트 인젝션 페이로드이거나, 인기는 있지만 감사가 부족한 하나의 통합으로 거슬러 올라가는 대규모 자격 증명 유출 사건일 것입니다. 그것을 만드는 비용은 저렴할 것입니다. 커널 버그를 찾아내는 바로 그 모델들이 그것을 작성할 수 있기 때문이며, “큰 파도가 온다”는 경고는 결코 방어에만 국한된 이야기가 아니었습니다.
그 사건이 터진 뒤에는, 기본값을 안전하게 두는 것이 더 이상 선택 사항이 아니게 됩니다. MCP 클라이언트는 동의 대화 상자가 기본으로 켜진 채, 토큰 대상(audience)이 검증된 채, 일치하지 않는 리다이렉트 URI를 거부하는 콜백을 갖춘 채 출시됩니다. PHP가 결국 register_globals를 꺼 둔 채 출시된 것처럼 말입니다. 권한 계층은 옵트인에서 기본 거부(default-deny)로 옮겨 갑니다. 살아남는 통합은 명세의 보안 부록을 곧 명세로 대접한 것들입니다.
불편한 대목은 그 시간표입니다. 웹은 대략 1998년부터 2005년까지, 웜과 웜 사이에 생각할 몇 년의 여유를 두고서야 기본값 안전을 내면화했습니다. 에이전트 스택은 더 빠르게 복리로 불어납니다. 모든 개발자의 기기 위에 더 값비싼 표적이 있고, 공격자의 도구 사슬은 모델 세대가 바뀔 때마다 개선됩니다. 1998년의 문제는 실재합니다. 남은 질문은 단 하나, 우리가 이 비유에 따라 움직이는 때가 웜이 그 결말을 쓰기 전이냐, 후냐뿐입니다.
핵심 요점
- 모든 에이전트에 삼중 위협 감사를 실시하세요. 각 도구가 무엇을 읽고, 실행하고, 유출할 수 있는지 적어 둔 다음, 각 항목마다 결정론적 방어 장치를 확인하세요. 방어 장치가 없는 능력이 곧 여러분의 노출 지점이며, 다음 페이로드가 착지할 자리입니다.
- MCP 서버를 허용 목록으로 관리하고, 모든 명령 매개변수를 신뢰할 수 없는 실행으로 취급하세요. 통합을 추가하는 일은 클릭 한 번이지만 감사는 그렇지 않으니, 등록을 검토된 목록으로 통제하세요. 여기 나온 네 건의 CVE 중 둘은 MCP 클라이언트의 OAuth 흐름 버그였습니다. 핸드셰이크는 형식적 절차가 아니라 하나의 경계입니다.
- 계획 시점을 검토 관문으로 삼으세요. 에이전트가 의도를 검토 가능한 계획으로 정리하게 하고, 실행에 앞서 그것을 위협 모델처럼 읽으세요. 자신이 쓸 도구와 파일을 밝힌 스크립트는 1분이면 감사할 수 있지만, 실시간으로 오가는 만 개의 도구 호출은 그럴 수 없습니다.
- 스캐너를 먼저 여러분 자신에게 겨누세요. 이런 CVE를 만들어 내는 능력이 그것들을 찾아내기도 합니다. 다른 누군가가 여러분을 향해 훑기 전에, 여러분의 코드와 의존성에 에이전트 보조 보안 점검을 돌리세요.
자주 묻는 질문
MCP 서버는 안전한가요?
기본적으로 안전하지 않으며, 한결같이 안전하지도 않습니다. MCP는 프로토콜입니다. 그 보안성은 각 서버와 클라이언트가 이를 어떻게 구현하느냐에 달려 있습니다. mcp-remote(CVSS 9.6)와 Anthropic MCP Inspector(CVSS 9.4)를 겨냥한 2025년 공개는 참조 도구조차 심각한 RCE 결함을 내보냈음을 보여 줍니다.34 명세는 주요 공격 유형인 혼동된 대리자, 토큰 통과 전달(token passthrough), SSRF, 로컬 서버 장악을 문서화하고, 구체적인 완화책을 처방합니다.5 각 서버를 특권 통합으로 취급하세요. 신뢰하거나 감사를 마친 것만 실행하고, 명시적으로 허용 목록에 넣으며, 여러분이 연결하는 어떤 서버든 여러분의 에이전트에 영향을 줄 수 있다고 가정하세요.
프롬프트 인젝션이란 무엇인가요?
프롬프트 인젝션은 공격자가 AI 시스템이 읽는 신뢰할 수 없는 입력 속에 지시를 몰래 숨겨 넣고, 모델이 그것을 마치 여러분에게서 온 것처럼 따르는 상황을 말합니다. Simon Willison은 2022년 9월 SQL 주입에 빗대어 이 용어를 만들었습니다. 신뢰할 수 있는 지시와 신뢰할 수 없는 입력이 하나의 프롬프트로 이어 붙여지고 모델이 이를 해석하는데, 어느 부분이 공격자의 것이었는지 확실히 가려낼 방법이 없다는 것입니다.6 에이전트에게 이것이 특히 위험한 이유는 데이터가 공격 벡터가 되기 때문이며, 해석기가 언어 모델인 탓에 이스케이핑으로는 해결할 수 없기 때문입니다.
치명적 삼중 위협이란 무엇인가요?
Simon Willison이 2025년 6월에 붙인 이름으로, 함께 있을 때 에이전트를 악용 가능하게 만드는 세 가지 능력을 가리킵니다. 여러분의 개인 데이터에 대한 접근, 신뢰할 수 없는 콘텐츠에의 노출, 그리고 외부와 통신할 수 있는 능력입니다.7 이 셋을 모두 갖춘 에이전트는 주입된 콘텐츠에 조종당해 여러분의 비밀을 읽고 그것을 공격자에게 실어 보낼 수 있습니다. 유능한 에이전트 대부분이 기본적으로 이 셋을 다 갖추고 있으며, 그래서 취할 수 있는 수는 모델이 버텨 주기를 바라는 대신 각 능력을 방어하는 것입니다.
제 기기에서 돌아가는 에이전트를 어떻게 보호하나요?
모델이 통제하지 못하는 경계에서 시작하세요. 도구가 실행되기 전에 평가되는 권한 규칙과 훅을 사용하세요. 그러면 오염된 프롬프트가 여러분이 금지한 동작으로 말을 구슬려 들어갈 수 없습니다. 도구와 MCP 서버를 허용 목록으로 관리하고, 새 로컬 서버가 실행되기 전에 동의를 요구하며, 모든 자격 증명을 최소 권한으로 한정해 탈취된 토큰의 피해 범위를 작게 유지하세요. 사설 및 링크-로컬 IP 대역으로 향하는 아웃바운드 요청을 차단해 유출 경로를 막으세요. 그런 다음 큰 작업에 앞서 에이전트의 계획을 검토하세요. 읽기 경계를 뚫고 살아남은 주입이 여기서 붙잡힙니다.
출처
-
CVE-2026-13524, CircL Vulnerability-Lookup, vulnerability.circl.lu/vuln/cve-2026-13524 (2026년 6월 29일 공개). CherryHQ cherry-studio 1.9.0부터 1.9.6까지의 MCP OAuth 로컬 콜백 서버에 있는 부적절한 인가(CWE-285), 파일은
src/main/services/mcp/oauth/callback.ts. “인자 code의 조작이 부적절한 인가로 이어진다.” CVSS 3.1 기본 점수 5.6(중간), GHSA-9c5h-h4mj-p5ch, 수정안은 pull request #15388에서 제안됨. ↩↩ -
CVE-2026-13534, CircL Vulnerability-Lookup, vulnerability.circl.lu/vuln/cve-2026-13534 (2026년 6월 29일 공개). CherryHQ cherry-studio 1.9.7 버전까지의 CherryIN preload API에 있는 인가 우회(CWE-639), 함수는
src/main/services/memory/MemoryService.ts의sha256. CVSS 3.1 기본 점수 5.0(중간), GHSA-qwwm-4xhq-q4m4, 벤더는 v2에서 memory 제거를 계획하고 있다고 밝힘. ↩↩ -
CVE-2025-6514, GitHub Advisory Database, github.com/advisories/GHSA-6xpm-ggf7-wc3p (2025년 7월 9일 공개). “authorization_endpoint 응답 URL에서 온 조작된 입력으로 인해 신뢰할 수 없는 MCP 서버에 연결할 때 발생하는 OS 명령 주입”, mcp-remote 버전 >= 0.0.5, < 0.1.16; CVSS v3 기본 점수 9.6(심각); 0.1.16에서 패치됨. JFrog Security Research가 발견해 상세히 다뤘으며, 클라이언트 노출(Claude Desktop, Cursor, Windsurf)은 JFrog의 권고 게시글에 따름. ↩↩↩
-
CVE-2025-49596, Tenable Research, “How Tenable Research Discovered a Critical Remote Code Execution Vulnerability on Anthropic MCP Inspector,” tenable.com (2025년 7월 9일). 0.14.1 미만 버전의 Anthropic MCP Inspector에서 발생한 RCE로, 근본 원인은 Inspector 클라이언트와 프록시 사이의 인증 검사 누락이며, CORS와 DNS 리바인딩을 통해 악의적 웹사이트에서 악용 가능; CVSS 9.4(심각); 프록시 세션 토큰을 추가해 0.14.1에서 수정됨. ↩↩↩
-
“Security Best Practices,” Model Context Protocol specification, revision 2025-06-18, modelcontextprotocol.io/specification/2025-06-18/basic/security_best_practices. 혼동된 대리자 문제를 문서화하고, MCP 프록시 서버가 OAuth
state검증과 정확한 리다이렉트 URI 일치를 갖춘 “클라이언트별 동의를 반드시 구현하도록(MUST implement per-client consent)” 의무화함; 토큰 통과 전달(“MCP 서버는 해당 MCP 서버를 위해 명시적으로 발급되지 않은 토큰을 절대 수락해서는 안 된다”), SSRF, 세션 하이재킹, 로컬 서버 장악도 다룸. ↩↩↩↩ -
Simon Willison, “Prompt injection attacks against GPT-3,” simonwillison.net/2022/Sep/12/prompt-injection/ (2022년 9월 12일). 용어를 처음 만든 글: “이것을 가리키는 자명한 이름은 프롬프트 인젝션이어야 한다고 제안한다”, SQL 주입에 빗대며 신뢰할 수 있는 지시와 신뢰할 수 없는 입력의 결합을 지적함. ↩↩
-
Simon Willison, “The lethal trifecta for AI agents: private data, untrusted content, and external communication,” simonwillison.net/2025/Jun/16/the-lethal-trifecta/ (2025년 6월 16일). 결합될 때 에이전트를 악용 가능하게 만드는 세 가지 능력에 이름을 붙임: “여러분의 개인 데이터에 대한 접근”, “신뢰할 수 없는 콘텐츠에의 노출”, 그리고 “외부와 통신할 수 있는 능력”. ↩↩
-
“PHP 4.2.0 Release Announcement,” php.net/releases/4_2_0.php (2002년 4월). 보안 기본값 변경을 문서화함: “외부 변수(환경, HTTP 요청, 쿠키 또는 웹 서버에서 온)는 더 이상 기본적으로 전역 스코프에 등록되지 않는다.” 이는
register_globals를 기본으로 끄는 변경으로, PHP 3가 1998년에 기본 켜짐 동작을 내놓은 지 약 4년 만이었다. ↩ -
“CAIDA Analysis of Code-Red,” CAIDA, caida.org/archive/code-red. “14시간이 채 안 되어 35만 9천 대 이상의 컴퓨터가 Code-Red(CRv2) 웜에 감염되었다”, 2001년 7월 19일에 시작되어 Microsoft IIS의 버퍼 오버플로를 악용했으며, 정점에서는 “매분 2,000대 이상의 새로운 호스트가 감염되었다”. ↩
-
“The Spread of the Sapphire/Slammer Worm,” CAIDA, caida.org/archive/sapphire. 2003년 1월 25일 토요일 UTC 약 오전 5시 30분에 유포되어 Microsoft SQL Server의 버퍼 오버플로를 악용함; 이 웜은 376바이트 패킷을 만들어 “찾아낼 수 있는 취약 호스트 대부분을 10분 안에 감염시켰”으며, 당시로서는 역사상 가장 빠르게 확산된 웜이었다. ↩