[C++] Bundled Brotli 1.0.9 is affected by CVE-2026-111497 (decoder out-of-bounds write)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 75/100
調査の方向性
まず cpp/thirdparty/versions.txt の Brotli の固定バージョンを確認し、同梱されているデコーダーのヘッダーを upstream の修正コミット 0ed4268a4401abcb4472096340477cf4af7d1a2b と照合してください。同梱バージョンを v1.2.1 に更新するか、修正を適用してから、関連する Brotli および Parquet または IPC のテストを実行してください。同梱デコーダーに、記載されたエラー定義を含む修正が反映され、影響を受ける圧縮ファイルが安全に処理されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
CVE-2026-111497 is an out-of-bounds write in the Brotli C decoder (c/dec/decode.c, versions 1.0.3 through 1.2.0). A crafted stream can request an impossible block switch, which the decoder mistakes for "needs more input". It then writes past the end of an internal 8-byte buffer. GitHub rates it 9.2 (CVSS 4.0), and Node.js shipped fixes for it on 2026-10-21.
cpp/thirdparty/versions.txt pins ARROW_BROTLI_BUILD_VERSION=v1.0.9, and that version is used whenever Brotli is built as a bundled dependency. In those builds, reading a Parquet or IPC file that contains Brotli-compressed data passes the file's contents to the decoder, so a crafted file can trigger the bug. Builds that link a patched system Brotli aren't affected.
Upstream fixed this in Brotli 1.0.10, 1.1.1 and 1.2.1 (fix commit). Updating the bundled copy to v1.2.1, or applying that commit, resolves it. A patched copy is easy to recognise: its decode.h defines BROTLI_DECODER_ERROR_FORMAT_BLOCK_SWITCH (-17).
References:
- Advisory: https://github.com/advisories/GHSA-9v8h-qqgm-4m35
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-111497
- Upstream release: https://github.com/google/brotli/releases/tag/v1.2.1
- Overview of affected software and bundled copies: https://broccoli2shell.com/
- 主要言語
- C++
- スター
- 17.2k
- フォーク
- 4.4k
- 平均マージ
- 3日 5時間
- マージ済み PR(30日)
- 76
環境構築
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
apache/arrow のほかの issue
-
Component: Continuous Integration Component: Documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
apache/arrow#54696 · コメント 2 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[R][Parquet] ParquetReaderProperties does not expose page_checksum_verification, so a corrupt page CRC reads silently再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープンComponent: R good-first-issue Type: enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/arrow#53138 · コメント 2 件 ·
メンテナーはふだん 1 日以内に返信
-
[C++][Python] IPC reader rejects a DictionaryEncoding without indexType, which the format allows対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンComponent: C++ Component: Python Type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信
-
[R] Silent loss of metadata integrity for date-time and numeric attributes in write_parquet()/read_parquet()再び着手できるかも @james-finn-travers が 27 日前に担当しましたが、オープン中のプルリクエストはありません。 オープンComponent: R Type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
apache/arrow#51695 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[R] Expose ignore_extra_columns and pad_short_rows CSV parse options対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンComponent: R good-first-issue Type: enhancement
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/arrow#51659 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
似ている issue
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
enhancement Ready for final check
難易度 2/5 1〜3時間 初心者へのやさしさ 79/100
mpogue2/SquareDesk#1818 · コメント 1 件 ·
-
launch-client --save-creds creates creds/<account>/ with mode 755, not 700対応中かも @metis-sprock が今日担当しました。 オープンbacklog bug
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
EchoTools/nevr-runtime#1471 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 66/100
メンテナーはふだん 2 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
iamankushpandit/Gume#231 ·
メンテナーはふだん 1 日以内に返信