피드로 돌아가기
perso — a WebAssembly policy engine that decides what your MCP agent is allowed to do
Dev.toDev.to
Security

WASM 기반 O(1) 정책 엔진으로 MCP 에이전트 권한 제어 최적화

perso — a WebAssembly policy engine that decides what your MCP agent is allowed to do

Rahadian Bayu2026년 6월 21일5advanced

Context

MCP(Model Context Protocol) 표준 내 도구 호출 권한 제어 메커니즘 부재로 인한 보안 취약점 발생. 기존의 개별 도구 내 인증 로직 분산 또는 단순 Role 기반 체크 방식은 세밀한 인자(Arguments) 검증이 불가능하여 확장성 및 보안성 한계 노출.

Technical Solution

  • Rust 기반의 정책 엔진을 WebAssembly(WASM)로 컴파일하여 런타임 독립적인 이식성 확보
  • JSON 형태의 정책 정의를 로드 시점에 Flat Map으로 사전 확장하여 평가 시간 복잡도를 O(1)로 최적화
  • LLM과 분리된 Host 레벨에서 Session/JWT를 통해 Role Token을 관리함으로써 프롬프트 인젝션을 통한 권한 탈취 차단
  • NumericCheck, FieldEquals 등 속성 기반 접근 제어(ABAC)를 통해 도구 호출 인자값까지 정밀하게 검증하는 조건부 허용 구조 설계
  • Default Deny 원칙을 적용하여 명시적으로 허용되지 않은 모든 요청을 기본 차단하는 Fail-closed 보안 모델 구현
  • C-style ABI(alloc, dealloc, init, evaluate)를 통한 WASM 메모리 경계 데이터 전송 및 SDK 기반의 비동기 API 래핑

1. LLM의 도구 호출 권한을 모델 수준이 아닌 실행 Host 레벨에서 강제하는지 확인

2. 단순 RBAC를 넘어 인자값 검증이 가능한 ABAC 모델 도입 검토

3. 정책 엔진의 성능 병목을 줄이기 위해 런타임 스캔 대신 로드 시점의 데이터 구조 최적화 적용

4. 보안 사고 분석을 위해 결정 과정에 대한 구조화된 Audit Logging 체계 구축

원문 읽기