
يوفر حلاً سريعًا لخلل خطأ التجزئة (segfault) في روبي (CVE-2009-1904)
h1. إصلاح خطأ التجزئة في BigDecimal
يوجد خطأ تجزئة في مكتبة big decimal الخاصة بـ ruby ويمكن للمستخدمين استثارته بتقديم قيم معروفة بأنها سيئة. إذا كنت ترغب في اختبار ما إذا كان تطبيقك آمنًا، فشغّل +example.rb+. يجب أن يخرج هذا السكربت بشكل طبيعي، دون حدوث خطأ تجزئة.
يترتب على الحل البديل آثار جانبية سلبية. وتحديدًا، يمنعك من استخدام BigDecimal للتعامل مع الأعداد الكبيرة (أكثر من 255 رقمًا) أو من تقديم الأعداد بالترميز العلمي (مثل "5E6" للدلالة على 5000000). إذا كنت بحاجة إلى هذه الميزات، فيجب عليك الترقية إلى إصدار ruby مُرقَّع.
يُنصح بشدة بترقية ruby باتباع "التعليمات الموجودة على موقع ruby":http://www.ruby-lang.org/en/news/2009/06/09/dos-vulnerability-in-bigdecimal/. هذا الحل البديل مخصص للاستخدام المؤقت فقط.
h2. إصدارات ruby المتأثرة:
h3. سلسلة 1.8
h3. سلسلة 1.9
h2. تعليمات التثبيت
h3. التثبيت عبر Gem
يتوفر هذا الإصلاح كـ gem من github. لتثبيته، يجب تشغيل الأوامر التالية:
$ gem sources -a http://gems.github.com $ sudo gem install NZKoz-bigdecimal-segfault-fix
ثم أضف ما يلي في الكود الخاص بك:
gem 'NZKoz-bigdecimal-segfault-fix' require 'bigdecimal-segfault-fix'
h3. التثبيت عبر Rails Initializer
لتطبيق هذا الإصلاح على تطبيق Rails، يمكنك ببساطة نسخ ملف +bigdecimal-segfault-fix.rb+ إلى مجلد config/initializers الخاص بك.