كشفت GitHub، المملوكة لشركة Microsoft، عن ثغرتين أمنيتين خطيرتين في مكتبة ruby-saml مفتوحة المصدر، والتي يمكن أن تسمح للمهاجمين بتجاوز إجراءات المصادقة المعتمدة على لغة SAML (Security Assertion Markup Language).
تُستخدم لغة SAML، وهي لغة قائمة على XML ومعيار مفتوح، لتبادل بيانات المصادقة والتفويض بين الأطراف، مما يتيح ميزات مثل المصادقة الموحدة (SSO)، التي تسمح للأفراد باستخدام مجموعة واحدة من بيانات الاعتماد للوصول إلى مواقع وخدمات وتطبيقات متعددة.
تم تعقب الثغرتين تحت معرفي CVE-2025-25291 وCVE-2025-25292، وحصلتا على تقييم CVSS بقيمة 8.8 من 10.0. تؤثر هذه الثغرات على الإصدارات التالية من المكتبة:
- الإصدارات الأقدم من 1.12.4
- الإصدارات من 1.13.0 إلى ما قبل 1.18.0
تفاصيل الثغرات
تنشأ الثغرتان من الاختلاف في طريقة تحليل مكتبتي REXML وNokogiri لملفات XML، مما يؤدي إلى إنشاء هياكل وثائق مختلفة تمامًا لنفس المدخلات. هذا الاختلاف في التحليل يتيح للمهاجمين تنفيذ هجوم يُعرف باسم Signature Wrapping، مما يؤدي إلى تجاوز إجراءات المصادقة.
تم إصلاح هذه الثغرات في إصدارات ruby-saml 1.12.4 و1.18.0.
تأثير الثغرات
قالت GitHub، التي اكتشفت وأبلغت عن الثغرات في نوفمبر 2024، إنه يمكن استغلالها من قبل الجهات الخبيثة لتنفيذ هجمات استيلاء على الحسابات.
وأوضح الباحث في GitHub Security Lab، بيتر ستوكلي، في منشور: “يمكن للمهاجمين الذين يمتلكون توقيعًا صالحًا واحدًا تم إنشاؤه باستخدام المفتاح المستخدم للتحقق من استجابات أو تأكيدات SAML الخاصة بالمنظمة المستهدفة، استخدامه لإنشاء تأكيدات SAML بأنفسهم، وبالتالي تسجيل الدخول كأي مستخدم.”
وأضافت GitHub أن المشكلة تكمن في “انفصال” بين التحقق من الهاش (Hash) والتحقق من التوقيع، مما يفتح الباب للاستغلال عبر الاختلاف في تحليل XML.
إصلاحات إضافية
تضمنت الإصدارات 1.12.4 و1.18.0 أيضًا إصلاحًا لثغرة رفض الخدمة عن بُعد (DoS) عند التعامل مع استجابات SAML المضغوطة (تم تعقبها تحت معرف CVE-2025-25293، بتقييم CVSS بقيمة 7.7). يُنصح المستخدمون بالتحديث إلى الإصدار الأحدث للحماية من التهديدات المحتملة.
خلفية عن الثغرات
جاء هذا الكشف بعد حوالي ستة أشهر من قيام GitLab وruby-saml بإصلاح ثغرة حرجة أخرى (تم تعقبها تحت معرف CVE-2024-45409، بتقييم CVSS بقيمة 10.0)، والتي يمكن أن تؤدي أيضًا إلى تجاوز إجراءات المصادقة.