
| 項目 | 値 |
|---|---|
| CVE | CVE-2026-25541 |
| パッケージ | bytes クレート (Rust) |
| 影響を受けるバージョン | 1.2.1 ≤ version < 1.11.1 |
| 深刻度 | 緊急 (CVSS 9.8) |
| 種別 | 整数オーバーフロー → 境界外書き込み |
| パッチ | bytes >= 1.11.1 |
FuelLabs/fuel-block-committer は、脆弱性のある bytes 1.9.0(Cargo.lock 経由)を使用しています。
修正は 2026年4月14日 から PR #254 で利用可能ですが、未マージのままです(68日以上)。
BytesMut::reserve() には、unique reclaim パスに整数オーバーフローがあります:
// bytes/src/bytes_mut.rs (v1.9.0)
if v_capacity >= new_cap + offset // ← unchecked addition: new_cap + offset can overflow
new_cap + offset が usize::MAX を超えてラップすると、この条件が誤って成立し、self.cap が実際の割り当てを超えて設定されます。その後の spare_capacity_mut() による書き込みは、メモリへの 境界外書き込み を引き起こします。
ブロックコミッターのステートコミッターサービスは、BytesMut バッファを使用して EigenDA ブロブフラグメントを処理します:
packages/services/src/state_committer/service.rs
→ submit_fragments()
→ fragment accumulation uses BytesMut for blob assembly
特定のフラグメントサイズを持つ細工された EigenDA レスポンスは、ブロブ再構築パスでオーバーフローを引き起こし、次の結果につながる可能性があります:
オーバーフローを示す最小限の PoC:
use bytes::BytesMut;
fn main() {
let mut a = BytesMut::from(&b"hello world"[..]);
let mut b = a.split_off(5);
drop(a);
b.reserve(usize::MAX - 6); // overflow: new_cap + offset wraps
b.put_u8(b'h'); // OOB write
}
デプロイメントが影響を受けているかどうかを確認するには、自動スキャナーを実行してください:
あなたの GitHub に接続し、Cargo.lock、デプロイメント設定、 およびランタイムの露出を分析します。結果は非公開の GitHub Issue として投稿されます。
スキャナーは以下をチェックします:
bytes クレートの使用cargo audit を実行し、他に脆弱性のある依存関係がないことを確認する| 日付 | イベント |
|---|---|
| 2026-02-03 | CVE-2026-25541 公開 |
| 2026-02-03 | bytes 1.11.1 リリース(修正) |
| 2026-04-14 | Dependabot が fuel-block-committer に PR #254 をオープン |
| 2026-06-22 |
本分析は独立したセキュリティ研究の一環として実施されました。本番システムに対する悪用は試みられていません。責任ある開示は GitHub Issue を通じて行われます。
CVE Impact Analyzer v2.1 によって生成されました
| ファイル | 関数 | リスク |
|---|
services/src/state_committer/service.rs | submit_fragments | フラグメントバッファのオーバーフロー |
services/src/block_bundler/bundler.rs | バンドル圧縮 | 圧縮バッファのオーバーフロー |
adapters/fuel/src/client.rs | GraphQL レスポンス解析 | レスポンスバッファのオーバーフロー |
adapters/eth/src/websocket/ | WebSocket フレーム処理 | フレームバッファのオーバーフロー |
| 68日間未パッチ — 本分析 |