HTTP2Shell이라는 이름은 너무 포괄적이고 실제 문제를 전혀 설명하지 못함. 뒤에 다른 구성 요소가 없는 HTTP 서버까지 영향을 받는 건 아닐 텐데, 왜 HTTP를 문제의 주범처럼 내세우는지 모르겠음.
LLM이 초반 이해를 바탕으로 세션·이슈·PR 제목을 붙인 뒤, 나중에도 고치지 않는 경우를 흔히 봄. 제목 재검토를 요청하지 않고 사람도 검토하지 않으니 이런 이름이 그대로 남게 됨.
AI는 특히 이름 짓기에 서툰 편임. 내게는 클라이언트 이름으로 OpenAICompatibleEmbeddingClient를 제안했는데, 호환된다는 건 당연한 전제인데 굳이 Compatible을 넣을 이유가 있는지 의문임.
선정성을 노린 이름처럼 느껴짐.
서버가 POST 본문의 압축을 해제한다면, 다른 구성 요소가 없어도 실제로 영향을 받음.
같은 취약점을 다루는 Broccoli2Shell이라는 이름과 사이트가 훨씬 마음에 듦. https://broccoli2shell.com/.
Brotli 디코딩을 직접 수행하는 곳이라면 HTTP 없이도 공격할 수 있는 것으로 알고 있음. HTTP는 가장 흔하게 등장하는 경로일 뿐임.
인증 없이 양방향으로 가능한 원격 코드 실행으로 신고했다면서, 당시에는 보안 문제로 인식하지 못해 이제야 수정 릴리스가 나왔다는 게 이해되지 않음.
2월에 신고와 수정까지 이뤄졌는데 어떻게 아무도 심각성을 알아채지 못했는지 궁금함. AI로 자동화해 놓고 아무도 감독하지 않은 건가?
잘 쓰이지도 않는 요청 본문의 Brotli 압축을 이렇게 많은 구현이 지원한다는 게 놀라움. 응답 본문 압축만의 얘기가 아님.
다만 선정적인 설명에 가려져, 일반적인 설정에서 압축된 요청 본문을 지원하는 경우가 얼마나 되는지와 단순히 다른 용도로 Brotli를 쓰는 경우가 얼마나 되는지 구분하기 어려움. 후자도 문제지만 심각성은 크게 다름. 호들갑보다는 패치하고 넘어가면 됨.
서버가 Brotli를 암묵적으로 지원하는 게 문제인 듯함. 아무도 쓰지 않더라도 공격자는 그 기능을 악용할 수 있음.
그래서 우선 긴급 대응으로 리버스 프록시에서 차단함.
이 취약점에는 Brotli2Shell이라는 이름이 더 적절해 보임.
정확성보다 선정성을 우선한다면 그렇지 않음. HTTP는 누구나 들어봤지만 Brotli를 아는 사람은 드물기 때문임.
TLS를 종료하는 Amazon ELB 뒤에 Node.js 앱이 있다고 가정하면, 대부분의 구성에서는 ELB가 압축 해제를 처리하므로 앱은 영향을 받지 않는다고 이해하고 있음. 대체로 맞는 이해인가?
해당 소프트웨어의 구체적인 동작은 모르지만, 메시지 본문까지 디코딩한다면 오히려 의외일 것 같음. 본문 압축 해제는 TLS 종료와 별개이고 라우팅과도 무관해야 하므로, 여전히 취약할 것으로 예상함.
Python이나 Node.js 서버를 직접 노출하는 경우는 많지 않을 듯함. 항상 프록시나 클라우드 로드 밸런서 뒤에 둬야 함. Apache와 nginx는 기본 상태에서 Brotli를 처리하지 않음.
몇 달 전까지만 해도 패키지 업데이트 유예 기간을 두라는 조언이 대세였는데, 이제는 보안 취약점이 즉시 악용될 수 있어 계속 그 원칙을 무시하고 있음. 앞으로는 이게 일상이 될 듯함.
예전에는 매일 배포한다는 게 자랑거리였지만, 이제는 취약점 대응을 따라가기 위한 필수 조건이 될 듯함.
기사에서는 OpenAI가 2월에 발견했다고 하지만, 정확하지 않은 듯함. Google이 2월에 Brotli 소스를 수정하면서 이 문제도 해결했지만, 보안 문제인 줄 몰라 릴리스를 내지 않았던 것으로 이해함.
신고까지 됐다면서 아무도 보안 문제인 줄 몰랐다는 건 앞뒤가 맞지 않음. LLM이 다른 작업 중 곁다리로 수정하고, 아무도 검토하지 않은 건 아닐까 싶었음.
나중에 보니 실제 변경 설명은 유효하지 않은 스트림을 더 일찍 감지하고 보고한다는 내용이었음. 이 정도면 사람이 수정했을 수도 있겠음.
모든 Python 배포 환경과 설치 구성 목록을 확인했는데, Brotli 라이브러리가 설치된 곳이 하나도 없어 안도함. httpx, requests 같은 HTTP 라이브러리와 프레임워크는 Brotli를 선택적 의존성으로 취급하고, 설치 여부를 자동으로 감지함.
다른 취약점 때문에 대규모 패치를 진행하는 중이거나 시작하기 전에 알게 된 건 그나마 다행임. 패치 목록에 하나 더 추가하면 됨. 이번 주는 유난히 대응이 벅차게 느껴짐.