AI 에이전트가 터미널 명령을 대신 실행하는 시대, 그 울타리에 실제 틈이 생겼을 때 우리는 어떻게 알 수 있을까. Claude Code 샌드박스 취약점 사례는 모델 성능보다 실행 권한과 패치 투명성이 왜 더 중요한지를 보여준다.
1. 왜 지금 이걸 봐야 하나
AI 코딩 에이전트를 둘러싼 논의는 대부분 "얼마나 잘 짜느냐"에 집중된다. 하지만 진짜 리스크는 다른 곳에 있다. 그 코드가 어디서, 어떤 권한으로 실행되느냐다.
The Register 보도에 따르면 Claude Code의 샌드박스에 실제 취약점이 존재했고, Anthropic은 이를 패치했다. 문제는 패치 이후 CVE 발급도 없었고 사용자 대상 보안 공지도 없었다는 점이다. 보안 연구자가 제보하고, Anthropic이 위험한 구멍임을 인정했으며, Claude 자신도 해당 취약점의 심각성을 인정했다. 그런데도 외부에는 알리지 않았다.
지금 Claude Code를 포함한 AI 코딩 에이전트는 파일 읽기, 터미널 명령 실행, API 호출을 사람 대신 처리하는 단계까지 왔다. 그 에이전트가 동작하는 울타리에 틈이 생기면, 그 틈으로 빠져나갈 수 있는 건 단순한 에러 메시지가 아니다.
2. 핵심 아이디어
샌드박스 우회는 에이전트가 가진 권한 전체를 공격 표면으로 바꾼다.
샌드박스는 AI 에이전트가 코드를 실행할 때 바깥 시스템에 영향을 못 미치게 가두는 울타리다. Claude Code가 터미널 명령을 대신 실행할 때, 그 명령이 특정 디렉토리 안에서만, 특정 권한 범위 안에서만 동작하도록 설계하는 것이 샌드박스의 역할이다.
이번 취약점은 그 울타리에 실제 틈이 있었다는 뜻이다. 샌드박스 우회가 가능한 상태에서 Claude Code에 넓은 실행 권한을 부여했다면, 아래 경로가 공격 표면이 된다.
| 노출 경로 | 구체적 위험 |
|---|---|
| 로컬 파일시스템 접근 | 작업 디렉토리 외부 파일 탈취 가능 |
| 환경변수 노출 | .env, API 키, DB 자격증명 유출 |
| 외부 네트워크 접근 | 에이전트를 경유한 외부 서버 요청 |
| 프로세스 실행 | 의도하지 않은 시스템 명령 수행 |
더 불편한 지점은 공개 방식이다. CVE 없이 조용히 패치하는 관행은 같은 도구를 쓰는 다른 팀, 다른 회사가 위험을 인지하고 대응할 타이밍 자체를 빼앗는다. 언제 고쳐졌는지 알 방법이 없다면, 패치 이전 버전을 계속 쓰고 있어도 알 수가 없다.
3. 바로 따라하는 방법
지금 당장 점검할 세 가지 항목이다.
① Claude Code 버전 확인 및 업데이트
# 현재 설치된 버전 확인
claude --version
# npm으로 설치한 경우 최신 버전으로 업데이트
npm update -g @anthropic-ai/claude-code
# 업데이트 후 버전 재확인
claude --version
② 에이전트 작업 디렉토리의 민감 파일 노출 여부 확인
# 현재 디렉토리에 .env 파일이 있는지 확인
find . -name ".env" -o -name ".env.local" -o -name ".env.production" | head -20
# .gitignore에 .env 계열이 등록돼 있는지 확인
grep -E "^\.env" .gitignore
기대 결과: .env 계열 파일이 .gitignore에 포함되어 있어야 한다. 작업 디렉토리에 .env 파일이 노출된 채 에이전트를 실행하고 있다면 즉시 분리해야 한다.
③ Claude Code에 부여한 실행 권한 범위 검토
# Claude Code 설정 파일 위치 확인
ls ~/.claude/
# 현재 프로젝트에 설정된 권한 확인
cat .claude/settings.json 2>/dev/null || echo "프로젝트 설정 없음"
cat .claude/settings.local.json 2>/dev/null || echo "로컬 설정 없음"
설정 파일에서 아래 패턴을 발견하면 범위를 좁히는 게 안전하다.
// 위험: 모든 bash 명령 허용
{
"permissions": {
"allow": ["Bash(*)"]
}
}
// 권장: 필요한 명령만 명시적으로 허용
{
"permissions": {
"allow": [
"Bash(npm run test:*)",
"Bash(git status)",
"Bash(git diff)"
]
}
}
4. 운영할 때 조심할 점
권한 최소화 원칙은 AI 에이전트에도 동일하게 적용된다. 편의를 위해 Bash(*) 같은 와일드카드 허용을 설정해두는 경우가 많다. 샌드박스 취약점이 없더라도, 에이전트가 예상치 못한 경로로 명령을 실행할 가능성은 항상 존재한다. 권한 범위를 실제 필요한 작업 단위로 좁히는 것이 기본 원칙이다.
CVE가 없다고 안전한 게 아니다. 이번 사례처럼 조용한 패치는 버전 업데이트를 정기적으로 하지 않는 팀에게는 사실상 공지가 없는 것과 같다. AI 도구라고 해서 보안 업데이트 주기를 느슨하게 잡을 이유가 없다. 일반 소프트웨어와 동일한 패치 관리 프로세스를 적용해야 한다.
환경변수 격리는 에이전트 작업 전 필수 확인 항목이다. 특히 CI/CD 파이프라인이나 개발 서버에서 Claude Code를 자동화 용도로 쓰고 있다면, 해당 환경의 환경변수가 에이전트 작업 디렉토리에 직접 노출되지 않는지 반드시 점검해야 한다.
macOS와 Linux 환경 차이: macOS의 경우 Keychain에 저장된 자격증명이 환경변수보다 안전한 대안이 될 수 있다. Linux 서버 환경이라면 systemd 서비스 단위로 환경변수를 격리하거나 Vault 같은 시크릿 관리 도구를 경유하는 방식을 권장한다.
마무리
CVE 없이 조용히 패치된 Claude Code 샌드박스 취약점은, AI 에이전트 보안에서 모델 성능보다 실행 권한 범위와 패치 투명성이 더 중요한 변수라는 점을 다시 확인시켜준다.
다음 글에서는 Claude Code의 권한 설정(settings.json)을 프로젝트 유형별로 어떻게 구성하는지, 실제 설정 파일 예시와 함께 정리할 예정이다.
🐦 X에서 더 빠르게: @baegseungh7061
📚 이 시리즈 더 보기: AI 인사이트
💌 새 글 알림: X 팔로우 또는 블로그 RSS 구독
'AI 인사이트' 카테고리의 다른 글
| AI 코딩 에이전트가 열어둔 보안 사각지대, 지금 당장 확인해야 할 세 가지 (0) | 2026.05.22 |
|---|---|
| impeccable — AI 없이 돌리는 프론트엔드 디자인 lint, 24개 안티패턴 탐지기 (0) | 2026.05.22 |
| ECC — /security-scan 하나로 AgentShield 102개 룰을 Claude Code 세션 안에 통합하는 법 (1) | 2026.05.21 |
| Claude 에이전트가 Cloudflare 위에서 코드를 직접 실행하는 시대 (0) | 2026.05.20 |
| Microsoft의 Claude Code 퇴출이 한국 개발팀에 던지는 질문 (0) | 2026.05.19 |