TL;DR

  • Drop은 익숙한 Linux 작업 환경을 유지하면서 프로그램과 코딩 에이전트를 격리하는 루트리스 샌드박스이며, OS 수준 권한 통제로 실제 홈 디렉터리와 로컬 서비스를 보호함.
  • 코딩 에이전트를 --dangerously-skip-permissions 옵션으로 실행해도 rm -rf ~, ~/.ssh 접근, 로컬 서비스 연결을 샌드박스 안에서 차단함.
  • PyPI와 npm 등에서 설치한 서드파티 프로그램을 별도 환경에 가둬 악성 프로그램이나 공급망 공격의 피해 범위를 제한함.
  • 기존 Linux 배포판과 설치된 프로그램을 그대로 사용하고, TOML 설정으로 노출할 파일·디렉터리·로컬 네트워크 서비스를 지정함.
  • 기본 격리에 더해 선택적으로 gVisor 사용자 공간 커널을 사용하며, 호스트 커널 직접 접근을 막아 커널 취약점 악용 가능성을 크게 줄임.

사용 사례

코딩 에이전트 격리

  • 코딩 에이전트를 --dangerously-skip-permissions 옵션으로 실행하고, Drop이 운영체제 수준에서 권한을 강제하도록 구성함.
  • 에이전트가 환각으로 rm -rf ~를 실행해도 실제 홈 디렉터리에는 영향을 주지 않음.
  • 프롬프트 인젝션이 ~/.ssh를 대상으로 하더라도 해당 파일을 찾지 못함.
  • 로컬호스트에서 실행 중인 서비스로의 연결을 거부함.

서드파티 프로그램 격리

  • PyPI, npm 또는 기타 출처에서 프로그램을 설치하면서 사용자 계정 전체에 대한 접근 권한은 부여하지 않음.
  • 설치한 프로그램이 악성 프로그램이거나 공급망 공격으로 손상된 경우에도 피해를 샌드박스 내부로 제한함.

작동 방식

일회용 격리 환경

  • Python의 virtualenv에서 영감을 얻은 방식으로, 쉽게 생성하고 진입할 수 있는 일회용 환경을 제공함.
  • 각 환경이 자체 홈 디렉터리를 가지며 기존 홈 디렉터리는 숨김 처리됨.

기존 배포판 사용

  • Docker나 Podman과 달리 기존 Linux 배포판을 사용하므로 별도의 컨테이너 설정 작업이 필요하지 않음.
  • 이미 설치한 모든 프로그램을 샌드박스 안에서 사용할 수 있음.

유연한 설정 언어

  • 고수준 TOML 설정으로 샌드박스에 노출할 파일, 디렉터리, 로컬 네트워크 서비스를 지정함.
  • 기본적으로 모든 Drop 환경이 공통 기본 설정을 공유하므로, Drop을 한 번 구성한 뒤 별도 설정 작업 없이 새 환경을 생성할 수 있음.

루트리스 실행

  • Drop은 루트 권한 없이 실행됨.
  • Linux 사용자 네임스페이스 안에서 자체 프로세스, 마운트, 네트워크, IPC, cgroup 네임스페이스와 함께 실행됨.
  • 샌드박스 프로그램을 실행하기 전에 사용자 네임스페이스의 모든 기능을 제거함.
  • 프로그램이 사용자 네임스페이스 안에서 바인드 마운트와 같은 권한 작업을 수행할 수 없도록 제한함.

gVisor 통합

  • 선택 사항으로 gVisor 사용자 공간 커널에서 프로그램 실행을 지원함.
  • 추가 격리 계층을 통해 프로그램의 호스트 커널 직접 접근을 차단함.
  • 그 결과 커널 취약점 악용 가능성을 크게 줄임.