
Claude Code v2.1.221 필수 업데이트: Bash 권한 우회 수정
요약
Anthropic이 보안 결함을 수정한 Claude Code v2.1.221을 출시했습니다. zsh의 조건식을 이용한 Bash 권한 체크 우회 문제를 포함하여 총 39건의 업데이트가 포함되었습니다.
핵심 포인트
- zsh [[ ]] 조건식을 악용한 Bash 권한 우회 결함 수정 (Critical)
- PowerShell 인용부호 경로 권한 체크 오류 수정 (High)
- 샌드박스 인증 정보 보호를 위한 mask 모드 추가
- 백그라운드 세션의 commit/push 동작 사양 변경
Anthropic은 Claude Code의 새 버전 v2.1.221을 출시했습니다. 이번 릴리스에는 총 39건의 변경 사항이 포함되어 있으나, 그중에서도 특히 주목해야 할 점은 zsh의 [[ ]] 조건식을 악용한 Bash 도구의 권한 체크 우회라는 Critical 급의 보안 수정입니다.
Claude Code는 Bash 명령을 실행하기 전에 사용자에게 허가를 요청하는 권한 모델을 가지고 있지만, 특정 방식으로 작성할 경우 이 체크를 통과할 수 있는 결함이 존재했습니다. 이는 샌드박스(Sandbox)/권한 모델의 신뢰성 자체와 관련된 문제이며, 구버전을 계속 사용하는 것 자체가 리스크가 됩니다.
본 기사에서는,
- 지금 바로 대응해야 할 Critical / High 수정 사항
- 개발 경험을 바꾸는 신기능 (샌드박스 인증 정보 마스킹, VSCode Focus view 등)
- 워크플로우에 영향을 주는 동작 변경 (백그라운드 세션의 commit/push, Gateway API 검증 강화)
을 중심으로 정리합니다.
📌 영향을 받는 사람
- macOS/Linux에서 zsh를 기본 쉘로 설정하여 Claude Code를 사용 중인 사람 (전원이 대상, 특히 Critical 수정 사항 관련)
- Windows에서 PowerShell을 통해 명령 실행을 허용하고 있는 사람
- CI/스크립트에서
-p(print 모드) +--mcp-config로 MCP 서버를 병용하고 있는 사람 - 백그라운드 세션 (자동 실행 태스크)을 운용하고 있는 사람
- 자체 Gateway를 통해 Claude API를 호출하고 있는 사람 (
model필드의 타입에 주의)
39건의 변경 사항을 성질에 따라 분류하면 다음과 같습니다. Critical / High 수정은 "지금 바로 업데이트해야 하는 이유", 그 외에는 "업데이트 시 얻을 수 있는 개선 사항"으로 정리할 수 있습니다.
| ID | 변경 내용 | severity | 대응 필요 여부 |
|---|---|---|---|
| change-001 | Bash 도구 권한 체크 우회 수정 (zsh [[ ]]) | 🔴 Critical | 필수 |
| change-002 | PowerShell 인용부호 경로의 권한 체크 오처리 수정 | 🟠 High | 필수 |
| change-003 | 샌드박스 인증 정보에 mode: "mask" 추가 | 🟠 High | 임의 (권장) |
| change-007 | print 모드에서 --mcp-config의 MCP 접속 지연 수정 | 🟠 High | CI 이용자는 필수 |
| change-008 | 백그라운드 세션의 commit/push 사양 변경 | 🟠 High | 필수 |
⚠️ Breaking Change (보안)
zsh의 [[ ]] 정규 표현식 조건식 안에 숨겨서 작성된 명령이 권한 프롬프트를 전혀 표시하지 않고 실행되어 버리는 결함이 있었습니다. v2.1.221에서 이 우회로가 차단되었으며, 해당 명령도 평소와 같이 승인 다이얼로그가 나타나게 됩니다.
권한 체크를 우회할 수 있다는 것은 Bash 도구의 허가 설정 (allow/deny/ask)이 애초에 기능하지 않는 상태와 같습니다. 특히 자동 승인 (auto 모드)이나 CI에서의 무인 실행을 수행하고 있는 경우, 의도하지 않은 명령이 무허가로 실행될 리스크가 있었습니다.
인용부호 (" 또는 ')를 포함하는 파일 경로를 PowerShell 권한 체크가 올바르게 해석하지 못해, 본래라면 승인이 필요한 명령이 판정을 통과할 가능성이 있었습니다. Windows에서 Claude Code를 사용 중인 팀은 특히 확인해 두어야 할 수정 사항입니다.
새로운 샌드박스 설정 모드 mask가 추가되었습니다. 에이전트 프로세스는 실제 API 키가 아닌 센티넬 (더미) 값을 읽고, 샌드박스 프록시가 외부로 전송 (egress)할 때만 실제 값으로 교체합니다.
💡 Tips
macOS에서는 현재 시점에서 파일 마스킹이 지원되지 않아, 지정하더라도 deny로 폴백(fallback)됩니다. Linux/WSL 환경에서 먼저 테스트해 보는 것을 추천합니다. extract 정규 표현식을 사용하면 파일 전체가 아닌 특정 범위만 마스킹할 수도 있습니다.
비대화형 -p (print 모드)에서 --mcp-config
--mcp-config`를 지정했을 때, MCP 서버의 연결이 첫 번째 턴(turn)에 맞추어 완료되지 않아 도구 호출(tool call)이 일반 텍스트(plain text)로 그대로 출력되어 버리는 결함이 수정되었습니다. CI 파이프라인이나 스크립트에서 MCP를 병용하고 있는 경우 영향이 크므로, 해당 구성에서는 동작 확인을 권장합니다.
백그라운드 세션 종료 시 동작이 다음과 같이 변경되었습니다.
| 항목 | 기존 동작 | 새로운 동작 |
|---|---|---|
| 작업 보전 | 명시적인 보장 없음 | 반드시 commit / push를 실행 |
| ... |
백그라운드 실행을 업무 흐름(workflow)에 포함하고 있는 경우, CLAUDE.md의 Git 워크플로우 섹션을 정비해 두면 동작을 제어하기 쉬워집니다.
model 필드에 숫자나 객체 등 비문자열(non-string) 값을 전달하던 클라이언트는, 향후 요청이 400 에러로 거부됩니다. 자체 래퍼(wrapper)나 프록시(proxy)를 통해 Gateway를 호출하고 있는 경우에는 요청 생성 부분의 타입을 확인하십시오.
VSCode Focus view: 도구 실행 로그를 접고, 턴 단위의 요약 표시로 전환 가능 (Ctrl+Alt+F)
: 구형 모델 세대용 기술을 프롬프트/도구 설명에서 감지 claude-api 스킬에 prompt-audit 서브 명령 추가
Google Vertex AI에서 도구 검색 재활성화 (Claude 4.5 세대 이후): 다수의 MCP 도구를 연결하는 구성에서 컨텍스트 감소(context reduction)의 혜택을 받을 수 있음
auto 모드의 권한 체크 캐시 효율화: 프롬프트 캐시(prompt cache) 비용 절감
Windows 시작 프로세스를 kernel32 네이티브 호출로 변경: powershell.exe를 감시하는 엔드포인트 보안 제품의 경고가 발생하지 않음
지금 바로 v2.1.221 이후 버전으로 업데이트하십시오 (Critical 보안 수정 사항이므로 이것이 최우선순위입니다)
zsh를 사용 중인 경우 특히 우선순위를 높여 업데이트하십시오. 구버전 상태로 허가 규칙(permission rules)에 의존한 운용을 계속하지 마십시오. Windows에서 PowerShell을 통해 권한 체크를 사용하는 경우, 업데이트 후 따옴표를 포함한 경로의 승인 프롬프트가 올바르게 나오는지 확인하십시오.
- CI / 스크립트에서
-p --mcp-config를 사용 중인 경우, 업데이트 후 MCP 도구 호출이 정상적으로 도구 호출로서 기능하는지(텍스트화되지 않았는지) 확인하십시오. - 백그라운드 세션을 운용하고 있다면,
CLAUDE.md의 Git 운용 규칙(브랜치 명명, PR 생성 기준 등)을 다시 명시하십시오. - 자체 클라이언트에서 Gateway API를 호출하고 있는 경우,
model필드가 항상 문자열임을 코드 측에서 보장하십시오. - Linux/WSL에서 샌드박스(sandbox)를 사용 중이라면, 인증 정보 파일의
mode: "mask"이전을 검토하십시오 (macOS는 현재 시점에서deny폴백(fallback)만 지원).
Before (인증 정보를 그대로 전달하는 설정, 또는 deny로 완전 차단)
sandbox:
credentialFiles:
- path: "~/.config/myapi/credentials.json"
...
After (센티널(sentinel) 값으로 치환하고, egress 시에만 실제 값으로 복원)
sandbox:
credentialFiles:
- path: "~/.config/myapi/credentials.json"
...
Before (비문자열이라도 하류(downstream)로 전송되었음)
{
"model": 123,
"messages": [{ "role": "user", "content": "Hello" }]
...
}
After (v2.1.221 이후는 400으로 거부됨)
// HTTP 400 Bad Request
{
"error": {
...
}
}
// 올바른 요청
{
"model": "claude-sonnet-5",
...
}
-
Claude Code v2.1.221의 가장 중요한 포인트는 zsh입니다. 권한 모델의 신뢰성과 직결되므로, 모든 사용자는 신속하게 업데이트해야 합니다
[[ ]] -
[[ ]]를 악용한 Bash 권한 체크 우회(Bypass) 수정 (Critical) - Windows PowerShell의 따옴표 경로(quote path) 처리 오류 수정도 High severity로 분류되어, Windows 사용자는 함께 확인이 필요합니다. -
신기능으로는 샌드박스 인증 정보의
mode: "mask"(Linux/WSL)가 특히 유용하며, 에이전트 프로세스에 생(raw) API 키를 노출시키지 않는 구성이 가능해졌습니다. - 백그라운드 세션의 commit/push 동작, Gateway의model필드 검증 강화 등 운영 흐름에 영향을 미치는 변경 사항도 있으므로 CLAUDE.md 및 클라이언트 코드의 재검토를 권장합니다. - 그 외 VSCode의 Focus view,prompt-audit서브 커맨드, Vertex AI의 도구 검색(tool search) 재활성화 등 일상적인 개발 경험을 개선하는 변경 사항도 다수 포함되어 있습니다.
보안 수정이 중심인 릴리스이므로, 다른 업데이트를 뒤로 미루더라도 우선적으로 버전 업데이트를 진행해 주시기 바랍니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기