게시일: 2026년 6월 9일
웹 모델 컨텍스트 프로토콜 (WebMCP)을 사용하여 확장 프로그램으로 구동되는 에이전트를 비롯해 브라우저 내에서 실행되는 AI 에이전트에 구조화된 도구를 빌드하고 노출할 수 있습니다. 에이전트는 대규모 언어 모델 (LLM), 규칙, 메모리, 도구를 사용하여 사용자를 대신하여 작업을 실행합니다.
LLM은 모든 텍스트, 지침, 사용자 데이터를 단일 토큰 시퀀스로 취급하므로 공격자가 악성 지침을 포함하는 간접 프롬프트 인젝션에 취약합니다. Google팀은 악의적인 행위자로부터 웹사이트와 사용자를 보호하는 데 도움이 되는 도구 보안에 관한 문서를 작성했습니다.
일부 모델에는 프롬프트 인젝션을 해결하는 레이어가 있지만 대규모 언어 모델 (LLM) 내에서 안전을 보장할 수는 없습니다. 모델은 기본적으로 확률적입니다. 최첨단 LLM을 사용하는 에이전트 시스템에 대해 반복 가능한 프롬프트 인젝션 공격이 있었고 웹에서의 공격이 증가하고 있다는 점을 기억해야 합니다.
이러한 우려를 해결하기 위해 WebMCP로 도구를 빌드하는 사용자를 위한 보안에 관한 예비 안내를 제공했습니다.
주석 힌트 사용
도구를 빌드할 때 추가해야 하는 몇 가지 힌트가 있습니다.
- 적절한 경우
untrustedContentHint사용 도구가 사용자 제작 콘텐츠 (UGC) 또는 외부 소스 데이터를 반환하는 경우untrustedContentHint를 도구에 추가하는 것이 좋습니다. 이 필드는 페이로드를 신뢰할 수 없는 것으로 명시적으로 라벨링하여 사이트의 무결성을 보호하는 동시에 이 데이터에 대한 면밀한 조사가 필요하다는 신호를 에이전트에 제공합니다. - 상태를 변경하지 않는 도구에서
readOnlyHint사용 이를 통해 에이전트는 사용자 확인을 요청할 시기에 관해 더 나은 결정을 내릴 수 있습니다.
도구를 신중하게 노출
WebMCP document.modelContext.registerTool API는 에이전트에게만 도구의 기능을 노출합니다. 기본적으로 다른 웹사이트나 교차 출처 iframe은 도구를 관찰하거나 상호작용할 수 없습니다.
registerTool의 exposedTo 옵션을 사용하여 특정 보안 출처 배열에 도구에 대한 액세스 권한을 제공할 수 있습니다. 이렇게 하면 사이트에 삽입된 경우와 사이트가 해당 출처에 삽입된 경우 해당 출처에 도구가 노출됩니다.
// https://partner.org
document.modelContext.registerTool({
name: 'my_shared_tool',
description: 'Shared across origins',
// ...
}, {
exposedTo: ['https://trusted.com', 'https://example.com']
});
신뢰할 수 있는 출처에만 도구를 노출하세요. 이는 도구가 사용자 데이터를 관리하거나 사용자에게 영향을 미치는 경우에 특히 중요합니다.
getFavoriteProducts와 같은 읽기 전용 도구는 사용자에 관한 정보를 표시할 수 있습니다. 이러한 도구는 이 데이터를 직접 공유할 웹사이트에만 노출해야 합니다.- 읽기 및 쓰기 액세스 권한이 있는 도구는 사용자를 대신하여 작업을 실행합니다. 이러한 도구는 사용자를 대신하여 작업할 때 신뢰할 수 있다고 판단되는 출처에만 노출해야 합니다. 예를 들어
postComment를trustedExample.com에 노출하고 싶지만evilExample.com에는 노출하고 싶지 않을 수 있습니다.
문자 예산 설정
에이전트 가이드라인을 위반하지 않으려면 간결한 도구 설명과 출력을 작성하세요. 더 나은 결과를 위해 다음 글자 수 제한을 사용하는 것이 좋습니다.
- 도구 설명당 500자(영문 기준)
- 매개변수 설명당 150자(영문 기준)
- 도구 이름 및 매개변수 이름당 30자
- 개별 도구 출력당 1,500자(영문 기준) 제한
에이전트마다 차이가 있을 수 있으므로 사용자 피드백을 바탕으로 문자 예산을 조정하는 것이 좋습니다.
다음 단계
Google은 에이전트형 웹을 위한 안전한 인프라를 구축하기 위해 계속해서 연구하고 노력하고 있습니다. 예를 들어 당사자 간에 동의 관리에 관한 논의가 진행 중이며 사양 초안에는 도구 실행 시 비동기적으로 사용자 입력을 요청하는 requestUserInteraction()이 포함되어 있습니다.
애플리케이션에서 WebMCP를 어떻게 구현할 계획인가요? 다른 우려사항(보안 등)이 있나요? WebMCP 오리진 트라이얼에 가입하는 경우 경험을 알려주세요.
- GitHub의 WebMCP 설명에서 기존 문제에 댓글을 달거나 새 문제를 열어 API 모양에 관한 의견을 공유하세요.
- Chrome 구현에 관한 의견이 있으면 Chromium 버그를 신고하세요.
- 사전 체험 프로그램에 참여하여 새로운 API를 미리 살펴보고 메일링 리스트에 액세스하세요.
- Chrome 상태에서 Chrome 구현을 검토하세요.
에이전트를 빌드하는 경우 WebMCP의 에이전트 보안 고려사항을 읽어보는 것이 좋습니다.