본문 바로가기

IT 이모저모

Node.js 노드투쉘 취약점 — 내 버전이 대상인지 1분 확인법

💻 확인해 보니, 제 작업용 PC의 Node.js도 대상이었습니다

 

뉴스를 보고 명령창에 node -v를 쳐 봤습니다.

결과는 v24.22.0. 이번에 패치된 24.22.1보다 한 단계 낮은 버전입니다.

 

PHP 취약점으로 웹 서버 관리자들이 바빴던 한 주였는데, 이번엔 Node.js입니다.

무엇이 문제이고, 어떤 서버가 특히 조심해야 하며, 내 버전은 어떻게 확인하는지 차례로 적어 봅니다.

 

1. 어떤 취약점인가

CVE-2026-111497, 일명 노드투쉘

노드투쉘 취약점 개요 [01]

 

Node.js 프로젝트는 10월 21일(수) 보안 공지에서, Node.js에 함께 들어 있는 브로틀리(Brotli) 압축 해제 기능에 결함이 있다고 밝혔습니다.

조작된 압축 데이터를 풀게 만들면 메모리가 망가지고, 그 결과 서버가 멈추거나 메모리 내용이 새거나, 최악의 경우 원격으로 코드가 실행될 수 있다는 설명입니다.

 

항목 내용
공지 10월 21일(수), Node.js 공식 보안 릴리스
위험도 Node.js 분류 "높음(High)" — CVE 기록상 CVSS 4.0 점수는 9.2
제보 오픈AI 코덱스 보안팀(OpenAI Codex Security)
대상 22.x · 24.x · 26.x 중 패치 이전 버전, 지원이 끝난 버전

 

이번 릴리스에서는 TLS 인증서 검증 관련 취약점 등도 함께 고쳐졌습니다. 고친 취약점 수는 공식 공지 11건, 일부 보도 10건으로 자료마다 다릅니다.

 

⭐ 2. 내 버전 확인하기

명령 한 줄이면 됩니다

계열별 패치 버전 [02]

 

명령창(PowerShell, 터미널)에서 아래처럼 입력하면 버전이 나옵니다.

 

입력 나오는 예
node -v v24.22.0

 

나온 숫자를 아래 표와 비교하면 됩니다.

 

계열 이번 패치가 들어간 버전
22.x 22.23.4
24.x 24.22.1
26.x 26.12.1
20.x 이하 등 지원 종료 Node.js 공식 패치 없음 — 22·24·26 계열로 옮기거나 OS 배포판·장기지원 업체의 패치 여부 확인

 

제 경우 24.x 계열이고 v24.22.0이라 24.22.1로 올려야 하는 대상이었습니다.

개인 PC에서 스크립트를 돌리는 정도라면 서버만큼 급하진 않지만, 업데이트는 해 두는 편이 마음 편합니다.

 

📌 서버 한 대만 보면 안 됩니다


개발 PC, 빌드 서버(CI), 도커 이미지 안의 Node.js까지 각각 따로 확인해야 합니다.
특히 node:24.22.0처럼 옛 버전 태그에 고정된 도커 이미지는 다시 빌드만 해서는 그대로입니다. 베이스 이미지 태그를 패치 버전으로 바꾼 뒤 빌드·배포해야 합니다.

 

3. 어떤 서비스가 특히 위험한가

공통점은 "밖에서 온 압축 데이터"

점검이 필요한 경우 [03]

 

결국 외부에서 들어온 브로틀리 압축 데이터를 Node.js가 푸는 순간이 위험 지점입니다.

 

경우 예
들어오는 요청 요청 본문 압축을 자동으로 풀어 주는 웹 프레임워크 설정
나가는 요청 내장 fetch나 HTTP 클라이언트 라이브러리로 외부 주소(웹훅, 사용자가 넣은 URL)의 응답을 받아 오는 경우
직접 처리 외부 데이터를 node:zlib으로 바로 압축 해제하는 코드

 

국내 보안업체 티오리는 개발자가 작성한 코드에 문제가 없어도 Node.js 실행 환경 자체의 결함 때문에 노출될 수 있다고 설명했습니다.

 

💡 실제 위험은 서버마다 다릅니다


보도에 따르면 실제 공격 가능성은 압축 데이터 처리 방식과 실행 환경에 따라 달라진다고 합니다.
다만 패치 하루 뒤 공격 재현 코드(PoC)가 공개됐다는 보도가 있어, 미루지 않는 편이 좋습니다. 10월 23일(금) 보도 기준으로 실제 악용 사례는 확인되지 않았습니다.

 

4. 바로 업데이트할 수 없다면

임시 완화와 무료 점검

패치가 최선입니다. Node.js 공식 공지는 별도 우회책을 제시하지 않았고, 아래는 보안업체·보도가 소개한 임시 방법입니다.

 

방법 한계
앞단(리버스 프록시·방화벽)에서 브로틀리 압축 요청 거부 들어오는 요청만 막음 — 밖으로 나가는 fetch 경로는 못 막음
티오리 "Node.js 가드" 온라인 진단 서비스 주소(URL)만 넣어 노출 위험을 무료 점검 — 최종 판단은 버전 확인으로

 

티오리는 10월 26일(월) 노드투쉘을 직접 재현·검증하고 기업·기관용 대응 방안과 함께 이 진단 서비스를 공개했습니다.

 

5. PHP 쪽은 어떻게 됐나

패치 뒤에 또 하나

PHP 취약점 흐름 [04]

 

PHP는 10월 21일(수) PHP2Shell로 불리는 취약점 2건(CVE-2026-109618, CVE-2026-109619)을 고친 업데이트를 냈습니다.

KISA는 10월 22일(목) 대응 수칙에서 8.5.12 · 8.4.27 · 8.3.36 · 8.2.35 이상으로 올리고, PHP 프로세스를 모두 재시작하라고 안내했습니다.

 

⚠️ 패치를 했어도 끝이 아닙니다


이후 세션 처리 과정의 원격 코드 실행 취약점이 추가로 발견됐는데, 기존 업데이트로는 해결되지 않습니다.
KISA는 보안 업데이트가 나올 때까지 파일 업로드 진행 상황 추적 기능(session.upload_progress.enabled)을 0으로 끄고 PHP 프로세스를 재시작하라고 권고했습니다.
PHP 개발팀은 특정 설정 조합에서만 영향을 받아 흔치 않다고 설명했고, 패치는 다음 정기 업데이트에 나올 예정입니다. PHP2Shell 대응 때 이미 이 설정을 껐다면 추가 조치는 필요 없습니다.

 

⭐ 6. 정리하면, 오늘 할 일

서버 담당자 체크리스트

오늘 할 일 [05]

 

순서 할 일
1 node -v로 서버 · 개발 PC · CI · 컨테이너의 버전 확인
2 22.23.4 / 24.22.1 / 26.12.1 이상으로 올리고 프로세스 재시작
3 지원 종료 버전(20.x 이하 등)은 지원 계열로 이전
4 당장 못 올리면 앞단에서 브로틀리 압축 요청 차단 (임시)
5 PHP 서버는 패치 + 재시작, KISA 권고에 따라 업로드 진행 추적 기능 끄기

 

제 PC도 오늘 24.22.1 이상으로 올릴 생각입니다. 업데이트 뒤 node -v를 한 번 더 쳐서 숫자가 바뀌었는지 확인하는 것까지가 끝입니다.

 

📌 3줄 요약

 

1. Node.js 노드투쉘(CVE-2026-111497) — 브로틀리 압축 해제 결함으로 원격 코드 실행까지 가능, 위험도 "높음"!

2. node -v로 확인 → 22.23.4 / 24.22.1 / 26.12.1 이상이 아니면 업데이트 후 재시작!

3. PHP는 패치 뒤 세션 취약점이 추가로 나와, KISA는 업로드 진행 추적 기능을 끄라고 권고!

 

세션 취약점 패치가 나오거나 실제 공격 소식이 들리면 이어서 적겠습니다.

 

※ 이 글은 2026년 10월 26일(월) 기준 Node.js 공식 보안 공지, KISA 보호나라 공지와 언론 보도를 정리한 것입니다. 공격 방법은 다루지 않으며, 서버별 실제 위험은 환경에 따라 다릅니다. 정확한 내용은 nodejs.org 보안 공지와 KISA 보호나라(boho.or.kr)에서 확인해 주세요.

 

태그

#Nodejs #노드투쉘 #Node2Shell #CVE-2026-111497 #Nodejs취약점 #PHP2Shell #PHP취약점 #서버보안 #KISA #보안업데이트 #한국살이이슈

반응형