2026년 10월 21일, Node.js가 22.x, 24.x, 26.x 라인에 보안 릴리스를 냈습니다. 수정 버전은 22.23.4, 24.22.1, 26.12.1이고, 공지된 취약점 10건 가운데 심각도 High가 4건입니다. 같은 날 PHP도 긴급 릴리스를 내서 서버 운영자에게는 바쁜 하루였습니다. 이 글은 Node 서비스를 운영하고 있다면 오늘 확인할 것을 정리한 점검 가이드입니다. 내용은 2026년 10월 26일 기준입니다.

이번 릴리스에서 눈에 띄는 것

  • Brotli 디코더의 범위 밖 쓰기(CVE-2026-111497, High): node:zlib으로 신뢰할 수 없는 Brotli 데이터를 풀 때, 악의적으로 만든 입력이 크래시, 메모리 노출, 원격 코드 실행으로 이어질 수 있다고 공식 공지에 적혀 있습니다. 사용자가 올린 파일이나 외부 응답을 Brotli로 압축 해제하는 서비스가 해당합니다.
  • TLS 인증서의 IP 주소 검증 우회 계열(CVE-2026-105483, CVE-2026-106069, High): 모양이 특이한 IP 표기(숫자가 아닌 자릿수 문자, 앞에 0이 붙은 주소)를 호스트 이름이나 다른 주소로 해석해서 엉뚱한 인증서가 통과할 수 있습니다. 외부 주소에 TLS로 접속하는 서버 코드가 영향권입니다. CVE-2026-105483은 24.x와 26.x에 해당합니다.
  • dns 조회 시 호스트 이름이 NUL 문자에서 잘리는 문제(CVE-2026-105482, High): 검증한 이름과 실제로 조회되는 이름이 달라질 수 있습니다. 앞선 수정(CVE-2026-48930)이 불완전했던 건입니다.
  • 그 밖에 Medium 3건과 Low 3건이 함께 공지됐습니다.

공식 공지에는 업그레이드 말고 다른 임시 방어책이 없고, 실제 악용 여부는 언급이 없습니다. 지원이 끝난 버전은 보안 릴리스의 영향을 항상 받는다고도 적혀 있습니다. 올해 보안 릴리스는 3월 24일, 6월 18일, 7월 29일, 10월 21일에 있었으니, 한 번 올리고 끝나는 게 아니라 정기적으로 반영하는 체계가 필요합니다.

내 버전은 언제까지 지원받나

  • 18.x: 2025-04-30에 종료
  • 20.x: 2026-04-30에 종료 (이미 지났습니다)
  • 22.x: 2027-04-30까지
  • 24.x: 2028-04-30까지
  • 26.x: 2029-04-30까지 (10월 28일 LTS 전환 예정)

이번 10월 릴리스의 수정 대상은 22, 24, 26 라인뿐입니다. 20 이하를 쓰고 있다면 이번 수정을 받을 방법이 공식적으로는 없습니다. 위 날짜는 Node.js 릴리스 일정표 기준이며, 일정은 바뀔 수 있다고 문서에 명시되어 있으니 업그레이드 직전에 한 번 더 확인하세요.

오늘 확인할 5가지

  1. 실제로 실행 중인 버전: 서버에서는 node -v로 충분하지만, 컨테이너는 이미지 안의 버전을 봐야 합니다. docker exec 컨테이너이름 node -v로 확인하세요. 호스트에 깔린 Node와 컨테이너 안의 Node는 다를 수 있습니다.
  2. 버전을 적어 둔 곳이 서로 같은지: Dockerfile의 FROM node:..., CI의 setup-node 설정, .nvmrc, package.json의 engines가 서로 다른 버전을 가리키는 경우가 흔합니다.
  3. 20 이하라면 업그레이드 계획: 24는 2028년 4월까지 지원됩니다. 한 번에 메이저를 건너뛰는 것이 부담이면 22를 거치는 방법도 있지만 22는 2027년 4월에 끝납니다.
  4. 이번 취약점에 닿는 코드가 있는지: Brotli 압축 해제(zlib.brotli로 시작하는 함수), 외부 주소에 접속하는 https/tls 코드, dns 조회 코드가 있는지 검색해 보세요.
  5. 재빌드 일정: 이미지 태그를 node:24-alpine처럼 메이저까지만 적으면 다시 빌드할 때 최신 패치가 들어옵니다. 반대로 재빌드하지 않으면 예전 패치에 머뭅니다. 보안 릴리스가 나온 날에는 재빌드와 배포 일정을 잡는 습관이 필요합니다.

메이저 버전을 올릴 때의 순서

  • 의존성 호환: 네이티브 애드온(빌드 단계에서 컴파일하는 패키지)이 있는지 설치·빌드 로그로 확인합니다. 순수 자바스크립트 패키지만 쓰면 부담이 훨씬 작습니다.
  • 시험과 실제 기동 확인: 단위 시험만 통과해서는 부족합니다. 새 버전으로 이미지를 만들어 격리된 환경에서 띄우고, 헬스 체크와 실제 연결(웹소켓이라면 핸드셰이크)까지 확인하세요.
  • 되돌릴 길 확보: 교체 전 이전 이미지에 별도 태그를 붙여 두고, 교체 뒤 응답이 달라지면 그 태그로 복원합니다.
  • 서비스 하나씩: 여러 서비스를 한꺼번에 올리면 문제가 났을 때 원인을 가르기 어렵습니다.

서버 구성이 복잡하거나 업그레이드할 일정과 인력이 빠듯하다면, 포르본허가 Node 버전 점검, 업그레이드 시험, 롤백 계획까지 언제든 도와드릴 수 있습니다. 아래 문의 양식에 상황을 간단히 남겨 주세요.

참고 자료