일간
Broccoli2Shell 추적 페이지 — 한 CVE가 번진 곳을 한 장에, 7-Zip·DuckDB·Arrow는 아직
이 소식의 앞선 글 · Node2Shell에서 HTTP2Shell로 — Brotli 디코더 RCE가 Node를 넘어 Python·Bun·Envoy까지 (2026년 10월 24일)
어제 HTTP2Shell로 정리한 CVE-2026-111497의 추적 페이지입니다. Node2Shell이라는 초기 이름이 Broccoli2Shell로 바뀌었고, 이 사이트가 그 이름으로 영향 범위를 프로젝트별로 갱신하고 있습니다. 마지막 갱신은 10월 26일입니다.
왜 이 페이지인가
하나의 Brotli 디코더가 수십 개 프로젝트에 번들·링크·바인딩돼 있어, 취약점 하나의 "수정됐나"가 수십 개의 답을 갖습니다. 이 페이지는 그 답을 표로 유지합니다. 어제 글의 미수정 목록은 오늘 다를 수 있으므로, 자기 스택을 점검할 때는 글이 아니라 이 표를 보는 게 맞습니다.
10월 26일 기준 상태
수정됨
- Google Brotli: 1.0.10, 1.1.1, 1.2.1
- Node.js: 22.23.4, 24.22.1, 26.12.1 (25, 23, 20 이하는 EOL — 수정 없음)
- Python Brotli 1.2.1, brotlicffi 1.2.1.0
미수정으로 표시
- DuckDB, Apache Arrow, 7-Zip-zstd 등의 번들 복사본
Express 5.0.05.3.0, body-parser 2.0.02.3.0은 결함이 없으며 업그레이드로는 해결되지 않는다고 명시합니다 — 결함은 그 아래 Node의 zlib입니다.
페이지가 분명히 하는 것
- 발신 측 완화는 불완전합니다.
Accept-Encoding에서 br을 빼도 악의적 서버는 br 응답을 보낼 수 있습니다. WAF는 앱이 밖으로 가져오는 응답을 검사하지 못합니다. 라이브러리·런타임 업그레이드만이 완전한 해결입니다. - 수신 측은 프록시·로드밸런서·WAF에서
Content-Encoding: br요청 본문을 막을 수 있습니다. - Python 대안: 업그레이드가 어려우면
Brotli·brotlicffi를 제거합니다. urllib3·requests·aiohttp는 gzip·deflate로 대체됩니다. - 악용: Imperva가 코드 실행을 시연했으나 익스플로잇 비공개. 공개 PoC는 약화된 빌드에서만 코드 실행. 10월 22일 기준 실제 공격 보고 없음.
페이지에 없는 것
익스플로잇 세부, 실제 피해 사례, 각 프로젝트의 정식 수정 일정. "미수정"은 페이지 갱신 시점의 상태이고, 이후 상황은 각 벤더 advisory에서 봐야 합니다.
실무에서 할 일
어제 할 일을 했다면 오늘은 번들 복사본입니다. Node와 Python 패키지는 이름에 brotli가 있어 찾기 쉽지만, DuckDB·Arrow·ClickHouse·MuPDF·7-Zip은 안에 Brotli를 품고 있어 pip list에 안 나옵니다. 자기 스택에서 Brotli 스트림을 디코딩할 수 있는 입력 경로가 있는 것 — Parquet 파일의 brotli 압축 컬럼, 사용자가 올린 압축 파일 — 을 찾고, 그 라이브러리가 표에서 어느 칸인지 보세요. 신뢰하지 않는 입력이 거기 닿지 않으면 급하지 않고, 닿으면 벤더 패치 전까지 그 입력을 막아야 합니다.
2026년 10월 25일에 올라온 글
그날 대시보드 →이날은 이 글 하나입니다.
댓글
불러오는 중…