🇰🇷 한글 설명
Apache bRPC 1.18.0 미만 버전에서 발생하는 부적절한 권한 부여 취약점입니다. 공격자가 공개 포트를 통해 내부 전용으로 설계된 내장 서비스에 접근하여 민감한 런타임 정보를 탈취할 수 있습니다.
💡 쉬운 설명
원래 내부 직원만 볼 수 있도록 숨겨둔 관리자 메뉴가 외부 인터넷에서도 접속 가능한 상태로 노출된 보안 결함입니다. 이를 통해 공격자가 서버의 중요한 설정이나 상태 정보를 몰래 훔쳐볼 수 있습니다.
🇺🇸 원문 (English)
Improper authorization in Apache bRPC (versions < 1.18.0) on all platforms allows remote attackers to access builtin services through the public port.
Root Cause:
ServerOptions.internal_port is documented to make builtin services (and Tabbed services) reachable only from the internal port, and the HTTP/h2 dispatch path enforced this. However, all protobuf-based protocol dispatch paths (baidu_std, hulu_pbrpc, sofa_pbrpc, and the nshead-based protocols public_pbrpc, nshead_mcpack, nova_pbrpc and ubrpc2pb) computed the security_mode flag but never enforced it between method resolution and method invocation. Since builtin services share the method map with user services, a client able to reach the public port could invoke builtin services such as brpc.vars or hotspots by name over these pb protocols and disclose sensitive runtime information (metrics, flags, profiler data) that the operator intended to expose only via the internal port.
Affected Scenarios:
Use a bRPC server with ServerOptions.internal_port configured (or with builtin/Tabbed services otherwise expected to be gated by it) while the public port is reachable from an untrusted network and any pb-based protocol is enabled.
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/3511
📍 영향받는 시스템
Apache bRPC versions < 1.18.0
⚔️ 공격 벡터
공개 포트로 연결된 protobuf 기반 프로토콜을 사용하여 내장 서비스(brpc.vars 등)를 직접 호출
🛡️ 대응 방법
bRPC를 1.18.0 버전 이상으로 업그레이드하거나 제공된 패치를 적용하십시오.
🔧 검증 코드
출력된 버전 번호가 1.18.0 미만인지 확인하십시오.
python3 -c 'import brpc; print(brpc.__version__)' 2>/dev/null || echo 'brpc not found'