
تحليل تأثير CVE-2026-25541 على البنية التحتية لـ Fuel (تجاوز عدد صحيح في bytes crate)
| الحقل | القيمة |
|---|---|
| CVE | CVE-2026-25541 |
| الحزمة | حزمة bytes (Rust) |
| الإصدارات المتأثرة | 1.2.1 ≤ الإصدار < 1.11.1 |
| الخطورة | حرجة (CVSS 9.8) |
| النوع | تجاوز عدد صحيح ← كتابة خارج الحدود |
| التصحيح | bytes >= 1.11.1 |
FuelLabs/fuel-block-committer يستخدم bytes 1.9.0 (عبر Cargo.lock)، وهو إصدار معرّض للثغرة.
يتوفر إصلاح منذ 14 أبريل 2026 عبر PR #254، لكنه لا يزال غير مدمج (أكثر من 68 يومًا).
تحتوي BytesMut::reserve() على تجاوز عدد صحيح في مسار الاسترداد الحصري:
// 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() إلى كتابات ذاكرة خارج الحدود.
تتعامل خدمة مُلتزم الحالة في block committer مع أجزاء كائنات EigenDA باستخدام مخازن BytesMut:
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).
يفحص الماسح:
bytescargo audit للتأكد من عدم وجود تبعيات أخرى معرّضة للثغرة| التاريخ | الحدث |
|---|---|
| 2026-02-03 | نُشر CVE-2026-25541 |
| 2026-02-03 | تم إصدار bytes 1.11.1 (الإصلاح) |
| 2026-04-14 |
أُجري هذا التحليل كجزء من بحث أمني مستقل. لم تُجرَ أي محاولة استغلال ضد أنظمة الإنتاج. تم الإفصاح المسؤول عبر تقرير 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 | تجاوز سعة مخزن الإطارات |
| Dependabot يفتح PR #254 على fuel-block-committer |
| 2026-06-22 | 68 يومًا دون تصحيح — هذا التحليل |