WebMCP 보안: 웹사이트를 에이전트 친화적으로 만드는 것은 에이전트 취약성을 만드는 것이기도 하다
요약
WebMCP 도입으로 웹사이트가 에이전트용 도구를 직접 제공하게 됨에 따라 새로운 보안 위협이 등장했습니다. Chrome 보안 가이드라인은 악성 매니페스트와 오염된 출력을 통한 두 가지 주요 공격 벡터를 경고하며, 웹사이트 측의 보안 책임을 강조합니다.
핵심 포인트
- WebMCP는 웹사이트를 에이전트 친화적으로 만들지만 공격 표면을 넓힘
- 악성 매니페스트: 도구 설명에 숨겨진 지침으로 에이전트 제어 탈취
- 오염된 출력: 사용자 생성 콘텐츠를 통해 에이전트에 명령 주입
- LLM의 특성상 데이터와 명령을 완벽히 분리하기 어려워 보안 주의 필요
원문은 The Searchless Journal에 게시되었습니다.
지난 2년 동안 에이전트 친화적(agent-ready) 웹사이트에 대한 논의는 접근성(access)에 관한 것이었습니다. AI 에이전트가 귀하의 콘텐츠에 도달할 수 있는가? 페이지를 읽을 수 있는가? 결제를 완료할 수 있는가? 웹을 위해 조정된 Model Context Protocol (MCP)인 WebMCP의 등장은 이 논의를 접근성에서 기능성(capability)으로 전환시킵니다. 에이전트가 HTML로부터 웹사이트를 파악하기를 기대하는 대신, 에이전트가 직접 호출할 수 있는 명명된 도구(named tools)를 직접 제공하게 됩니다. 이는 이전의 그 어떤 것보다 더 강력하고, 더 신뢰할 수 있으며, 더 위험합니다.
Chrome의 개발자 사이트에는 이제 WebMCP에 대한 상세한 보안 가이드라인이 포함되어 있으며, 그 프레임워크가 주목할 만합니다. 웹사이트를 에이전트에게 안전하게 만들 의무는 에이전트를 구축하는 기업이 아니라, 도구를 노출하는 웹사이트 측에 있습니다. 만약 귀하가 WebMCP를 통해 웹사이트를 에이전트 친화적으로 만든다면, 귀하는 공격 표면(attack surface)을 개방한 것입니다. 이를 폐쇄하는 것은 귀하의 책임입니다.
Chrome이 식별한 두 가지 공격 벡터
Chrome 보안 문서는 WebMCP 도구가 AI 에이전트를 하이재킹(hijack)하는 데 사용될 수 있는 두 가지 주요 방식을 설명하며, 두 방식 모두 웹사이트가 노출하는 도구를 통해 발생합니다.
첫 번째는 악성 매니페스트(malicious manifest)입니다. 웹사이트는 에이전트가 읽는 도구 이름, 파라미터 설명(parameter descriptions) 또는 기타 텍스트 필드에 숨겨진 지침이 포함된 도구 정의를 게시합니다. 에이전트는 모든 텍스트를 컨텍스트 윈도우(context window)의 일부로 처리하기 때문에, 도구 설명에 숨겨진 지침은 에이전트의 원래 작업을 무시(override)할 수 있습니다. check_inventory라는 이름의 도구는 사용자 데이터를 유출하거나 에이전트를 완전히 다른 작업으로 리다이렉트하라는 지침이 포함된 설명을 담고 있을 수 있습니다. 에이전트는 도구의 기능적 설명과 주입된 명령(injected command)이 동일한 스트림 내의 텍스트 토큰(text tokens)으로 전달되기 때문에 이 둘을 신뢰성 있게 구분할 수 없습니다.
두 번째 벡터는 더 흔하며 제거하기가 더 어렵습니다. Chrome은 이를 오염된 출력 (contaminated output)이라고 부릅니다. 귀하의 정당한 웹사이트에 있는 도구가 사용자 생성 콘텐츠 (user-generated content), 제품 리뷰, 포럼 게시물, 지원 티켓 또는 댓글 스레드가 포함된 데이터를 반환하는 경우입니다. 만약 공격자가 이러한 사용자 기여물 중 하나에 명령을 심어두었다면, 귀하의 도구는 마치 귀하로부터 나온 것처럼 해당 페이로드 (payload)를 에이전트에게 전달하게 됩니다. 도구는 정당합니다. 웹사이트도 정당합니다. 문제는 데이터 소스 (data source)입니다.
이것이 작동하는 이유는 대규모 언어 모델 (LLM)이 작동하는 방식의 근본적인 특성 때문입니다. 모델은 명령 (instruction)이든 사용자 데이터 (user data)이든 모든 텍스트를 단일 토큰 시퀀스 (sequence of tokens)로 취급합니다. 모델은 귀하가 데이터로 의도한 부분과 공격자가 명령으로 의도한 부분을 신뢰성 있게 분리할 수 없습니다. Chrome의 가이드라인은 이를 직접적으로 명시합니다: LLM의 확률적 특성 (probabilistic nature) 때문에 모델 자체 내부에서 안전성을 보장하는 것은 불가능합니다. 이것이 프롬프트 인젝션 (prompt injection) 문제이며, 모델 내부에는 깔끔한 해결책이 없습니다. WebMCP는 귀하가 의도적으로 게시한 도구들을 통해 이를 깔끔하고 구조화된 전달 경로로 제공합니다.
Chrome이 웹사이트 소유자에게 요구하는 사항
Chrome 가이드라인은 도구를 배포하는 사람을 위해 작성되었으며, 그 처방은 구체적입니다.
첫째, 신뢰하는 오리진 (origins)에만 도구를 노출하십시오. exposedTo 어노테이션 (annotation)을 사용하면 특정 에이전트 플랫폼으로 도구를 제한할 수 있습니다. 사용자 결제를 처리하는 도구가 귀하의 사이트를 방문하는 모든 에이전트에게 제공되어서는 안 됩니다. 여기에는 최소 권한 원칙 (principle of least privilege)이 적용됩니다. 필요한 최소한의 도구 세트만 노출하고, 각 도구를 그것이 필요한 가장 작은 오리진 세트로 제한하십시오.
둘째, 사용자 생성 콘텐츠 (user-generated content)를 반환하는 도구에 표시를 하십시오. untrustedContentHint 어노테이션 (annotation)은 도구의 출력을 신뢰할 수 없는 것으로 명시적으로 라벨링하여, 에이전트에게 해당 데이터에 대해 더욱 높은 수준의 정밀 조사가 필요함을 신호합니다. 만약 도구가 제품 리뷰, 포럼 게시물, 또는 외부에서 가져온 데이터를 반환한다면 이 어노테이션이 반드시 존재해야 합니다. 이것이 프롬프트 인젝션 (prompt injection) 문제를 해결해주지는 않지만, 에이전트의 안전 계층 (safety layer)이 추가적인 필터링을 적용할 기회를 제공합니다.
셋째, 읽기 전용 (read-only) 도구에 표시를 하십시오. readOnlyHint 어노테이션은 도구가 상태를 변경하지 않음을 나타내며, 이를 통해 에이전트가 언제 사용자 확인을 요청할지에 대해 더 나은 결정을 내릴 수 있도록 합니다. 제품 정보를 읽는 도구는 자유롭게 호출될 수 있습니다. 반면 주문을 넣는 도구는 매번 확인을 요구해야 합니다. 이러한 구분은 에이전트 기반 커머스 (agentic commerce)에서 매우 중요한데, 여기서 탐색 (browsing)과 구매 (buying)의 차이는 위험이 없는 상태와 완전한 위험 상태의 차이이기 때문입니다.
에이전트 준비 완료 (Agent-Ready) 대 에이전트 안전 (Agent-Safe)의 구분
지난 1년 동안 GEO (Generative Engine Optimization) 및 에이전트 준비 완료 (agent-readiness) 커뮤니티는 웹사이트를 AI 에이전트가 읽기 쉽게 만드는 데 집중해 왔습니다. 구조화된 데이터 (structured data), llms.txt 파일, 시맨틱 HTML (semantic HTML), 그리고 명확한 콘텐츠 계층 구조는 모두 이 목표를 위해 존재합니다. WebMCP는 가독성 (legibility) 그 너머의 다음 단계입니다. 이는 에이전트가 당신이 게시한 내용을 읽는 수동적인 가독성 단계에서, 정의된 인터페이스를 통해 당신의 사이트에서 무언가를 수행할 수 있는 능동적인 역량 (active capability) 단계로 이동하는 것입니다.
바로 이 지점에서 에이전트에게 읽기 쉬운 것과 에이전트에게 안전한 것이 더 이상 동일한 속성이 아니게 됩니다. 웹사이트는 완벽하게 읽기 쉬우면서도 완전히 안전하지 않을 수 있습니다. 풍부한 구조화된 데이터를 갖춘 제품 페이지는 읽기 쉽습니다. 제품 검색 쿼리를 수락하고 검증되지 않은 사용자 리뷰가 포함된 결과를 반환하는 WebMCP 도구는 읽기 쉽지만 안전하지 않습니다. 전자는 정보를 제공할 뿐이지만, 후자는 인젝션 (injection)을 위한 채널을 생성합니다.
이러한 차이가 중요한 이유는 에이전트 친화적 인프라 (agent-ready infrastructure)를 향한 움직임이 가속화되고 있기 때문입니다. 이커머스 (E-commerce) 플랫폼들은 WebMCP 엔드포인트 (endpoints)를 추가하고 있습니다. CMS 제공업체들은 에이전트 통합 레이어 (integration layers)를 구축하고 있습니다. 여행 사이트, 금융 서비스, 그리고 헬스케어 플랫폼 모두 도구 노출 (tool exposure)을 탐색하고 있습니다. 이러한 각각의 추가 사항은 공격 표면 (attack surface)을 확장하며, 보안 고려 사항은 종종 기능성보다 부차적인 것으로 취급됩니다.
사용자 생성 콘텐츠 (User-Generated Content) 문제
오염된 출력 벡터 (contaminated output vector)는 특별한 주의를 기울여야 합니다. 왜냐하면 이것이 대부분의 웹사이트가 실제로 마주하게 될 벡터이기 때문입니다. 사용자 기여, 리뷰, 댓글, 포럼 게시물, 지원 티켓 또는 기타 형태의 공개 텍스트를 허용하는 모든 사이트는 잠재적인 인젝션 벡터 (injection vector)가 됩니다. 정당한 목적으로 노출한 도구가 다른 사람이 작성한 텍스트를 반환하게 되는데, 그 텍스트에는 에이전트를 하이재킹 (hijack)하도록 설계된 지침이 포함될 수 있습니다.
방어책은 사용자 생성 콘텐츠 (user-generated content)를 제거하는 것이 아닙니다. 도구가 반환하는 내용을 정화 (sanitize)하는 것입니다. 이는 도구 출력을 사용자 대상 인터페이스에 적용하는 것과 동일한 모더레이션 파이프라인 (moderation pipelines)을 통해 필터링하는 것을 의미합니다. 또한 지침으로 해석될 수 있는 텍스트를 제거하거나 인코딩 (encoding)하는 것을 의미합니다. 즉, 에이전트가 출력을 적절한 의심을 가지고 처리해야 함을 알 수 있도록 untrustedContentHint 어노테이션 (annotation)을 사용하는 것을 의미합니다.
대량의 사용자 생성 콘텐츠를 보유한 웹사이트의 경우, 이는 상당한 엔지니어링 과제입니다. 리뷰 플랫폼, 고객 리뷰가 있는 이커머스 사이트, 커뮤니티 포럼, 그리고 소셜 플랫폼 모두 대규모 환경에서 동일한 문제에 직면해 있습니다. 이를 해결하지 않을 경우 발생하는 비용은 귀하의 사이트가 타인의 에이전트가 하이재킹되는 벡터가 된다는 점입니다.
에이전틱 웹 (Agentic Web)에 미치는 영향
에이전틱 웹 (Agentic Web)은 에이전트가 표준화된 프로토콜을 통해 임의의 웹사이트와 안전하게 상호작용할 수 있다는 가정하에 구축되고 있습니다. WebMCP는 그러한 프로토콜 중 하나이며, 점점 더 많은 관심을 받고 있습니다. Chrome이 설명하는 보안 모델은 그 부담을 웹사이트 소유자에게 지우는데, 이는 올바른 아키텍처적 결정입니다. 웹사이트는 자신의 도구(tools)가 무엇을 하는지, 어떤 데이터를 반환하는지, 그리고 어떤 위험을 초래하는지를 알고 있습니다. 하지만 처음 방문하는 에이전트는 이를 알지 못합니다.
하지만 이는 또한 에이전트 준비성 (agent-readiness)이 더 이상 단순한 GEO (Generative Engine Optimization)의 문제가 아니라는 것을 의미합니다. 이는 보안 문제 (security concern)입니다. WebMCP 엔드포인트를 구축하는 팀은 개발 프로세스에 보안 검토를 포함해야 합니다. 노출되는 도구들은 위협 모델 (threat models)이 필요합니다. 각 도구의 출력값은 인젝션 위험 (injection risk)에 대해 분석되어야 합니다. 이는 API 개발을 위한 표준 보안 관행이지만, 이 분야가 너무 새롭기 때문에 에이전트 도구 개발에 있어서는 아직 표준이 아닙니다.
이 과정을 초기에 올바르게 수행하는 웹사이트들은 에이전틱 커머스 (agentic commerce)를 위한 신뢰할 수 있는 목적지가 될 것입니다. 그렇지 못한 곳들은 경계해야 할 사례가 될 것입니다. 그 차이는 기술의 문제가 아닙니다. 처음 노출하는 도구부터 에이전트의 안전 (agent safety)을 에이전트의 접근 권한 (agent access)과 동일한 수준의 진지함으로 다루느냐의 문제입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기