تفوق فريق الكروسايدرز أوف رست على تحدِّي الكيرنल سي تي أف باستخدام AVX512IFMA وأحرزوا مكافأة 51 ألف دولار
تلخيص خبر تقني: تحسين حل مسألة العمل الدليل باستخدام AVX512IFMA للفوز بجائزة قدرها 51,000 دولار مقدمة في مايو 2025، اكتشف زملائي في فريق "Crusaders of Rust"، ويليام ليو (FizzBuzz101) وسافي ديكانوسا (Syst3mFailure)، ثغرة "use-after-free" في جدولة حزم Linux. كان هدفهم الفوز بجائزة قدرها 51,000 دولار في مسابقة kernelCTF التي تنظمها Google. كان العثور على الثغرة وكتابة الاستغلال مجرد بداية، حيث يجب حل مسألة العمل الدليل (Proof of Work - PoW) والانتهاء من جميع الخطوات قبل أي فريق آخر. خطوات التسجيل الاتصال بالخادم: في تمام الساعة 12:00:00 بتوقيت UTC. حل مسألة العمل الدليل: تستغرق حوالي 4 ثوانٍ. انتظار تشغيل المثيلة الافتراضية: تستغرق حوالي 2.5 ثانية. تحميل الاستغلال وتشغيله: يستغرق حوالي 0.55 ثانية. إرسال الراية إلى نموذج Google: يتم تحديد الفائز بناءً على زمن الاستلام. التحدي الفريق المهني الذي فاز في الدورة السابقة استطاع إرسال الراية بعد 4.5 ثانية من منتصف الليل، وهو ما يشير إلى أنه كان able على حل مسألة العمل الدليل في أقل من ثانية. اعتقد المنظمون أنهم استخدموا مصفوفات بوابة مبرمجة (FPGAs) لتحقيق هذا الإنجاز. الخطة قررت تحسين حل مسألة العمل الدليل باستخدام امتدادات AVX512IFMA لـ Intel، والتي تهدف إلى تسريع عمليات الحساب الكبيرة. بدأت بترجمة الدالة إلى C++ لتحسين الأداء، ثم عملت على تحسين عملية الضرب المدولية (1280-بت). التحسينات الأولية تحسين الضرب المدولية: استخدمت خصائص الأعداد الميرسين (Mersenne numbers) لتقليل عدد العمليات الحسابية المطلوبة. ترجمة الدالة إلى C++: أزالت تكلفة التكامل مع Python (FFI overhead). بعد هذه التحسينات، تمكن الكود من حل مسألة العمل الدليل في 1.9 ثانية على جهاز MacBook Pro M1، ثم تم تحسينه ليصل إلى 1.4 ثانية على جهاز Intel Ice Lake. استخدام AVX512IFMA امتدادات AVX512IFMA تقدم تعليمات جديدة لتنفيذ عمليات الضرب والجمع المدمجة (Fused Multiply-Add) بفعالية عالية. قمت بتنفيذ الخوارزمية باستخدام هذه التعليمات لتحسين زمن الحل. تقسيم الأعداد إلى أطراف (Limb): قسمت العدد إلى 25 طرفًا، كل طرف يتكون من 52 بتًا، مما يتطلب أربع مجموعات من المسجلات (zmm). تحقيق التجميع: استخدمت تقنية النافذة المنزلقة (Sliding window) والقناع (Mask) لتحسين الأداء، مما قلل عدد العمليات الحسابية غير الضرورية. تحسين عملية الحد (Reduction): قمت بتطبيق عملية الحد المدولية (Modulo operation) بشكل أكثر فعالية باستخدام المسجلات الممتدة. بعد هذه التحسينات، استغرق حل مسألة العمل الدليل حوالي 0.45 ثانية على جهاز Ryzen 9950X. تحسينات إضافية إبقاء تعليمات الضرب والجمع في الطيران: زادت عدد المسجلات المستخدمة من سبعة إلى أربعة عشر، مما قلل زمن الحل إلى 0.32 ثانية. ضبط موزع المسجلات: استخدمت التجميع الداخلي (Inline assembly) لتجنب تكاليف ذاكرة التكدس (Stack spill and reload). إنشاء النوافذ بدون لمس الذاكرة: استخدمت تعليمات المحاذاة (valignq) لمحاكاة التحميل غير المحاذي (Unaligned load) مما قلل زمن الحل إلى 0.21 ثانية. يوم العرض في الساعة 4:30 صباحًا بتوقيت PST يوم 16 مايو، استعد أصدقائي لتقديم الاستغلال النهائي. استخدموا خادمًا من Google Cloud يعمل على Zen 5 ومقربًا جغرافيًا من خادم Google Form لخفض زمن ال latenency. عند الساعة 5:00، اتصلوا بالخادم، حلوا مسألة العمل الدليل، نفذوا الاستغلال، وأرسلوا الراية. تم تحقيق ذلك في 3.6 ثانية، وهو أسرع وقت تسجيل في تاريخ kernelCTF. أكد المنظمون فيما بعد أهلية الفريق للجائزة. نهاية عصر مسألة العمل الدليل في 28 مايو، أعلن منظم kernelCTF أن مسألة العمل الدليل سيتم إزالتها، مما يجعل السباق يعتمد بشكل أكبر على زمن الاستغلال و زمن الشبكة. التقييم والمشاركة يعتبر هذا الإنجاز مثالًا على كيفية تحقيق التفوق في مجال الأمن السيبراني من خلال التحسينات التقنية الدقيقة. شكراً لويليام وسافي على اكتشافهم والاستغلال، وللمدرب بريان تشين على تعليمه حول تحسين البرامج. نبذة عن الفريق فريق "Crusaders of Rust" هو فريق متخصص في البحث عن الثغرات واستغلالها. يضم الفريق باحثين متميزين مثل ويليام ليو وسافي ديكانوسا، الذين حققوا إنجازات كبيرة في هذا المجال. استخدم الفريق تقنيات متقدمة ومعرفة عميقة في الحوسبة الفائقة للفوز بالجائزة.
