CVE-2026-64269 in Linuxالمعلومات

الملخص

بحسب VulDB • 25/07/2026

في نواة لينكس، تم حل الثغرة التالية:

RDMA/rtrs-srv: تحديد طول عملية الكتابة عبر RDMA (RDMA-Write) بحجم الشريحة في دالة rdma_write_sg.

عندما ترد الخادم على طلب قراءة RTRS، تقوم الدالة `rdma_write_sg()` ببناء مدخلات التشتت/التجميع (scatter/gather entry) الخاصة بالمصدر لعملية الكتابة عبر RDMA (`IB_WR_RDMA_WRITE`) التي تعيد البيانات إلى النظير البعيد. يتم أخذ طولها مباشرة من واصف الشبكة:

```c plist->length = le32_to_cpu(id->rd_msg->desc[0].len);
```

يشير `rd_msg` إلى منطقة التخزين المؤقت للشريحة (chunk buffer) التي ملأها النظير البعيد عبر عملية "الكتابة مع فوري" في RDMA (`RDMA-WRITE-WITH-IMM`)، وذلك من خلال التسلسل: `rtrs_srv_rdma_done()` -> `process_io_req()` -> `process_read()`. وبالتالي، فإن قيمة `desc[0].len` تخضع لسيطرة المهاجم، وقبل هذا التعديل كانت تُرفض فقط إذا كانت صفراً. عنوان المصدر هو بداية الشريحة الثابتة (`dma_addr[msg_id]`) ومعرف المفتاح المحلي (lkey) للمصدر هو `local_dma_lkey` واسع النطاق لوحدة الحماية (PD)، وهو غير مرتبط بتعيين وحدة الذاكرة المخصصة للشريحة (MR mapping). لذلك، لا تفرض طبقة الأوامر (verbs layer) قيداً على طول النقل ليتناسب مع الحد الأقصى لحجم الشريحة (`max_chunk_size`). بينما يتم تحديد قيمتي `msg_id` و `off` ضمن حدود عمق الطابور والحد الأقصى لحجم الشريحة في دالة `rtrs_srv_rdma_done()`، فإن حقل `desc[0].len` هو حقل منفصل لم يكن خاضعاً للتحقق من حجم الشريحة.

يمكن لنظير بعيد يعلن عن قيمة `desc[0].len` أكبر من `max_chunk_size` أن يجعل عملية الكتابة عبر RDMA المنشورة تقرأ ما بعد المنطقة المخصصة للشريحة. يعتمد السلوك الناتج على تكوين وحدة إدارة الذاكرة الإدخال/الإخراج (IOMMU): في حالة عدم وجود IOMMU أو عند العمل بوضع التمرير المباشر (passthrough mode)، قد يمتد القراءة إلى ذاكرة النظام المجاورة للشريحة وتُعاد للنظير البعيد، مما قد يؤدي إلى كشف ذاكرة المضيف؛ أما مع وجود IOMMU تحويلي (translating IOMMU) فمن المتوقع أن يحدث خطأ في الوصول خارج النطاق ويتسبب ذلك في انقطاع الاتصال. وفي كلتا الحالتين، يتجاوز النقل ما يسمح به البروتوكول ويتم تحفيزه من قبل نظير بعيد.

تم رفض طول الوصف الذي يزيد عن `max_chunk_size`، محاكاةً للقيد الموجود مسبقاً على `off >= max_chunk_size` في دالة `rtrs_srv_rdma_done()`. لا تتجاوز العملاء الشرعيون هذا الحد: حيث يضبط العميل قيمة `desc[0].len` لتكون مساوية لطول وحدة الذاكرة المخصصة (MR length) الخاصة به، وهو ما يتم تقييده عند الحد الأقصى لحجم الإدخال المتفاوض عليه (`max_io_size`)، والذي يساوي `max_chunk_size - MAX_HDR_SIZE`.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

مسؤول

Linux

حجز

19/07/2026

إفشاء

25/07/2026

الاعتدال

تمت الموافقة

إدخال

VDB-383058

EPSS

0.00679

KEV

لا

النشاطات

منخفض جدًا

المصادر

Do you need the next level of professionalism?

Upgrade your account now!