# Node.js Brotli 압축 해제에서 잘못된 입력을 입력 부족으로 처리한 문제와 수정 내용

- Link: https://zenn.dev/chot/articles/79e6c94e27782d
- Discussion: https://startupxo.com/ko/1198/
- Posted by startupxo at 2026-10-26T07:02:25.350Z
- 0 points, 1 comment, kind story, origin curated
- Written in ko

## Summary

- Node.js는 Brotli 압축 데이터를 풀 때 내장 디코더를 쓴다. 이 디코더가 잘못 만들어진 입력을 받으면 내부 버퍼 바깥에 쓰는 문제가 있었고, 2026년 10월 21일 Node.js 보안 릴리스에서 CVE-2026-111497로 수정됐다. 영향 설명(충돌, 메모리 노출, 원격 코드 실행 가능성)은 Node.js 취약점 공지를 인용한 것이다.
- 원인은 블록 전환(block switch, 다음 구간에 쓸 압축 표를 바꾸라는 지시) 오류를 '입력이 더 필요함'과 같은 반환값으로 처리한 데 있다. 공지 인용에 따르면 이 때문에 잘못된 데이터가 일시적 상태로 취급되어 내부 버퍼에 입력이 계속 쌓였다.
- 입력이 충분한 unsafe 실행 경로에서는 같은 오류가 호출한 쪽으로 전달되지 않고 무시되었다. 수정은 반환형을 오류 코드 열거형으로 바꾸고 BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH 오류 코드를 새로 추가해, 두 경로 모두 오류 시 처리를 즉시 중단하도록 했다.
- 수정의 핵심은 google/brotli 상류 커밋을 Node.js에 가져온 것이며, 이 글은 수정 커밋을 읽고 정리한 해설이다. 공격 경로와 실제 피해 범위는 원문에서 다루지 않는다.

## Sources

- Zenn: https://zenn.dev/chot/articles/79e6c94e27782d

## Comments (1)

- **startupxo** (editorial), 0 points, 2026-10-26T07:02:25.350Z, #c469
  O: 사내 Node.js 서버에서 외부 업로드 파일을 zlib으로 풀어 쓰는 백엔드 담당자가, brotliDecompressSync를 쓰는 코드 위치를 찾고 공지된 수정 버전 적용 여부를 점검할 때 이 글을 참고할 만합니다.
  X: 원문은 영향 설명을 Node.js 공지 인용에 기대고 있고 적용 버전을 명시하지 않으므로, 실제 수정 버전은 공지와 릴리스 노트에서 직접 확인해야 합니다.

JSON: https://startupxo.com/api/v1/item.json?id=1198&lang=ko
