SK쉴더스 로고
ADT캡스캡스홈
SK쉴더스

Brotli 취약점, Node.js만 고치면 될까? 서비스가 노출되는 경로 3가지

위협 트렌드 | 2026.10.27
Brotli 취약점, Node.js만 고치면 될까? 서비스가 노출되는 경로 3가지

핵심 POINT

POINT 1

구글은 2026년 10월 22일 Brotli 압축 해제 기능에서 메모리 범위를 벗어난 쓰기 취약점이 발견됐다고 공개했습니다. 조작한 압축 데이터 하나로 서비스 중단, 메모리 노출, 원격 코드 실행까지 이어질 수 있습니다.

POINT 2

Node.js만의 문제가 아닙니다. 마이크로소프트도 .NET에서 같은 문제를 확인해 보안 권고를 냈습니다. 외부에서 받은 Brotli 데이터를 해제하는 기능이 있는 서비스라면 사용 중인 런타임과 설정을 확인해야 합니다.

POINT 3

KISA는 영향을 받는 버전을 사용 중이라면 최신 버전으로 업데이트하라고 권고했습니다. 수정 버전과 영향 대상을 먼저 확인하고, 업데이트가 늦어지는 .NET 앱은 마이크로소프트가 안내한 임시 조치를 검토할 수 있습니다.

‍

Brotli 취약점, Node.js만 고치면 될까? 서비스가 노출되는 경로 3가지

‍

구글(Google)은 2026년 10월 22일 CVE 기록을 통해 Brotli 디코더에서 발생하는 범위를 벗어난 쓰기(out-of-bounds write, 메모리 경계를 넘어 데이터를 쓰는 오류) 취약점 CVE-2026-111497을 공개했습니다. Brotli는 웹 서버와 브라우저가 전송량을 줄이려고 쓰는 압축 방식입니다. 조작된 압축 데이터를 해제하는 순간 인증 없이 메모리가 손상될 수 있고, 서비스 중단과 메모리 내용 노출, 원격 코드 실행으로 이어질 수 있다는 내용입니다. CVSS 4.0 기준 점수는 9.2(Critical)로 기재됐습니다.

Node.js 프로젝트는 하루 앞선 10월 21일 보안 릴리스에서 이 문제를 high 등급으로 분류하고 수정 버전을 배포했습니다. KISA는 10월 26일 Google 제품 보안 업데이트 권고를 통해 Brotli 최신 버전으로 업데이트하라고 안내했고, 마이크로소프트(Microsoft)는 10월 25일 .NET 보안 권고를 게시했습니다. 국내 언론도 10월 26일 Node.js의 Brotli 취약점을 잇달아 보도했습니다.

이 취약점은 Brotli 라이브러리를 쓰는 소프트웨어마다 영향이 달라질 수 있습니다. 이 글에서는 수정 버전과 영향 대상, 서비스가 공격에 노출되는 경로 3가지, 버전 확인 방법과 업데이트 전 조치, 기업이 점검할 항목을 차례로 살펴봅니다.

‍

■ Brotli 디코더란?

‍

Brotli는 구글이 개발한 데이터 압축 방식으로, 웹 서버와 브라우저가 주고받는 데이터의 크기를 줄이는 데 쓰입니다. 압축한 데이터를 받은 쪽은 이를 원래 모양으로 되돌려야 하는데, 이 압축을 푸는 부분이 Brotli 디코더(decoder, 압축 해제 기능)입니다. 압축 파일을 여는 프로그램과 같은 역할이라고 보면 이해하기 쉽습니다.

디코더는 받은 데이터가 정해진 형식을 따른다고 보고 메모리에 풀어 놓습니다. 이번 취약점은 형식이 잘못된 데이터가 들어왔을 때 디코더가 이를 오류로 걸러내지 못하고 계속 처리하다가 정해진 메모리 공간을 넘어 쓰게 되는 문제입니다. 같은 디코더를 여러 소프트웨어가 포함해 쓰기 때문에 Node.js와 .NET 등으로 영향이 이어졌습니다.

‍

■ Brotli 취약점, 무슨 일이 있었을까요?

메인보드에 꽂힌 메모리 모듈 중 하나만 주황색 조명이 비치는 모습

출처: AI(ChatGPT) 생성 이미지

CVE 기록에 따르면 영향을 받는 범위는 Google Brotli 1.0.3부터 1.2.0까지이고, 수정 버전은 1.0.10, 1.1.1, 1.2.1입니다. 공격자는 인증 없이 네트워크를 통해 조작한 Brotli 압축 데이터를 보내는 방식으로 공격할 수 있고, 이를 통해 인접한 메모리 상태 손상, 메모리 내용 노출, 서비스 거부, 코드 실행이 가능하다고 기록돼 있습니다.

Node.js 보안 공지는 원인을 이렇게 설명했습니다. 잘못된 블록 전환이 올바르지 않은 형식이라는 오류가 아니라 입력이 더 필요하다는 신호로 처리돼, 스트리밍 디코더가 8바이트짜리 내부 버퍼에 입력 데이터를 계속 덧붙이며 경계를 넘어 쓰게 된다는 내용입니다. 애플리케이션이 외부에서 온 Brotli 데이터를 node:zlib으로 해제하면 프로세스 메모리가 손상될 수 있습니다.

마이크로소프트는 .NET 보안 권고에서 같은 Brotli 디코더 문제가 .NET 런타임에도 있다고 밝혔습니다. 영향 대상과 수정 버전은 아래와 같습니다.

제품 영향 대상 수정 버전
Google Brotli 1.0.3 이상, 계열별 수정 버전(1.0.10, 1.1.1, 1.2.1) 미만 1.0.10 · 1.1.1 · 1.2.1
Node.js 22.x, 24.x, 26.x 22.23.4 · 24.22.1 · 26.12.1
.NET .NET 8, 9, 10 (.NET Framework는 영향 없음) 8.0.33 · 9.0.22 · 10.0.14

[표] 제품별 영향 대상과 수정 버전 (CVE 기록 2026.10.22, 연합뉴스 2026.10.26, 마이크로소프트 .NET 보안 권고 2026.10.25)

연합뉴스는 10월 26일 보도에서 Node.js 개발진이 위험도를 높음(High)으로 분류하고 위 버전에 대한 보안 패치를 배포했으며, KISA도 영향을 받는 Node.js 버전 사용자에게 최신 보안 업데이트 적용을 권고했다고 전했습니다. 같은 기사는 실제 공격 가능성이 서버의 압축 데이터 처리 방식과 실행 환경에 따라 달라진다고 설명했습니다.

‍

■ 서비스가 공격에 노출되는 경로 3가지

네트워크 스위치 포트에 연결된 주황색 광케이블 세 개가 세 방향으로 뻗은 모습

출처: AI(ChatGPT) 생성 이미지

Node.js와 마이크로소프트의 공지를 종합하면, 서비스가 외부에서 받은 Brotli 데이터를 해제하는 지점이 곧 공격이 닿는 입구입니다. 마이크로소프트 권고에 구체적으로 적힌 .NET의 사례를 바탕으로 세 가지로 나눠 보면 아래와 같습니다.

❶ 외부 요청 본문의 압축 해제

클라이언트가 Brotli로 압축한 요청 본문을 서버가 해제하는 경로입니다. .NET에서는 ASP.NET Core의 요청 압축 해제 기능을 켜고 Brotli(br)를 허용한 경우가 해당합니다. 마이크로소프트는 이 기능이 기본 설정에서는 꺼져 있어, .NET 패키지가 설치돼 있다는 것만으로 노출되는 것은 아니라고 설명했습니다.

❷ 외부 서버 응답의 자동 해제

서비스가 다른 서버에 요청하고 받은 응답을 해제하는 경로입니다. .NET에서는 HttpClient의 자동 압축 해제 설정에 Brotli가 포함된 경우가 해당합니다. 응답을 보내는 서버가 조작됐거나 공격자가 운영하는 서버라면 조작된 압축 데이터가 응답으로 올 수 있습니다. 이 설정도 기본값은 꺼져 있습니다.

❸ 압축 해제 기능을 직접 호출하는 코드

Node.js의 node:zlib 모듈로 Brotli 데이터를 해제하는 코드와 .NET의 BrotliStream, BrotliDecoder API를 직접 쓰는 코드가 여기에 해당합니다. Node.js 공지는 외부에서 온 Brotli 데이터를 이런 방식으로 해제하는 애플리케이션이 영향을 받는다고 설명했습니다.

세 경로 모두 외부에서 온 데이터를 해제한다는 점이 공통이며, 서비스가 이런 구조인지에 따라 실제 위험도가 달라집니다.

‍

■ 내 환경의 Brotli 버전 확인 방법

어두운 사무실 책상 위 와이드 모니터에 코드 편집기가 열려 있고 키보드가 놓인 모습

출처: AI(ChatGPT) 생성 이미지

운영 서버뿐 아니라 개발 PC, 빌드 서버, 컨테이너 이미지까지 사용 중인 런타임 버전을 함께 확인해야 합니다.

❶ Node.js 버전 확인

• node --version 명령으로 설치된 버전을 확인하고, 22.23.4, 24.22.1, 26.12.1보다 낮은지 비교합니다.

• 컨테이너로 배포한 서비스는 이미지 안에 들어 있는 Node.js 버전도 함께 확인합니다.

❷ .NET 버전과 설정 확인

• dotnet --list-runtimes 명령으로 설치된 런타임을 확인하고 8.0.33, 9.0.22, 10.0.14보다 낮은지 비교합니다.

• 서비스가 요청 압축 해제나 HttpClient 자동 해제에 Brotli를 포함했는지, BrotliStream 같은 API를 직접 쓰는지 코드와 설정에서 확인합니다.

• NativeAOT로 배포한 앱은 공유 런타임을 업데이트해도 이미 실행 파일에 포함된 디코더가 바뀌지 않습니다. 마이크로소프트는 패치된 패키지 버전으로 바꾼 뒤 다시 게시하고 재배포하라고 안내했습니다.

❸ Brotli 라이브러리를 직접 쓰는 소프트웨어

• KISA 권고에는 Brotli 1.0.3 이상 1.0.10 미만, 1.1.0 이상 1.1.1 미만, 1.2.0 이상 1.2.1 미만이 영향 대상으로 적혀 있습니다. 자체적으로 Brotli를 포함하는 소프트웨어는 사용 중인 버전이 이 범위에 있는지 제품 공지에서 확인합니다.

• 수정 버전 정보는 KISA 권고가 참고 사이트로 안내한 Brotli 공식 릴리스 페이지에서 볼 수 있습니다.

‍

■ 업데이트 전 .NET 앱에서 검토할 임시 조치

‍

마이크로소프트는 보안 업데이트를 설치하는 것이 권장 해결책이라고 밝히면서, 업데이트를 적용하기 전에는 공격자가 통제할 수 있는 Brotli 데이터를 해제하지 않도록 하라고 안내했습니다. 이미 Brotli 해제를 쓰는 앱에 한해 아래 방법을 제시했습니다.

• ASP.NET Core 요청 압축 해제를 이미 쓰고 있다면 기존 설정에서 br 항목만 제거합니다. 기본 제공되는 gzip과 deflate는 그대로 유지됩니다.

• HttpClient 자동 응답 압축 해제를 이미 쓰고 있다면 기존 핸들러 설정에서 Brotli 플래그를 제외합니다.

• BrotliStream이나 BrotliDecoder를 직접 쓰는 코드는 신뢰할 수 없는 Brotli 데이터를 넘기지 않도록 하고, 같은 데이터를 해제하는 다른 코드가 없는지 확인합니다.

마이크로소프트는 압축 해제를 쓰지 않던 앱에 이 설정을 새로 추가해서는 안 된다고 경고했습니다. 자동 압축 해제를 새로 켜면 Brotli를 제외하더라도 서비스 거부 위험이 생길 수 있기 때문입니다. 이런 변경은 일반 요청과 응답 처리에도 영향을 줄 수 있어 배포 전에 테스트가 필요합니다.

‍

■ 기업 보안 담당자의 점검 항목

‍

이번 취약점은 하나의 제품 문제가 아니라 여러 소프트웨어가 같은 라이브러리를 나눠 쓰는 구조에서 비롯됩니다. 아래 항목을 점검해 보세요.

• 서비스별로 Node.js와 .NET 런타임 버전을 자산 목록으로 정리합니다. 개발 PC와 빌드 서버, 컨테이너 이미지도 포함합니다.

• 외부 요청을 받는 서비스와 외부 서버의 응답을 처리하는 기능 가운데 Brotli 압축을 해제하는 곳이 있는지 찾아 우선순위를 정합니다.

• 수정 버전으로 업데이트한 뒤에는 해당 런타임을 쓰는 서비스를 다시 시작하거나 재배포하고, 컨테이너는 수정된 버전으로 다시 빌드합니다.

• 자체적으로 Brotli를 포함한 소프트웨어는 제품 공지를 확인해 1.0.10, 1.1.1, 1.2.1 이상이 적용됐는지 점검합니다.

SK쉴더스는 보안 컨설팅과 모의해킹, 관제 서비스를 통해 기업이 서비스의 오픈소스 의존성과 외부 입력 처리 구간을 점검하도록 지원하고 있습니다.

‍

■ 자주 묻는 질문

‍

Q. Brotli 디코더가 무엇인가요?

A. Brotli는 구글이 만든 데이터 압축 방식이고, 디코더는 압축된 데이터를 원래대로 풀어 주는 기능입니다. 이번 취약점은 형식이 잘못된 압축 데이터를 디코더가 제대로 걸러내지 못해 메모리 경계를 넘어 쓰는 문제로, 서비스 중단이나 원격 코드 실행으로 이어질 수 있습니다.


Q. Node.js를 쓰지 않으면 영향이 없나요?

A. 그렇지 않습니다. 취약점은 Node.js가 아니라 Google Brotli 디코더에 있어 1.0.3부터 1.2.0까지 버전을 쓰는 소프트웨어가 대상입니다. 마이크로소프트는 .NET에서도 같은 문제를 확인해 권고를 냈습니다.


Q. Node.js를 쓰면 모두 공격받을 수 있나요?

A. 연합뉴스 보도에 따르면 실제 공격 가능성은 서버의 압축 데이터 처리 방식과 실행 환경에 따라 달라집니다. Node.js 공지는 애플리케이션이 외부에서 온 Brotli 데이터를 해제하는 경우를 영향 조건으로 설명했습니다. 그래도 수정 버전이 나왔으므로 업데이트가 권고됩니다.


Q. 실제 공격에 악용되고 있나요?

A. KISA 권고와 Node.js, .NET 공지에는 실제 악용 사례가 언급되지 않았습니다. 다만 수정 버전이 공개됐고 원격 코드 실행 가능성이 있는 메모리 취약점이므로, 외부 입력을 받는 서비스부터 업데이트하는 것이 권고됩니다.


Q. .NET 앱은 모두 위험한가요?

A. 마이크로소프트는 ASP.NET Core와 HttpClient가 기본 설정에서는 Brotli를 자동으로 해제하지 않고, .NET Framework는 영향이 없다고 밝혔습니다. 요청 압축 해제나 HttpClient 자동 해제를 켰거나 BrotliStream 같은 API를 직접 쓰는 앱이 점검 대상입니다.


Q. 업데이트만 설치하면 끝인가요?

A. NativeAOT로 배포한 .NET 앱은 공유 런타임을 업데이트해도 이미 포함된 디코더가 바뀌지 않아, 패치된 버전으로 다시 게시하고 재배포해야 합니다. 그 밖의 환경도 업데이트한 런타임이 실제 서비스에 적용됐는지 확인이 필요합니다.


‍

[콘텐츠 출처]

KISA 보호나라, Google 제품 보안 업데이트 권고 (2026.10.26)

CVE Program, CVE-2026-111497 Out-of-Bounds Write in Google Brotli Decoder (2026.10.22)

Node.js, Wednesday, October 21, 2026 Security Releases (2026.10.21)

Microsoft Security Advisory CVE-2026-111497, .NET Brotli Decoder Out-of-bounds Write Vulnerability (2026.10.25)

연합뉴스, PHP 이어 Node.js도 보안 취약점…웹 서버 보안 비상 (2026.10.26)

  • #Brotli
  • #Node.js
  • #취약점

관련 서비스

더 많은 보안 인사이트

SK쉴더스 유튜브 채널에서 확인하세요.

SK쉴더스 유튜브 채널에서 확인하세요.
보안 트렌드와 대응방법

매월 뉴스레터로 확인하세요.

매월 뉴스레터로 확인하세요.