본문으로 건너뛰기
TEN Brief 하루 열 건, 확인된 것만 2026.10.24 EN

This article is also available in English →

테크 · 3분 · 핫토픽

Node2Shell(CVE-2026-111497) — Node.js가 압축만 풀어도 코드 실행, 22·24·26 패치

CVE-2026-111497, nicknamed node2shell or Node2Shell, is an out-of-bounds write in the Brotli decoder bundled with Node.js and Bun that can lead to remote code execution from a crafted compressed stream. Node.js fixed it on October 21, 2026 in 22.23.4, 24.22.1 and 26.12.1; Google scored it 9.2 under CVSS 4.0, and the advisory credits OpenAI Codex Security researchers.

CVE-2026-111497(별칭 Node2Shell)은 Node.js와 Bun에 들어 있는 브로틀리(Brotli) 압축 해제기의 메모리 경계 밖 쓰기 결함이다. 조작된 압축 데이터를 풀기만 해도 서버가 멈추거나 원격 코드가 실행될 수 있다. Node.js는 2026년 10월 21일 22.23.4·24.22.1·26.12.1로 고쳤고, 구글은 CVSS 4.0 기준 9.2점(치명)을 매겼다. 발견자는 오픈AI 코덱스 시큐리티 연구원이다

밝은 운영실에서 서버를 업데이트하는 엔지니어의 뒷모습과 유리벽 너머 서버 랙

3줄 요약

  • 결함 — 브로틀리 해제기가 잘못된 블록 전환을 걸러내지 못해 8바이트 버퍼 밖에 씀
  • 노출 — Express 5 요청 본문, fetch() 응답 등 외부 압축 데이터를 푸는 모든 경로
  • 조치 — Node.js 22.23.4·24.22.1·26.12.1, Bun 1.4.4로 올리는 것 외 우회책 없음

핵심 질문

CVE-2026-111497 패치 버전
**Node.js는 세 버전, Bun과 브로틀리 라이브러리도 함께 고쳤다.** | 대상 | 고친 버전 | |---|---| | Node.js 22 | 22.23.4 | | Node.js 24 | 24.22.1 | | Node.js 26 | 26.12.1 | | Bun | 1.4.4 | | 구글 브로틀리(C·파이썬) | 1.0.10 · 1.1.1 · 1.2.1 | | Node.js 20 이하 | 지원 종료, 패치 없음 |
node2shell 영향받는지 확인
**외부에서 들어온 브로틀리 데이터를 푸는 코드가 있으면 해당한다.** | 경로 | 노출 여부 | |---|---| | Express 5·body-parser 2.x 요청 본문 | 노출 | | Express 4·body-parser 1.x | 기본 비노출 | | 내장 fetch()로 외부 URL 응답 받기 | 노출 | | node:zlib brotliDecompress 직접 호출 | 입력이 외부면 노출 | | 순수 http 서버 | 브로틀리 본문 자동 해제 안 함 |
Node2Shell 실제 공격 사례
**10월 23일 기준 실제 악용 보고는 없다.** | 항목 | 상태 | |---|---| | 공개 개념증명 | 있음(임퍼바, 24.22.0 arm64 이미지에서 코드 실행) | | 실제 악용 | 보고 없음 | | 미국 CISA 악용 목록(KEV) | 미등재 |

압축 파일을 여는 것만으로 서버를 내줄 수 있는 결함이 Node.js에서 나왔다. Node.js는 2026년 10월 21일 보안 업데이트로 결함 10개를 고쳤다. 그중 가장 위험한 것이 CVE-2026-111497, 연구자들이 'Node2Shell'(또는 node2shell)이라고 부르는 브로틀리(Brotli) 압축 해제기 결함이다. 구글은 CVSS 4.0 기준 9.2점(치명)을 매겼다.

이 결함을 찾은 것은 사람이 아니라 AI 보안 도구 팀이다. Node.js 공지는 오픈AI 코덱스 시큐리티(Codex Security)의 카이 트란·실비 메이어를 발견자로 밝혔다. AI가 찾는 결함이 늘면서 패치 속도가 따라가지 못한다는 경고가 나오는 가운데 나온 사례다.

1. 무엇이 문제인가 — 8바이트 버퍼 밖으로 쓰기

브로틀리는 구글이 만든 압축 방식으로, 웹페이지·API 응답을 줄이는 데 널리 쓴다(Content-Encoding: br). Node.js는 구글의 C 라이브러리를 내장해 쓴다.

항목내용
결함 종류경계 밖 쓰기(CWE-787)
발생 지점브로틀리 해제기의 블록 전환 처리
원리블록 종류를 하나만 선언한 뒤 전환하는 조작 데이터를 거부하지 않고 "입력이 더 필요하다"로 처리 → 8바이트 버퍼 밖에 계속 씀
결과프로세스 중단, 메모리 유출, 원격 코드 실행
영향 범위Node.js 22·24·26, Bun, 구글 브로틀리 1.0.3~1.0.9·1.1.0·1.2.0(파이썬 패키지 포함)
원본 수정구글 브로틀리 저장소 2026년 2월 27일 커밋(당시 공지 없음)

흥미로운 점은 원본 라이브러리 수정이 2월에 이미 들어갔다는 것이다. 공지나 릴리스 없이 커밋만 있었고, 이를 가져다 쓰는 Node.js는 8개월 뒤에야 고쳤다. npm에 있는 brotli 패키지는 이번 결함과 관계없다. 문제는 런타임 자체다.

2. 내 서비스가 영향받나 — 경로별 점검표

코드 경로노출비고
Express 5 · body-parser 2.x (json()·urlencoded()·text()·raw())노출브로틀리 요청 본문을 자동으로 풂
Express 4 · body-parser 1.x비노출브로틀리 자동 해제 안 함
Koa(koa-bodyparser·koa-body 등)노출—
Fastify(@fastify/compress 요청 해제)노출설정 시
내장 fetch()로 사용자 지정 URL 받기노출응답의 br 압축을 자동 해제
node:zlib brotliDecompress 계열입력이 외부면 노출—
순수 http 서버비노출본문 자동 해제 없음
bun build --compile 단일 실행 파일노출재빌드 필요

사용자가 넣은 URL을 서버가 대신 받아 오는 기능(링크 미리보기, 웹훅 검증, AI 에이전트의 웹 탐색 등)이 특히 위험하다. 공격자가 자기 서버에서 조작된 브로틀리 응답을 돌려주기만 하면 된다.

3. 무엇을 해야 하나

조치내용한계
업그레이드(유일한 근본 해결)Node.js 22.23.4·24.22.1·26.12.1, Bun 1.4.4컨테이너 기본 이미지·빌드 서버까지 재빌드
임시 ①프록시·로드밸런서에서 Content-Encoding: br 요청 거부(대소문자·gzip, br 목록 포함)fetch() 응답은 못 막음
임시 ②본문 파서의 압축 해제 끄기gzip 본문도 거부됨
지원 종료 버전Node.js 20 이하는 패치 없음지원 버전으로 이전

10월 23일 기준 실제 악용 보고는 없고, 미국 CISA의 '실제 악용 취약점(KEV)' 목록에도 없다. 다만 임퍼바 연구원이 공식 Node.js 24.22.0 arm64 이미지에서 코드 실행을 시연했다고 밝혀, 공격 도구가 나오는 것은 시간문제라는 평가가 많다. 점수 체계는 「CVSS란」에서, 의존성 관리는 「SBOM이란」에서 다뤘다.

4. 남은 것 — AI가 찾는 결함, 사람이 고치는 속도

  • AI 발견의 증가: 같은 주 포티넷은 앤트로픽·오픈AI·구글 등이 AI로 찾은 치명 결함을 11월 10일 일괄 공개하겠다고 예고했다. 샘 올트먼은 AI가 찾는 결함이 기존 패치 체계의 가정을 넘을 수 있다고 말했다.
  • 원본과 하류의 시차: 구글 브로틀리 수정이 2월에 있었는데 Node.js 공지는 10월에 나왔다. 다른 언어·배포판에 들어간 브로틀리가 모두 고쳐졌는지는 각 배포판 공지를 확인해야 한다.
  • 함께 고친 결함: 같은 업데이트에 TLS 인증서 확인 우회(전각 숫자 IP·8진수 IP 표기), DNS NUL 바이트 잘림 등 '높음' 3건이 더 있다.

출처

  1. Node.js — Wednesday, October 21, 2026 Security Releases
  2. 사이코드 — node2shell (CVE-2026-111497): What to Patch in Node.js
  3. 턱스케어 — Node.js October 2026 Security Fixes and Brotli RCE
  4. 크립토브리핑 — OpenAI uncovers remote code execution flaw in Brotli compression library
  5. 사이버켄드라 — Node2Shell: Node.js Brotli Flaw Gets RCE Proof of Concept

검증

발행
최종 수정
교차 확인
서로 다른 출처 5건을 대조했다.
미검증
  • 심각도는 구글(CNA)이 CVSS 4.0으로 9.2(치명)를 매겼고, Node.js는 '높음'으로만 분류하고 점수를 내지 않았다.
  • 공개 개념증명이 기본 빌드에서 그대로 통하는지에 대해 매체마다 평가가 다르다. 일부는 일부러 약하게 만든 빌드에서만 됐다고 전한다.
  • 초기 보도 일부는 발견자를 Node.js 관리자로 잘못 적었다. Node.js 공식 공지는 오픈AI 코덱스 시큐리티의 카이 트란·실비 메이어를 발견자로 밝혔다.
작성
발행 전 사람이 검수했다. 수집·교차확인·재작성 절차는 편집 원칙.

하루 열 건, 아침에 한 번

3줄 요약만 보내고 전문은 사이트에서 읽습니다. 하단에서 한 번의 클릭으로 언제든 해지할 수 있습니다.

관련