Drop - gVisor를 지원하는 루트 권한 없는 Linux 샌드박스

3 days ago 13

Drop은 익숙한 작업 환경을 유지하면서 프로그램과 코딩 에이전트를 격리하는 Linux 샌드박스로, 기존 배포판과 설치된 프로그램을 그대로 사용함 환경마다 별도의 홈 디렉터리를 제공하고 원래 홈은 숨김 처리해, 에이전트의 잘못된 삭제 명령이나 비밀 정보 접근으로부터 실제 홈을 보호함 TOML 설정으로 샌드박스에 노출할 파일, 디렉터리, 로컬 네트워크 서비스를 지정하며, 공통 기본 설정을 여러 환경에서 공유함 루트 권한 없이 Linux 네임스페이스에서 실행되며, 샌드박스 프로그램을 시작하기 전에 사용자 네임스페이스의 모든 권한(capability)을 제거함 선택적으로 gVisor 사용자 공간 커널을 사용해 호스트 커널에 대한 직접 접근을 막고, 커널 취약점 악용 가능성을 크게 줄임 코딩 에이전트와 외부 프로그램 격리 코딩 에이전트를 --dangerously-skip-permissions 옵션으로 실행하더라도 Drop이 운영체제 수준에서 권한을 강제함 환각으로 실행한 rm -rf ~가 실제 홈 디렉터리를 건드리지 않음 ~/.ssh를 노리는 프롬프트 인젝션은 해당 정보를 찾지 못하고, localhost에서 실행 중인 서비스로의 연결은 거부됨 외부 프로그램을 PyPI, npm 등에서 설치할 때 사용자 계정 전체에 대한 접근 권한을 주지 않을 수 있음 악성 프로그램이거나 공급망 공격으로 변조된 프로그램이어도 피해를 샌드박스 내부로 제한함 실행 예시에서는 프로세스 격리, 설정의 읽기 전용 노출, 비밀 정보 숨김을 확인할 수 있음 별도 홈 디렉터리는 쓰기가 가능하고 내용이 유지됨 환경 구성과 격리 방식 Python의 virtualenv에서 영감을 받아 쉽게 만들고 진입하고 폐기할 수 있는 환경을 제공하며, 각 환경은 원래 홈이 숨겨진 상태에서 자체 홈 디렉터리를 사용함 Docker/Podman과 달리 기존 배포판을 사용하므로 컨테이너 설정 작업이 필요 없고, 이미 설치한 모든 프로그램을 샌드박스에서 사용할 수 있음 고수준 TOML 설정으로 노출할 파일, 디렉터리, 로컬 네트워크 서비스를 제어함 기본적으로 모든 Drop 환경이 공통 기본 설정을 공유하므로, 한 번 설정한 뒤 새 환경을 추가 설정 없이 만들 수 있음 Linux 사용자 네임스페이스 안에서 루트 권한 없이 동작하며, 별도의 프로세스, 마운트, 네트워크, IPC, cgroup 네임스페이스를 사용함 프로그램 실행 전에 사용자 네임스페이스의 모든 권한(capabilit...

Read Entire Article