Claude Code Brotli 취약점: Node 업데이트만으로 부족한 이유

실제로 실행하는 Claude Code와 별도의 Node.js·Bun 런타임을 업데이트하고, 활성 설치본과 CI 이미지를 점검하세요. Claude 버전 번호와 내장 디코더의 패치 적용 근거를 구분해 보안 검토를 진행하는 방법을 설명합니다.

목차
Claude Code Brotli 취약점: Node 업데이트만으로 부족한 이유

Claude Code의 Brotli 취약점 경고에 대응하려면 실제로 사용하는 Claude Code 실행 파일을 업데이트한 뒤 다시 시작하고, 다른 도구가 사용하는 Node.js나 Bun 런타임도 별도로 패치하세요. 시스템 Node.js를 업데이트해도 Claude Code에 내장된 런타임은 교체되지 않으며, 이는 현재 npm 설치 방식으로 제공되는 네이티브 실행 파일에도 해당합니다. 2026-10-23 기준, Anthropic의 2.1.308 릴리스 노트에는 Brotli 수정이 명시되어 있지 않으므로 이 버전 번호만으로 보안 검토를 완료할 수는 없습니다.

웹페이지를 가져오는 에이전트를 점검해야 하는 이유

위험은 공격자가 제어하는 Brotli 데이터를 프로세스가 디코딩할 때 발생합니다. 에이전트가 문서를 가져오거나 웹사이트에서 내용을 추출하는 과정에서 이런 데이터를 만날 수 있으며, 모델이 읽을 수 있는 페이지 본문을 받기 전에 이미 디코딩이 이루어질 수 있습니다.

CVE-2026-111497은 Google의 Brotli 디코더가 할당된 메모리 범위를 벗어나 데이터를 쓰는 취약점입니다. Google이 작성한 CVE 기록은 조작된 압축 데이터 스트림으로 메모리 정보 유출, 서비스 거부, 임의 코드 실행이 발생할 수 있다고 설명합니다. Google은 취약점 자체에 CVSS 4.0 점수 9.2와 Critical 등급을 부여했으며, Node.js 보안 공지는 Node.js에 미치는 영향을 High로 분류합니다.

Bun의 fetch 문서에 따르면 응답의 자동 압축 해제는 기본으로 활성화되며 Brotli도 지원합니다. 따라서 Bun의 fetch()로 구현한 도구는 서버가 Content-Encoding: br를 반환할 때 이 디코더를 호출할 수 있습니다.

이 때문에 로컬에서 데이터를 가져오는 도구를 점검해야 합니다. 특정 Claude Code 동작이 영향을 받는 디코더를 호출하는지는 구현 방식과 데이터 가져오기가 실행되는 위치에 따라 달라집니다. 로컬 MCP 서버, 셸 명령, 원격으로 호스팅되는 콘텐츠 수집 서비스는 서로 다른 런타임을 사용할 수 있습니다.

외부에서 들어오는 요청을 검사하는 웹 애플리케이션 방화벽(WAF)만으로는 이런 경로를 모두 보호할 수 없습니다. Vercel의 보안 공지는 들어오는 요청과 애플리케이션이 가져오는 응답을 구분하며, WAF 보호 기능이 해당 응답을 처리하는 런타임 패치를 대신하지는 않는다고 설명합니다.

수정이 확인된 버전은 무엇인가요?

Node.js와 Bun의 패치 버전은 1차 자료로 확인됩니다. Claude Code에 대해 제시된 최소 버전은 별도의 확인이 필요합니다.

2026-10-23 기준:

구성 요소수정이 확인된 버전업데이트 대상
Node.js 22.x22.23.4해당 애플리케이션이나 도구가 사용하는 Node 실행 파일
Node.js 24.x24.22.1해당 애플리케이션이나 도구가 사용하는 Node 실행 파일
Node.js 26.x26.12.1해당 애플리케이션이나 도구가 사용하는 Node 실행 파일
공식 Bun 릴리스1.4.4별도로 설치한 Bun 또는 Bun을 내장한 애플리케이션
Claude Code검토한 공식 자료로는 최초 수정 릴리스를 확정할 수 없음설치 방식에 맞춰 클라이언트를 업데이트하고 해당 빌드의 검증 근거 보관

10월 21일 Node.js 보안 공지는 위의 세 패치 릴리스를 모두 명시합니다. 버전은 같은 릴리스 계열 안에서 비교하세요. Node 24를 사용한다면 24.22.1 또는 그 이후의 수정된 릴리스가 필요하며, 숫자가 단순히 22.23.4보다 크다는 것만으로는 충분하지 않습니다. Node.js 20에는 더 이상 이 수정이 제공되지 않으므로, Vercel은 지원되는 릴리스 계열로 이동하도록 안내합니다.

Bun 수정은 일반적인 보안 공지뿐 아니라 해당 릴리스의 소스 코드에서도 추적할 수 있습니다. Jarred Sumner의 병합된 풀 리퀘스트는 Brotli 1.2.1로의 업데이트를 명시하며, Bun 1.4.4 릴리스 태그의 의존성 파일도 이 수정된 원본 프로젝트 버전을 선택합니다. 공식 릴리스는 10월 22일에 공개됐습니다.

Claude의 구체적인 버전 관계에 관한 주장은 @ryaneshea의 10월 22일 게시물에서 나왔습니다. 작성자는 Claude Code 2.1.296에 Bun 1.4.3이 포함된 것을 확인했다고 보고하며 2.1.308 이상을 권장했습니다. 이는 커뮤니티 구성원의 보고로, Anthropic이 확인한 버전 대응 관계는 아닙니다.

Anthropic의 2.1.308 릴리스 노트에는 버그 수정과 안정성 개선이라는 일반적인 설명만 있습니다. 변경 기록에 2.1.309도 나열되어 있지만, 2.1.308에 포함된 Bun이나 Brotli 패치를 확인할 근거는 제공하지 않습니다. 신속히 업데이트하되, “클라이언트 업데이트 완료”와 “내장 디코더 패치 적용 확인”은 서로 다른 결과로 기록하세요.

실제로 사용하는 Claude Code 설치본 업데이트하기

변경하기 전에 어떤 설치본이 실행되는지 먼저 확인하세요. 복사본 하나를 업데이트하더라도 터미널, 에디터, 작업 실행기인 러너가 다른 복사본을 계속 실행하면 효과가 없습니다.

Bash에서 실행하세요.

type -a claude
claude --version
claude doctor

type -a는 셸 별칭, 함수, 일치하는 실행 파일 경로를 표시합니다. CLI 참조 문서는 claude doctor를 세션을 시작하지 않는 읽기 전용 설치·설정 진단 명령으로 설명합니다.

작업을 저장하고 기존 Claude Code 세션을 종료한 뒤 실행 파일을 교체하세요. 아래에서 설치 방식에 맞는 업데이트 절차를 선택하면 됩니다.

네이티브 설치

Bash에서 다음을 실행하세요.

claude update

업데이트 프로그램은 autoUpdatesChannel과 적용되는 버전 제한을 따릅니다. 따라서 최신 상태라는 결과가 나와도 현재 설정이 허용하는 범위 안에서 가장 최신이라는 뜻일 수 있습니다.

네이티브 설치의 릴리스 채널 설정은 latest와 릴리스가 늦게 제공되는 stable 채널을 구분합니다. /config → Auto-update channel을 확인하세요. 개인 설정은 ~/.claude/settings.json에 저장됩니다. 중앙에서 관리하는 배포라면 배포된 버전과 업데이트 정책을 함께 갱신해야 합니다.

npm으로 설치한 경우

npm이 관리하는 설치본은 Bash에서 다음 명령으로 업데이트하세요.

npm install -g @anthropic-ai/claude-code@latest

현재 npm 설치 안내는 설치에 Node.js 22 이상을 요구합니다. npm 패키지에서도 독립형 설치 프로그램과 동일한 네이티브 바이너리가 제공됩니다. 위 표에 나온 패치된 Node 버전을 사용하세요. 문서는 이전 패키지 버전 범위에 머물 수 있는 npm update -g 대신 명시적인 설치 명령을 권장합니다.

Homebrew로 설치했다면 설치된 cask에 맞춰 brew upgrade claude-code 또는 brew upgrade claude-code@latest를 사용하세요. WinGet은 PowerShell에서 winget upgrade Anthropic.ClaudeCode를 실행합니다. 각 방식에는 별도의 패키지 관리자 업데이트 동작이 적용됩니다.

해당 업데이트가 끝나면 새 터미널을 여세요. Bash에서 다음을 확인합니다.

hash -r
command -v claude
claude --version
claude doctor

출력된 버전은 설치하려던 릴리스와 일치해야 하며, 선택된 명령도 의도한 설치본을 가리켜야 합니다. command -v가 함수나 별칭을 표시한다면 앞서 확인한 type -a 출력에서 실제로 무엇을 실행하는지 살펴보세요.

에디터에서 구동되는 세션과 무인 실행 세션은 각각 다시 시작하세요. 터미널에서 새로 실행한 프로그램을 확인했다고 해서 이전부터 실행되던 프로세스가 교체됐다고 볼 수는 없습니다.

업데이트가 실패하거나 이전 버전이 계속 실행될 때

관찰한 증상에 맞춰 원인을 확인하고 조치하세요. Anthropic의 설치 문제 해결 가이드는 여러 설치본의 충돌, 업데이트 실패, npm 바이너리 누락을 다룹니다.

증상확인 및 조치결과 검증
업데이트가 끝났지만 claude --version이 이전 릴리스를 표시함type -a claude와 which -a claude로 함께 설치된 복사본을 찾으세요. 이전 복사본을 계속 선택하는 런처나 PATH 항목을 수정하세요.새 터미널에서 선택되는 명령과 버전을 다시 확인하세요.
사용자 정의 ~/.local/bin/claude 런처가 이전 릴리스를 실행함런처의 대상을 확인하세요. 네이티브 업데이트 프로그램은 사용자 정의 런처를 유지하므로 배포할 때 런처가 선택하는 버전도 갱신해야 합니다.새로 내려받은 바이너리만 직접 실행하지 말고 해당 런처를 통해 버전을 확인하세요.
Error: claude native binary not installed.npm이 선택적 의존성을 생략했거나 postinstall 스크립트를 건너뛰었는지 확인하세요. 필요한 설치 절차를 복원한 뒤 패키지를 다시 설치하세요.claude --version이 정상적으로 실행되어야 합니다.
Auto-update failed · Run claude doctorclaude doctor를 실행하고 보고된 설치 또는 다운로드 오류를 살펴보세요. 가이드에서 해당 증상에 맞는 절차를 따르세요.적절한 업데이트 명령을 다시 실행한 뒤 새 프로세스에서 의도한 버전을 확인하세요.

허용된 범위에 더 새로운 버전이 없다고 나오면 작업이 끝났다고 판단하기 전에 릴리스 채널과 중앙에서 정한 버전 상한을 확인하세요. 설치 점검이 성공했다는 것은 프로그램이 시작된다는 뜻이며, Brotli 취약점을 시험한 결과는 아닙니다.

Claude Code에 내장된 Bun 버전은 확인할 수 있나요?

문서화된 Claude 명령으로 확인할 수 있는 것은 애플리케이션 버전과 설치 상태입니다. 검토한 CLI 문서에는 내장된 Bun 버전을 출력하는 공식 지원 명령이 안내되어 있지 않습니다.

bun --version은 PATH에 있는 별도의 Bun 실행 파일을 확인합니다. 마찬가지로 시스템 Node 프로세스에 버전을 물으면 그 Node 프로세스에 관한 정보가 나옵니다. 어느 쪽도 Claude Code 실행 파일 안에 컴파일되어 들어간 런타임을 식별하지는 않습니다.

Bun은 독립 실행 파일용 BUN_BE_BUN=1을 문서화하고 있습니다. 하지만 이를 Claude Code 진단 방법으로 안내하지는 않으며, kk-mats의 Claude Code 이슈 #24575에는 버전에 따라 동작이 달라진다는 보고가 있습니다. 추가 검증 없이 이 방법을 Claude 설치본의 신뢰할 수 있는 보안 판정 기준으로 삼아서는 안 됩니다.

공개된 Claude Code 2.1.308 매니페스트에는 릴리스, 빌드, 플랫폼, 체크섬 정보가 있지만 Bun 구성 요소의 버전은 없습니다. Anthropic의 서명된 매니페스트 검증 절차는 바이너리가 공급업체의 릴리스와 일치하는지 확인할 수 있게 해줍니다. 디코더가 패치됐는지 확인하려면 해당 파일과 연결된 구성 요소 또는 패치 근거가 추가로 필요합니다.

팀 보안 검토에서는 Claude 버전, 플랫폼, 설치 출처, 실제 실행 파일, 체크섬을 기록하세요. 내장 런타임의 수정 여부를 입증해야 한다면 정확히 해당 릴리스와 플랫폼에 대해 공급업체의 확인을 요청하세요. 근거를 확보하기 전에는 “클라이언트 업데이트 완료, 내장 런타임 패치 상태 미확인”으로 기록하고, 위험 노출 평가상 필요하다면 영향을 받는 무인 작업의 신뢰할 수 없는 콘텐츠 수집을 일시 중지하세요.

팀의 개발 장비, 컨테이너, CI 러너 점검하기

에이전트 작업이 실제로 이루어지는 모든 실행 환경 안에서 설치 목록을 조사하세요. 개발자 노트북의 결과로는 컨테이너, 자체 호스팅 러너 계정, 별도로 배포한 MCP 서버의 상태를 알 수 없습니다.

기존 장비 관리 작업이나 CI 단계에 다음 Bash 블록을 사용하세요.

set -u
uname -srm
id -un

for tool in claude node bun; do
  if executable=$(type -P "$tool"); then
    printf '%s\t%s\t' "$tool" "$executable"
    "$executable" --version || exit 1
  else
    printf '%s\tNOT_FOUND\n' "$tool"
  fi
done

출력에는 운영체제, 실행 사용자, 각 도구에 대해 PATH에서 선택된 실행 파일과 그 버전이 표시됩니다. NOT_FOUND는 설치 목록 조사 결과입니다. 네이티브 Claude 설치본에는 별도의 Bun 명령이 반드시 있어야 하는 것은 아닙니다.

이 스크립트는 보안 검사 통과를 뜻하는 PASS를 출력하지 않습니다. Node와 별도 Bun의 결과는 수정이 확인된 버전과 비교하고, Claude 빌드의 근거는 따로 평가하세요. Bash의 type -P는 실행 파일 경로를 검색하므로, 셸 래퍼나 명시적인 설정으로 선택되는 실행 파일은 별도로 조사해야 합니다.

팀 환경에 업데이트를 배포할 때는 다음 순서로 진행하세요.

  1. 실행 환경을 확인하세요. 평소의 PATH 설정을 적용한 뒤 최종 컨테이너나 러너 환경 안에서 서비스 계정으로 이 블록을 실행하세요. MCP 서버, SDK를 사용하는 프로세스, 에디터 연동 기능이 사용하는 실행 파일 경로는 각각 점검하세요.
  2. 빌드 또는 배포 설정을 업데이트하세요. 영향을 받는 Node/Bun 버전과 Claude 설치본을 교체하세요. 캐시된 과거 설치 계층이 이전 실행 파일을 그대로 남기지 않도록 이미지를 다시 빌드하세요.
  3. 실행 중인 워크로드를 교체하세요. 컨테이너를 새로 만들고 이전 설치본을 사용하는 러너나 서비스를 다시 시작하세요. 새 워크로드에서 설치 목록을 다시 조사하고 이미지 다이제스트(digest)를 결과와 함께 보관하세요.
  4. 평소 사용하는 작업 하나를 확인하세요. 업데이트된 환경에서도 팀에 필요한 도구 작업을 완료할 수 있는지 확인하세요. 이 결과는 호환성 검사로 기록하고, 디코더 패치 근거와는 구분하세요.

Bun 자체가 관리하는 독립 설치본이라면 릴리스에 문서화된 업데이트 명령을 Bash에서 실행하세요.

bun upgrade
bun --version

이 명령은 해당 Bun 설치본을 업데이트합니다. Bun을 내장한 애플리케이션에는 애플리케이션 자체의 업데이트된 빌드가 필요합니다.

사용자 지정 API 게이트웨이를 써도 클라이언트 업데이트는 필요합니다

사용자 지정 ANTHROPIC_BASE_URL은 API 요청을 보내는 대상을 바꿀 뿐 Claude Code의 로컬 실행 파일을 교체하지 않습니다. 게이트웨이를 통한 요청이 정상 동작하더라도 클라이언트를 최신 상태로 유지하세요.

Claude Code 공식 변경 기록에는 게이트웨이 호환성과 관련한 별도의 수정 두 가지가 나옵니다.

  • 2.1.305: Vertex, Bedrock 또는 다른 엔드포인트나 게이트웨이가 도구 검색을 거부하면 모든 요청이 실패할 수 있었던 2.1.304의 회귀 오류를 수정합니다. ToolSearch를 금지했거나 --tools에서 제외한 구성도 포함됩니다. 이제 클라이언트는 도구 검색 없이 요청을 다시 시도합니다.
  • 2.1.307: 사용자 지정 ANTHROPIC_BASE_URL 게이트웨이와 Foundry에서 prompt-caching-scope 베타 헤더를 보내지 않도록 수정합니다. 이 환경에서는 해당 헤더가 효과를 내지 않습니다.

업데이트 후에는 이전에 실패했던 작은 게이트웨이 작업을 다시 실행하세요. 계속 실패한다면 현재 클라이언트로 엔드포인트 응답과 설정을 조사하세요. Brotli가 수정됐다는 주장만으로 모든 게이트웨이 오류를 설명할 수는 없습니다. 반대로 게이트웨이 요청이 성공했다면 해당 작업의 호환성은 확인된 것이지만, 내장 런타임 패치 여부는 여전히 별도로 검증해야 합니다.

LLM 워크플로를 최적화할 준비가 되셨나요?

하나의 API로 모델을 연결하고 키와 AI 비용을 관리하세요.

무료로 시작하기