ITEASY

닫기

신규 서비스
닫기정보보호 관리체계 인증(ISMS)

이전 단계

보안/패치

[보안 공지] node2shell — Node.js Brotli 디코더 원격 코드 실행 취약점

2026. 10. 23

node2shell — Node.js Brotli 디코더 원격 코드 실행 취약점

긴급 보안 권고 · SECURITY ADVISORY

node2shell — Node.js Brotli 디코더 원격 코드 실행 취약점

아이티이지

CVE 번호 CVE-2026-111497
위험도 High (CVSS v3.1 8.1 · 일부 벤더 산정, NVD 미할당)
발행일 2026-10-23
영향 대상 Brotli(br) 데이터를 복호화하는 Node.js 앱

안녕하세요. 아이티이지 입니다.

공격자가 제어하는 Brotli(br) 압축 데이터를 복호화하는 Node.js 애플리케이션에서 인증 없이 원격 코드 실행(RCE)으로 이어질 수 있는 취약점입니다. 공식 패치와 기술 분석, 공격 코드(PoC)가 이미 공개되었으므로 Node.js를 사용하는 서버는 즉시 조치해 주시기 바랍니다.

1. 취약점 개요

취약점 명칭: node2shell (CVE-2026-111497)

위험도: High — Node.js 공식 등급 (NVD 공식 CVSS 미할당, 일부 벤더 CVSS v3.1 8.1로 산정)

영향: 비인증 원격 코드 실행(RCE), 메모리 정보 노출, 프로세스 비정상 종료(DoS)

원인: Node.js에 내장된 Brotli 디코더(deps/brotli)의 Out-of-Bounds Write. 스트림 구조상 불가능한 block-type 전환이 들어오면, 취약한 디코더가 이를 "format error"가 아니라 "입력이 더 필요한 상태"로 잘못 처리하여 깨진 내부 상태로 디코딩을 계속하다 버퍼 밖에 쓰게 됨. 취약점은 Express·body-parser가 아니라 Node.js 런타임 자체에 존재함(미들웨어는 디코더로 가는 경로일 뿐).

악용 현황: 2026-10-23 기준 실제 공격(in-the-wild) 보고는 없음. 연구소 환경에서 미수정 Node.js 24.22.0에 대한 코드 실행이 재현되었으나, 공개 PoC는 매번 성공하지는 않음(여러 번 시도 필요).

2. 영향받는 환경

영향 버전

  • Node.js 26.12.1 / 24.22.1 / 22.23.4 미만
  • Node.js 18.x / 20.x / 23.x / 25.x (EOL)는 공식 패치가 제공되지 않음
  • Bun 1.4.4 미만 (동일 디코더 번들, Bun 1.4.4에서 수정)
  • 시스템 brotli를 링크해 빌드한 경우, upstream 수정(google/brotli 0ed4268) 이전 버전을 쓰면 동일하게 영향

영향 실행 환경

공격자가 제어 가능한 Brotli 데이터를 복호화하는 Node.js 앱. 아래 경로 중 하나라도 해당되면 노출됨.

  • (인바운드) Express 5.x 또는 body-parser 2.x의 json()/raw() 파서가 설정되어 Content-Encoding: br 요청 바디를 복호화하는 경우
  • (아웃바운드) 내장 fetch()가 외부 서버의 br 응답을 자동 복호화하는 경우(웹훅, URL 프리뷰, 크롤러, 외부 API 연동 등)
  • (직접 호출) node:zlib의 brotliDecompress/createBrotliDecompress에 신뢰 경계 밖 데이터를 넣는 경우

※ 순수 http 서버는 요청을 받는 것만으로 br을 복호화하지 않음. Express 4.x(body-parser 1.x)는 br을 지원하지 않아 인바운드 경로에는 해당하지 않으나, 런타임이 취약하므로 fetch()/zlib 경로는 그대로 영향받음.

3. 조치 방법

[1순위] Node.js 런타임 업그레이드 (유일한 완전한 조치)

  • 26.x → 26.12.1
  • 24.x → 24.22.1 (최신 LTS)
  • 22.x → 22.23.4 (LTS)
  • 18.x / 20.x / 23.x / 25.x (EOL): 지원 라인(22 LTS 또는 24 LTS)으로 업그레이드
  • 컨테이너 이미지·SEA·pkg·Electron 등 Node 바이너리를 내장한 모든 산출물에 동일하게 적용
  • 업데이트 후 모든 Node 프로세스(PM2, systemd, 컨테이너 등) 재시작

현재 버전 확인

node -v
which -a node
# 컨테이너는 이미지별로 직접 확인 (호스트 패키지 인벤토리로는 누락됨)
docker run --rm <이미지> node -v

3-1. nvm 사용 시

nvm install 24.22.1          # 사용 중인 라인에 맞춰 22.23.4 / 26.12.1
nvm alias default 24.22.1
node -v

3-2. NodeSource (Debian / Ubuntu)

sudo apt-get update
sudo apt-get install --only-upgrade nodejs
node -v
# 라인(major) 변경이 필요하면 NodeSource setup 스크립트를 해당 라인으로 재실행

3-3. NodeSource / AppStream (RHEL / Rocky / AlmaLinux)

sudo dnf update nodejs
node -v
# RHEL AppStream 모듈 사용 시 활성 모듈 확인
dnf module list nodejs

3-4. Docker

# 베이스 이미지의 실제 node 버전 확인
docker run --rm <이미지> node -v

# 패치 태그로 재빌드 후 컨테이너 재생성
docker pull node:24.22.1-bookworm-slim
docker build --pull -t <앱이미지> .
docker compose up -d --force-recreate

3-5. Windows / Bun

  • Windows: nodejs.org 다운로드 페이지에서 수정된 설치 파일(22.23.4 / 24.22.1 / 26.12.1) 설치
  • Bun: bun upgrade 로 1.4.4 이상으로 올린 뒤 bun -v 확인

[패치 불가 시 임시 완화 조치]

※ 공격 위험을 줄일 뿐 완전한 조치가 아니며, Node.js 공식 권고는 런타임 자체 설정으로는 완화가 불가능하다고 명시함. 아래는 애플리케이션·네트워크 레벨의 임시 조치임.

  • (인바운드) 웹방화벽에서 Node 백엔드로 향하는 요청 중 Content-Encoding: br 헤더를 차단
    • 브라우저는 요청 바디를 br로 압축해 보내지 않으므로 오탐이 거의 없음(자체 SDK/모바일 앱의 압축 업로드 사용 여부만 사전 확인)
    • Accept-Encoding: br은 정상 헤더이므로 절대 차단 금지 (요청의 Content-Encoding만 차단)
  • (인바운드) body-parser에 inflate: false 설정 시 압축 바디 전체(gzip 포함)를 415로 거부
  • (아웃바운드) fetch() 경로는 인바운드 WAF로 막을 수 없음 → 이그레스 목적지 화이트리스트 적용 + 신뢰 경계 밖 URL 호출 제한

4. 아이티이지 대응 현황

  • 위협 정보 지속 팔로업
  • 긴급 WAF 차단 패턴 제작 완료 및 관제 대상 장비에 즉시 적용 중 (Content-Encoding: br 요청 기반 차단 룰)
  • 공개된 PoC 및 기술 분석 내용을 바탕으로 관제 시스템 탐지 정책 반영
  • 관제 대상 중 Node.js 사용 자산 식별 및 영향도 점검 진행
  • 웹방화벽(WAF) 벤더사 시그니처 개발 및 대응 요청

5. 참고 자료

아이티이지는 본 취약점과 관련된 추가 동향을 지속적으로 모니터링하고 있으며, 변동 사항이 생기면 신속하게 다시 안내드리겠습니다.

감사합니다.

이전 글 이전 글이 없습니다.
다음 글 PHP 보안취약점(PHP2Shell) 관련 기업 보안 대응 수칙

2026. 10. 22

목록

무엇이든 물어보세요

아이티이지 전문가가 궁금하신 점을 쉽고 빠르게 해결해 드리겠습니다.

고객센터 1600-8324
내선번호
  • 내선 1 서버 / IDC

  • 내선 2 클라우드

  • 내선 3 관리대행 / ITO

  • 내선 4 도메인

  • 내선 5 보안 서비스 문의

  • 내선 6 문자 / 카카오비즈메시지

  • 내선 7 Microsoft365

  • 내선 8 마케팅/서비스 제휴

  • 내선 9 홈페이지 제작

  • 내선 0 기타서비스

  • 내선 11 긴급 장애

휴일 긴급 연락처010-3124-8320

평일 9:00~18:00 (IDC 긴급 장애처리 24시간 운영)

FAX 02-6264-8321

문의하기