Sandboxing Patterns for Local AI Agents With Filesystem Access

개요

로컬 AI 에이전트에 파일시스템 접근 권한을 부여할 때 발생할 수 있는 위험을 관리하기 위한 5가지 샌드박싱 패턴을 제시합니다.

주요 내용

* 위협 모델: 클라우드 에이전트에서 주로 걱정하는 프롬프트 주입이나 데이터 유출 외에도, 로컬 에이전트의 가장 큰 위험은 모델의 오해로 인해 잘못된 작업이 수행되는 것입니다. 이를 '자신감 있는 바보스러움'으로 정의하고, 악의적인 의도보다 우선하여 방어 계획을 세워야 합니다.
* 패턴 1: 루트 디렉토리 허용 목록(allowlist) 사용, 경로 차단 목록(denylist) 지양: 에이전트가 접근할 수 있는 명시적인 루트 디렉토리 목록을 제공하고, 그 외 모든 경로는 기본적으로 거부합니다. 심볼릭 링크(symlink)는 의도치 않은 곳을 가리킬 수 있으므로 주의해야 합니다.
* 패턴 2: 점(dot) 파일 및 비밀 정보 기본 차단: 허용된 프로젝트 디렉토리 내에서도 .env, .git 등과 같이 민감한 파일은 명시적으로 허용하지 않는 한 읽기 및 쓰기를 차단합니다.
* 패턴 3: 변경 내용 미리 보기(dry-run) 모드: 파일 쓰기 작업 전에 실행될 변경 사항을 unified diff 형식으로 출력하여 에이전트의 의도를 확인하고, 이를 통해 의도치 않은 수정을 방지합니다.
* 패턴 4: 읽기 전용(read-only) 바인드 마운트: 에이전트가 참조 자료(dependency sources, reference repo 등)를 읽기만 해야 할 경우, 커널 수준에서 읽기 전용으로 마운트하여 파일시스템 접근을 제어합니다. 컨테이너 환경을 사용하면 추가적인 프로세스 격리 효과를 얻을 수 있습니다.
* 패턴 5: 위험 반경(blast radius) 체크리스트: 각 파일시스템 도구를 활성화하기 전에 '최악의 단일 호출', '복구 가능성', '읽을 수 있는 정보의 민감성', '이후 호출에 대한 영향', '가장 좁은 범위' 등에 대한 5가지 질문을 작성하여 평가합니다.
* 정책 적용 래퍼(wrapper): 모든 파일시스템 도구 접근 전에 정의된 정책을 중앙에서 강제하는 래퍼 함수를 구현합니다. 이 래퍼는 루트 디렉토리 검사, 차단 패턴 테스트, 심볼릭 링크 처리 등을 수행하며, 에이전트에게 거부 이유를 피드백하여 모델의 학습을 돕습니다.

시사점

로컬 AI 에이전트가 파일시스템에 접근할 때 발생할 수 있는 잠재적 위험을 효과적으로 완화하기 위해, 명시적인 허용 목록, 민감 정보 차단, 변경 사항 사전 확인, 읽기 전용 마운트, 그리고 체계적인 위험 평가를 포함하는 다층적인 샌드박싱 전략이 필수적입니다. 이러한 접근 방식은 에이전트의 신뢰성을 높이고 예상치 못한 오류로 인한 피해를 최소화하는 데 기여합니다.

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

댓글

GitHub Discussions