
Claude Code v2.1.223|Bash 권한(permission) 우회 취약점 해결|매일 Changelog 해설
요약
Claude Code v2.1.223 업데이트를 통해 Bash 권한 우회 및 승인 다이얼로그 명령어 위조 취약점이 해결되었습니다. 또한 샌드박스 탈출 문제와 조직 정책을 무시하던 에이전트 권한 설정 오류도 함께 수정되었습니다.
핵심 포인트
- Bash 명령어 일부를 숨겨 권한 체크를 우회하던 취약점 수정
- 탭/유니코드를 이용한 승인 다이얼로그 내 명령어 위조 차단
- dynamic import()를 통한 샌드박스 탈출 결함 해결
- GitHub 조직 단위(owner/*) 마켓플레이스 일괄 관리 기능 지원
v2.1.223에서 조작된 Bash 명령어가 권한(permission) 체크로부터 자신의 일부를 숨길 수 있었던 결함이 수정되었습니다. 승인 다이얼로그(approval dialog) 측에서도 탭(tab)이나 불가시 Unicode를 사용하여 명령어의 일부를 화면에서 지울 수 있었던 경로가 차단되었습니다. Bash의 자동 승인을 설정해 두었다면, v2.1.223이 최우선 업데이트 대상입니다.
Bash 권한(permission) 우회 수정
- 조작된 명령어가 권한(permission) 체크로부터 자신의 일부를 숨길 수 있었음 (v2.1.223)
승인 다이얼로그의 명령어 위조 차단
- 탭이나 불가시 Unicode로 채워진 명령어의 일부가 승인 화면에 나타나지 않았음 (v2.1.223)
workflow 스크립트의 샌드박스(sandbox) 탈출 수정
-
dynamic
import()를 통해 샌드박스 외부의 코드를 실행할 수 있었음 (v2.1.223) -
agent 정의 측에서 bypass 무효화 정책을 통과할 수 있었음 (v2.1.223)
bypassPermissions가 조직 정책을 무시함
마켓플레이스(marketplace) 허가·차단에 owner 와일드카드 적용
-
owner/*로 GitHub org 하위 항목을 일괄 지정 가능 (v2.1.223) -
네이티브 1M 윈도우를 가진 모든 Claude 모델이 대상이 됨 (v2.1.223)
CLAUDE_CODE_DISABLE_1M_CONTEXT의 대상이 모델 고정 리스트에서 제외됨
Bash의 권한(permission) 체크에는 명령어가 자신의 일부를 숨길 수 있는 경로가 있었습니다.
Fixed a Bash permission bypass where a crafted command could hide parts of itself from permission checks
승인 다이얼로그 측도 동일한 방향으로 수정되었습니다. 탭이나 불가시 Unicode로 채워진 명령어는 다이얼로그 상에서 일부가 표시되지 않는 상태였습니다. 화면에 보이는 문자열을 보고 승인했다고 생각했지만, 실제로는 그 뒷부분까지 실행되는 상황이었습니다.
Bash를 allow 규칙으로 자동 승인하고 있는 환경은, 허가했다고 생각한 범위와 실제로 실행되는 명령어가 어긋날 수 있습니다. v2.1.223으로 업데이트하기 전까지는 Bash의 자동 승인 범위를 좁게 유지하는 것이 안전합니다.
샌드박스(sandbox) 측에서도 2건의 수정이 있었습니다. workflow 스크립트가 dynamic import()를 통해 샌드박스 외부의 코드를 실행할 수 있었던 문제와, agent 정의의 bypassPermissions 모드가 조직의 bypass-permissions 무효화 정책을 무시하던 문제가 각각 해결되었습니다. 후자는 managed settings에서 bypass를 금지하더라도, agent 정의를 경유하면 그대로 통과할 수 있었던 형태였습니다.
{
"strictKnownMarketplaces": [
{ "source": "github", "repo": "my-org/*" }
...
managed settings의 이 두 가지 리스트는 리포지토리(repository) 단위에 더해 owner 단위의 지정도 지원합니다. GitHub org 하위의 리포지토리를 하나씩 나열하지 않고, org 이름만으로 허가 또는 차단할 수 있습니다. 판정은 다운로드 전에 수행되므로, 차단 대상 소스는 파일 시스템에 접근하지 않습니다.
와일드카드(wildcard)가 적용되는 곳은 managed settings의 strictKnownMarketplaces와 blockedMarketplaces뿐입니다. marketplace add나 extraKnownMarketplaces, known_marketplaces.json에서는 owner/*가 리포지토리 이름 그 자체로 해석됩니다.
CLAUDE_CODE_DISABLE_1M_CONTEXT가 네이티브 1M 윈도우를 가진 모든 Claude 모델을 auto-compaction을 통해 200K로 억제하도록 변경되었습니다. 대상 모델의 고정 리스트는 폐지되었습니다. auto-compaction이 200K를 유지하지 못할 때는 실행 시 경고가 나타납니다.
알 수 없는 모델 ID (Unknown model ID)로 동작하는 세션에도 auto-compact가 적용됩니다. 예상 컨텍스트 윈도우 (Context window)를 초과하여 계속 늘어나는 상태를 방지합니다. 기존 동작으로 되돌리려면 CLAUDE_CODE_DISABLE_UNKNOWN_MODEL_WINDOW_ENFORCEMENT=1을 설정하십시오.
| 버전 | 카테고리 | 변경 사항 | 개요 |
|---|---|---|---|
| v2.1.223 | 신기능 | 서브 에이전트 (Sub-agent) 모델 제한 경고 | workflow agent / forked skill / slash command / 재개된 background agent의 요청 모델이 제한되어, 부모 모델 (Parent model)에서 동작할 때 경고를 표시 |
| v2.1.223 | 신기능 | cloud 세션의 /teleport 힌트 | claude --teleport <session id>를 통해 로컬로 세션을 이어가는 방법을 표시 |
| v2.1.223 | 변경 | /review가 /code-review의 에일리어스 (Alias)로 지정 | 현재의 diff 또는 PR을 리뷰. /code-review <level> <pr#> 형식 사용, 심층 리뷰는 /code-review ultra 사용 |
| v2.1.223 | 변경 | /code-review 레벨 생략 시 | 직전에 입력한 레벨을 재사용. /code-review high와 같이 지정하면 전환됨 |
| v2.1.223 | 수정 | gateway의 모델 감지 | vertex_ai/claude-* 또는 bedrock/anthropic.claude-*와 같이 접두사 (Prefix)가 붙은 ID로 등록된 Claude 모델이 숨겨져 있던 문제 수정 |
| v2.1.223 | 수정 | modelOverrides | Anthropic 모델 ID가 아닌 키가 세션의 공식 모델 ID로 취급되던 문제. 알 수 없는 키는 무시됨 |
| v2.1.223 | 수정 | managed settings의 env | 서버 배포 설정이 머신 로컬 (Machine-local) managed-settings.json이나 MDM 프로필의 env 블록을 무효화하지 않도록 변경. 관리자 env는 키 단위로 병합(Merge)됨 |
| v2.1.223 | 수정 | Linux의 샌드박스 (Sandbox) 실행 | sandbox.filesystem.denyWrite가 작업 디렉토리를 덮을 경우 명령어가 실행되지 않던 문제 |
| v2.1.223 | 수정 | 세션 재개 | 세션 중간에 /cd를 수행한 후 재개하면 빈 상태로 돌아가는 문제와, 잘못된 진단 (Diagnostics) 첨부 파일이 포함된 이력에서 매 턴 실패하는 문제 |
| v2.1.223 | 수정 | forked background agent | resume 시 fork 원본 프롬프트 재구축에 실패하면, 이후 계속 "already resuming" 상태로 멈추던 문제 |
| v2.1.223 | 수정 | git push 출력 파싱 | 특이한 출력 형식에서 드물게 행 (Hang)이 걸리던 문제 |
v2.1.223의 수정 사항 중 4건은 권한 (Permission) 및 샌드박스 (Sandbox) 취약점 보완입니다. Bash 자동 승인 규칙을 작성 중인 환경이나, managed settings에서 bypass-permissions를 금지하고 있는 조직은 업데이트 우선순위가 높습니다. gateway를 통해 Claude 모델을 사용 중이라면, vertex_ai/ 또는 bedrock/ 접두사가 붙은 모델들이 모델 목록에 다시 나타납니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기