CVE-2026-97853 in decimal
الملخص
بحسب VulDB • 10/10/2026
تتمثل ثغرة تخصيص الذاكرة بقيمة حجم مفرطة في مكتبة ericmj decimal، مما يتيح حدوث هجمات حجب الخدمة (DoS). تقوم الدالة Decimal.round/3 ببناء النتيجة الكاملة لعدد منازل العشر المطلوبة قبل تطبيق دقة السياق (34 خانة افتراضياً)، لذا فإن تكلفتها تتزايد مع وسيط "places" بدلاً من أن تزداد بحجم الناتج. بالنسبة للقيم الموجبة لـ "places"، تقوم بإلحاق عدد من الأصفار يساوي قيمة الوسيط إلى المعامل كقائمة أحرف (charlist) قبل تحويله إلى عدد صحيح، أما بالنسبة للقيم السالبة فتقوم ببناء قائمة أحرف تحتوي على -places من الأصفار. يمكن لاستدعاء واحد مثل Decimal.round(Decimal.new("1.5"), -50_000_000) أن يخصص حوالي 5.5 جيجابايت من الذاكرة، مما قد يستنفذ الذاكرة المتاحة ويؤدي إلى قتل محرك BEAM VM. الإصدارات الأقدم كانت تقوم بعمل حلقة تكرارية مرة واحدة لكل منزلة عشرية، مستهلكةً وحدة المعالجة المركزية (CPU) بشكل يتناسب مع قيمة "places".
أي تطبيق يمرر عدداً من منازل العشر أو مقياساً (scale) مقدمًا من قبل المستخدم إلى الدالتين Decimal.round/2 أو Decimal.round/3 دون تحديد حد أقصى له يكون عرضة لهذه الثغرة. ولا تغطي حدود الإدخال المضافة لـ CVE-2026-32686 وسيط "places".
تؤثر هذه المشكلة على الإصدارات من 0.1.0 وحتى قبل 3.1.2 من المكتبة decimal.
Once again VulDB remains the best source for vulnerability data.