Apache bRPCで深くネストしたmcpackデータによりサーバーが停止する
概要
遠隔の攻撃者が、深くネストしたmcpackデータを送ることで、サーバーがスタックオーバーフローを起こして停止するおそれがあります。影響を受けるのは1.18.0より前のApache bRPCです。1.18.0以降へのアップデートか、修正パッチの適用で対処してください。
AI要約
外部の AI が作成した要約です。誤りを含むことがあります。重要な判断の前に、下の原文と参照URLを確認してください。
遠隔の攻撃者が、深くネストしたmcpackデータを送ることで、サーバーがスタックオーバーフローを起こして停止するおそれがあります。影響を受けるのは1.18.0より前のApache bRPCです。1.18.0以降へのアップデートか、修正パッチの適用で対処してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| Apache Software Foundation | Apache bRPC |
1.18.0 未満 |
1.18.0 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Uncontrolled recursion in the mcpack2pb component in Apache bRPC (version < 1.18.0) on all platforms allows remote attackers to make the server crash via sending deeply nested mcpack data.
Root Cause:
The bRPC mcpack2pb parser (used to serve nshead_mcpack / ubrpc / public_pbrpc requests) recursively parses nested objects and arrays without any depth limit. For a protobuf message that references itself (e.g. a repeated message field), the generated parser recurses once per nesting level of the incoming mcpack object. A deeply nested request makes the recursion grow unbounded, overflow the stack and crash the process.
Affected Scenarios:
Use bRPC server with a recursive-schema protobuf message to serve nshead_mcpack / ubrpc / public_pbrpc requests from untrusted network.
How to Fix:
(Choose one of the following options)
- Upgrade bRPC to version 1.18.0, which fixes this issue.
- Apply this patch: https://github.com/apache/brpc/pull/3499
Note:
No matter which option you choose, you should know that the fix enforces the documented parsing depth limit MAX_DEPTH (128) on the parse path, the same limit the serializer already applies. If your requests contain mcpack messages nested deeper than 128 levels, the request will be failed after applying the fix.
出典: NIST National Vulnerability Database NVD GitHub Advisory
参照URL
- web security@apache.org
- web nvd.nist.gov
- web github.com