brotli 버그 하나가 node와 Python 서버를 원격 코드 실행에 노출시켰다

Evolving Threat: http2shell is an RCE in node, Python, and more

http2shell로 명명된 이 취약점은 brotli 1.2.0 이하 버전에서 발생하는 원격 코드 실행 결함으로, node와 Python 등 여러 런타임에 영향을 준다. Python 패키지는 이미 1.2.1로 패치됐고, Rust의 brotli crate는 C 바인딩이 아니라 안전하다는 분석이 나온다. 다만 수정 커밋은 지난 2월에 이미 존재했는데도 보안 관련으로 인식되지 않아 릴리스에 포함되지 않았다는 지적이 나온다. 당장의 완화책은 양쪽에서 br 콘텐츠 인코딩을 끄는 것이다.

OpenAI의 트윗에 따르면 보안상 중요하다고 인식되지 않아 릴리스할 만큼 중요하지 않다고 판단했는데, 그들의 에이전트가 그것이 실제로 취약점임을 깨달을 때까지는 그랬다.
  1. mirashii

    이건 http2shell이 아니라 googlebrotli2shell이라고 불러야 할 것 같아요. 구글은 이 일로 평판에 어느 정도 타격을 받아 마땅합니다. 이건 기본적인 메모리 안전 위반이고, wuffs를 만들고, 메모리 안전을 위해 Rust를 장려하고, Carbon을 가진 바로 그 조직에서 나온 겁니다. zstd는 고품질 Rust 구현이 있고 대략 같은 시기에 나왔죠.

    게다가 brotli 라이브러리는 거의 꼬박 1년 동안 릴리스가 없었고, 이 취약점에 대한 수정은 2월에 이미 커밋되어 있었습니다. 구글은 모든 프로젝트를 main에서 빌드하기 때문에 영향을 받지 않았지만, 오픈소스 릴리스는 완전히 뒷전으로 밀려났어요. 잡다한 수정이 담긴 100개가 넘는 커밋이 보안 사고로 릴리스가 강제될 때까지 방치되어 있었습니다.

  2. ataraxia937

    이것도 다시 보니 과장된 느낌이에요, 적어도 서버 쪽에서는요. 방금 GitHub 저장소가 200개 넘는 조직을 확인해봤는데, Node, Python, C#이었어요. 그중 취약한 건 하나도 없었습니다... 왜냐하면 실제로 Brotli 디코더를 호출하는 곳이 없거든요. 플랫폼 자체가 서버 측에서는 기본적으로 활성화하지 않기 때문이에요. 이건 PHP 버그들과 비슷한데, 실제로 취약해지려면 특정 조건이 갖춰져야 하죠.

    클라이언트 쪽은? 물론 그게 더 큰 위험이죠. 패치하세요. 하지만 클라이언트가 공격자에게 접속하지 않는 한 공격자들이 당신의 클라이언트를 공격하지는 않습니다. 이걸 고치겠다고 밤새지 마세요.

    (그리고 네, 여기에 .NET도 포함됩니다. 마이크로소프트의 Brotli 모듈이 구글의 취약한 참조 구현에 대한 바인딩이거든요.)

  3. anonymous908213

    솔직히 말하면 모든 메모리 버그에 귀엽고 선정적인 이름을 붙이고 마케팅을 하는 건 없어도 될 것 같아요.

  4. rvanlaar

    brotli <= 1.2.0이 취약한 것 같습니다.

    Python 패키지는 이미 1.2.1로 업데이트되었습니다. https://pypi.org/project/brotli/1.2.1/

  5. hatthew

    보통 보안 이슈는 그렇게 많은 주목을 받지 못하는 것 같아요. PHP와 eMudhra 이슈는 심각해 보였고 주목받을 만했죠. 그런데 이런 것들은 잘 모르겠어요. 이게 심각한 이슈인가요? 아니면 요즘 웹 보안이 사람들 머릿속에 있어서 그냥 새롭기 때문에 뉴스 가치가 있는 평범한 이슈일 뿐인가요?

이 날의 다른 글

2026-10-24