The capability ceiling — how ACT sandboxes third-party tools

개요

ACT(Agent Construction Tools)는 AI 에이전트가 타사 도구를 안전하게 사용할 수 있도록 보장하기 위해 정책 레이어를 통해 격리 및 권한 제어를 강화하는 프레임워크를 제공합니다.

주요 내용

* 격리 및 권한 제어 계층 구조:
* wasmtime VM: JIT 컴파일, 선형 메모리 경계, 호스트 시스템 호출 직접 접근 불가 등 강력한 격리 환경을 제공합니다.
* WASI(WebAssembly System Interface): wasi:filesystem, wasi:http와 같은 기능 지향적 I/O 인터페이스를 제공하며, 호스트가 이를 허용하거나 제한된 쉘(shim)을 제공하거나 연결하지 않을 수 있습니다. 기능은 긍정적(positive-only)으로 부여되므로, 컴포넌트는 가진 기능만 사용할 수 있습니다.
* ACT 정책: 컴포넌트의 선언적 의도와 운영자의 런타임 부여 간의 교차점에서 작동하며, 양측이 서로의 권한을 넘어서지 않도록 보장합니다.

* 선언적 기능 제한 (Declaration Ceilings):
* 모든 ACT 컴포넌트는 manifest 파일(act.toml 등)을 통해 필요한 파일 시스템 접근, 아웃바운드 HTTP 요청 등을 명시적으로 선언해야 합니다.
* act-build pack은 빌드 시점에서 이러한 선언을 검증하고, act-build validate는 공급망의 어느 시점에서든 재파싱하여 유효성을 검사합니다.
* 선언이 누락되거나 비어 있는 경우, 컴포넌트는 호스트 로드 시점에 접근이 거부됩니다.

* 운영자 정책 (Operator Policy):
* 운영자는 act run 명령어의 플래그나 설정 파일(~/.config/act/config.toml)을 통해 컴포넌트에 부여할 권한을 명시합니다.
* 파일 시스템(fs-policy, fs-allow, fs-deny) 및 HTTP(http-policy, http-allow, http-deny)에 대한 정책을 설정할 수 있으며, 이는 운영자의 의도를 나타냅니다.

* 효과적인 정책 결정 (Intersection):
* 런타임 시, ACT 호스트는 컴포넌트의 선언과 운영자의 부여 간의 교집합(intersection)을 계산하여 최종적으로 적용될 정책을 결정합니다.
* 운영자가 광범위한 권한을 부여하더라도, 컴포넌트의 선언적 한계를 넘을 수는 없습니다. 반대로, 컴포넌트가 권한을 선언했더라도 운영자가 명시적으로 부여하지 않으면 사용할 수 없습니다.

* DNS 및 HTTP 정책 강화:
* ACT는 사용자 정의 DNS 리졸버를 통해 HTTP 요청 전에 IP 주소를 운영자의 --http-deny CIDR 규칙과 비교합니다.
* 연결 거부 대신 DnsError를 발생시켜 공격자가 탐지하기 어렵게 만듭니다.
* HTTP 리다이렉트의 각 홉(hop)마다 동일한 정책을 재검사하여 리다이렉트 스머글링(smuggling)과 같은 우회 공격을 방지합니다.

* 디렉토리 탐색(Ancestor Traversal) 처리:
* WASI의 경로 해석 메커니즘을 고려하여, 특정 파일에 대한 allow 항목은 해당 파일로 가는 중간 디렉토리(ancestors)의 접근도 암묵적으로 허용합니다. 이는 사용자가 모든 상위 디렉토리를 명시적으로 허용해야 했던 이전 방식의 불편함을 해소합니다.

시사점

ACT의 다층적 정책 적용 모델은 AI 에이전트가 타사 도구를 사용할 때 발생할 수 있는 보안 위험을 최소화하며, 빌드 시점의 선언과 런타임 시점의 부여를 결합하여 명확하고 감사 가능한 권한 관리 파이프라인을 제공합니다. 이는 신뢰할 수 없는 소스의 도구를 안전하게 사용할 수 있는 환경을 구축하는 데 기여합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions