🔍 CVE-2026-86146

0.0
CVSS Score
UNKNOWN
2026-10-21
2026-10-22 16:56
✅ 완료

🇰🇷 한글 설명

Apache bRPC 1.18.0 미만 버전의 HTTP/1.1 파서에서 HTTP 요청/응답 해석 방식의 불일치로 인해 발생하는 HTTP 요청 스머글링 취약점입니다. 공격자는 프록시나 로드 밸런서와 bRPC 간의 파싱 차이를 이용하여 요청을 숨기거나 헤더를 주입할 수 있습니다.

💡 쉬운 설명

웹 서버와 앞단의 전달자(프록시)가 서로 다른 방식으로 데이터를 읽어서 발생하는 보안 문제입니다. 이를 통해 공격자는 몰래 명령을 숨겨 보내거나 가짜 정보를 끼워 넣을 수 있습니다.

🇺🇸 원문 (English)

Inconsistent interpretation of HTTP requests (HTTP request/response smuggling) in the bundled HTTP/1.1 parser of Apache bRPC (version < 1.18.0) on all platforms allows remote attackers to smuggle requests and inject headers when bRPC is deployed behind a proxy or load balancer that parses the same bytes differently. Root Cause: The bRPC fork of http-parser accepts and acts on several HTTP/1.1 header forms that a conforming front-end either rejects or interprets differently, so the framing or the header set of a message can differ between the front-end and bRPC: 1. A space before the colon of framing headers (e.g. Content-Length : 5) is accepted; the value still drives bRPC's framing while the reported field name contains the trailing space. 2. Interior spaces inside a Content-Length value (e.g. Content-Length: 1 3) are skipped, so bRPC reads 13 where a front-end reads 1 or rejects the message (same class as CVE-2022-32213 in Node.js). 3. Obsolete line folding (obs-fold, RFC 7230 3.2.4) of Content-Length and Transfer-Encoding values is accepted, so a folded framing value drives bRPC's framing while a front-end that does not unfold sees a different message. 4. Chunked trailer fields are fed to the same header callbacks as the header section and are merged into the header map like real headers. A front-end only inspects the header section, so any chunked request can smuggle fields such as Authorization or X-Forwarded-For past it. 5. Transfer-Encoding lists with optional whitespace after a comma (e.g. Transfer-Encoding: gzip, chunked) are not recognized as chunked: such requests are rejected, and responses are read until connection close instead of as chunked, causing response desync. Affected Scenarios: bRPC server or client communicating over HTTP/1.1 with a front proxy, load balancer, or any peer that parses the message independently. An attacker able to send requests through the front-end can desynchronize the two parsers to smuggle requests, forge headers (e.g. Authorization, X-Forwarded-For) via chunked trailers, or desynchronize responses. How to Fix: (Choose one of the following options) 1. Upgrade bRPC to version 1.18.0, which fixes this issue. 2. Apply this patch: https://github.com/apache/brpc/pull/3521 Note: After applying the fix, the four header forms above are rejected by default and chunked trailers are dropped instead of merged into the header map. Two gflags are provided for compatibility: http_allow_obs_fold=true restores acceptance of folded Content-Length/Transfer-Encoding values, and http_strict_header_token=true additionally rejects spaces inside any header field name (not only the ones that decide framing). Legitimate clients that do not use these obsolete forms are unaffected.

📍 영향받는 시스템

Apache bRPC version < 1.18.0

⚔️ 공격 벡터

프록시와 bRPC 간의 HTTP 헤더 해석 차이를 이용한 요청 스머글링 및 헤더 주입

🛡️ 대응 방법

bRPC를 1.18.0 버전 이상으로 업그레이드하거나 제공된 패치를 적용하십시오.

🔧 검증 코드

출력된 버전이 1.18.0 미만인 경우 해당 취약점에 노출된 상태입니다.

Shell / Script
brpc_version_cmd --version 2>/dev/null | grep -E '1\.[0-9]+(\.[0-9]+)?'

💻 영향받는 소프트웨어

Node.js