المدونة / شرح ثغرات CVE

CVE-2025-37858: لماذا يجب توسيع نوع المعامل قبل الإزاحة؟

خطأ في عرض العملية الحسابية في JFS يوضح لماذا لا يجعل متغير وجهة من 64 بت عمليةً وسيطة من 32 بت آمنة تلقائياً.

أكملت دراسة الدكتوراه في أمن المعلوماتاجتزت المناقشة الجامعية · المناقشة النهائية للأطروحة لم تُجرَ بعد

الخلل: عرض العملية الوسيطة

تتعلق CVE-2025-37858 بحساب حجم مجموعة التخصيص في dbExtendFS() داخل الملف fs/jfs/jfs_dmap.c. استخدم الحساب التعبير 1 << l2agsize. يصف إعلان فريق Linux CVE إزاحات تتجاوز 31 بت في أنظمة 32 بت، مما يؤدي إلى سلوك غير معرّف وأحجام غير صالحة لمجموعات التخصيص.

التفصيل الدقيق هو التعبير نفسه. لا يصبح الثابت الصحيح 1 معاملاً من 64 بت لأن النتيجة ستُخزن لاحقاً في حقل أوسع. تُحسب الإزاحة أولاً ثم يُنفذ الإسناد. مراجعة نوع المتغير الوجهة وحده تتجاهل العملية التي تولّد القيمة.

الإصلاح: التحويل قبل العملية الحسابية

يحوّل التصحيح المعامل الأيسر إلى s64 قبل الإزاحة. تستخدم العملية بذلك العرض المقصود الذي يطابق حقل حجم مجموعة التخصيص. توضح المقارنة التالية تغيير التعبير الموثق في الإعلان.

تحويل نتيجة التعبير بعد حسابه يأتي متأخراً. تستحق هذه النقطة المراجعة أيضاً في الضرب وحساب أحجام الذاكرة المطلوب تخصيصها. وحتى النوع الوسيط الأوسع يحتاج إلى تحقق مناسب من المجال؛ فالتوسيع وحده لا يجعل كل مدخل ممكن آمناً.

- bmp->db_agsize = 1 << l2agsize;
+ bmp->db_agsize = (s64)1 << l2agsize;

مراجعة الحسابات تبدأ بالمعاملات

حدد الأنواع الفعلية للمعاملات وإشاراتها ومجال المدخلات المسموح لكل حساب حجم. افحص التعبير قبل الإسناد، بما في ذلك الترقيات والتحويلات الصريحة للأنواع. راجع تكوينات 32 و64 بت المدعومة عندما تؤثر في الأنواع أو سلوك البناء.

ينبغي لاختبارات الحدود فحص القيم حول الحد المقصود والتحقق من الحجم الناتج أو رفضه. يمكن لأدوات كشف أخطاء وقت التشغيل والتحليل الساكن دعم هذا العمل، لكن على المراجع ربط الحساب بالافتراضات التي تعتمد عليها العملية اللاحقة.

الأثر وحدود الاستنتاج

يصف الإعلان العام احتمال فساد نظام الملفات وتعطل النواة نتيجة حجم مجموعة غير صالح. لكنه لا يحدد تأثير تعبير يبدو مشابهاً في تطبيقك؛ إذ يتطلب ذلك تتبّع النتيجة إلى العمليات التي تستخدمها.

يفيد هذا النمط في مراجعة التطبيقات الأصلية التي تتعامل مع الأطوال والإزاحات والمخازن المؤقتة وبيانات ملفات غير موثوقة. يمكن لمراجعة أمان محددة النطاق فحص الحساب وعمليات الذاكرة أو التخزين التي يتحكم بها. ولحزم Linux المستخدمة فعلياً، راجع سجل CVE الحالي وإرشادات الموزّع لتحديد حالة الإصلاح.

المصادر

سجل الثغرة

CVE-2025-37858

ناقش هذا النوع من المراجعة

الخدمات
جميع المقالات