pile·
보안·vercel-blogVercel Blog·

네트워크 경계 없는 샌드박스는 반쪽짜리다

신뢰할 수 없는 코드를 실행하는 샌드박스 환경에서 계산 격리(compute isolation)만으로는 충분하지 않다. Vercel Sandbox 팀은 네트워크 경계 제어가 완전한 보안 샌드박스의 필수 요소라고 주장하며, 마이크로VM 기반 샌드박스에 이그레스 방화벽을 어떻게 구현했는지 공개한다.

핵심 포인트
  • 샌드박스 내부의 악성 코드가 아웃바운드 네트워크를 통해 데이터를 외부로 탈취할 수 있어 계산 격리만으로는 보안을 보장하기 어렵다.
  • Vercel Sandbox 방화벽은 마이크로VM 외부 호스트에서 동작하며, Linux 네트워킹을 이용해 아웃바운드 TCP 연결과 DNS 쿼리를 투명하게 리다이렉트한다.
  • TLS 핸드셰이크에서 SNI(Server Name Indication)를 추출해 도메인 기반 정책을 검증하고, 선택적 TLS 종료로 헤더 주입도 지원한다.
  • 자격증명(API 키 등)은 마이크로VM 내부에 진입하지 않으며, 샌드박스별 고유 CA를 생성해 호스트에서 프록시 방식으로 주입한다.
  • TypeScript SDK로 networkPolicy를 런타임에 동적으로 변경할 수 있어 워크플로우 단계별로 최소 권한을 적용할 수 있다.
상세 정리
  • 문제 정의: AI 에이전트나 사용자 코드를 샌드박스에서 실행할 때, 계산 격리만으로는 아웃바운드 네트워크를 통한 데이터 탈취나 시크릿 유출을 막을 수 없다.
  • 방화벽 위치: 마이크로VM 외부 호스트 계층에서 동작한다. VM 내부 코드가 방화벽을 우회하거나 끌 수 없다.
  • 트래픽 리다이렉트: Linux 네트워킹 레이어를 통해 모든 아웃바운드 TCP 연결과 DNS 쿼리를 투명하게 방화벽 프록시로 라우팅한다.
  • TLS 검사: TLS 핸드셰이크 중 SNI를 추출해 정책을 검증한다. 도메인 기반 허용/차단, CIDR 필터링, 선택적 TLS 종료를 지원한다.
  • 자격증명 주입: API 키나 토큰을 VM 내부에 넣지 않는다. 샌드박스별 고유 CA를 생성하고, 허용된 도메인 요청에만 호스트 프록시가 Authorization 헤더를 주입한다.
  • SDK 사용법: networkPolicy.allow에 도메인과 헤더 트랜스폼을 정의하면 SDK가 방화벽에 전달한다. 한 줄로 특정 도메인에만 자격증명을 전달하는 정책을 구성할 수 있다.
  • 동적 정책 변경: sandbox.update({ networkPolicy: 'deny-all' })처럼 런타임 중 정책 변경이 가능하다. 파일 다운로드 후 처리 단계에서 외부 접근을 차단하는 식의 수명주기 기반 최소 권한 적용이 가능하다.
  • 정책 프록시 기능: 페이로드 민감정보 제거, 사용자별/샌드박스별 권한 부여, 공급망 스캔, 컴플라이언스 감사 로깅 등 조직 정책을 프로그래밍 방식으로 강제할 수 있다.
  • 설계 원칙 4가지: 명시적 권한(어디에 어떤 자격증명으로 접근하는지 정의), 기본 차단(허용 외 모두 거부), 수명주기 기반 연결(단계별 권한 변경), 최소 권한(필요한 권한만 부여).
왜 읽나AI 에이전트나 외부 코드를 샌드박스에서 실행하는 인프라/보안 엔지니어에게 네트워크 격리 설계의 실전 구현 패턴과 원칙을 보여주는 글이다.
vercel-blog
Vercel Blog 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 보안·gitlab-engGitLab Blog·

    Serena MCP 에이전트의 치명적 원격 코드 실행 취약점 분석

    GitLab 보안팀이 AI 코딩 에이전트 Serena(월 PyPI 다운로드 13.6만 건)에서 치명적 원격 코드 실행 취약점을 발견했다. Jinja2 비샌드박스 환경과 신뢰 모델의 미검사 경로가 결합해 개발자가 악의적 저장소를 열기만 해도 코드가 실행된다. serena-agent 1.7.0에서 SandboxedEnvironment 교체로 수정 완료됐다.

    요약 이어보기
    #mcp#security#rce+2