مِخبارMIKHBAR
التطبيقات والبرامج

CodeQL 2.27.1 يضيف دعم Kotlin 2.4.20 واستعلامات C++

أطلقت GitHub تحديثاً جديداً لأداة CodeQL يركز على تحسين دقة التحليل الثابت ودعم إصدارات أحدث من لغات البرمجة.

CodeQL 2.27.1 يضيف دعم Kotlin 2.4.20 واستعلامات C++

تحديث CodeQL 2.27.1

أعلنت GitHub عن إطلاق الإصدار 2.27.1 من محرك التحليل الثابت CodeQL، وهو المحرك الأساسي الذي يقف خلف خدمة فحص الأكواد (Code Scanning) على المنصة. يهدف هذا التحديث إلى مساعدة المطورين في اكتشاف ومعالجة المشكلات الأمنية في أكوادهم البرمجية بشكل أكثر كفاءة ودقة. يتضمن التحديث تحسينات جوهرية في نماذج تدفق البيانات ودعم إصدارات أحدث من لغات البرمجة الشائعة. ويمكن الرجوع إلى GitHub Changelog للاطلاع على التفاصيل الأصلية للمصدر.

تحسينات في C/C++ وC#

أضاف فريق التطوير نماذج تدفق تلوث (taint flow models) لـ boost::asio::ip::basic_resolver::resolve، بالإضافة إلى ملخصات تدفق (flow summaries) لتقنيات مثل Bloomberg Development Environment وProtocol Buffers. كما تم تحسين نماذج تدفق البيانات لمكتبة Go القياسية 1.27، مما يشمل دوال مثل bytes.CutLast وnet/url.URL.Clone. كما تم توسيع نماذج تدفق البيانات لحزمة strings لتشمل دوال إضافية مثل Clone وCut وJoin. ويمكن الرجوع إلى Back to changelog للاطلاع على التفاصيل الأصلية للمصدر.

على صعيد C#، تم إضافة استعلام cs/linq/missed-firstordefault الذي يحدد حلقات foreach التي يمكن التعبير عنها بوضوح أكبر باستخدام طريقة LINQ FirstOrDefault. كما تم تعديل استعلامات cs/linq/missed-* لتجنب اقتراح إعادة كتابة lambdas التي التقطت معلمات in أو out أو ref، مما يمنع اقتراحات غير قابلة للتجميع. كما أصبح استعلام cs/web/missing-token-validation يكتشف ASP.NET Core AutoValidateAntiforgeryTokenAttribute عند تسجيله كفلتر MVC عام، مما يقلل من الإيجابيات الكاذبة.

دعم Kotlin وRust

يشمل التحديث إصلاحاً لاستخراج حجة Foo::class.java عند استخدام مُجمِّع Kotlin K2، مما يقلل من الإيجابيات الكاذبة في استعلامات مثل java/android/implicit-pendingintents. كما أصبح CodeQL يتعرف على خوادم Fastify المهيأة من خلال طرق قابلة للتسلسل مثل fastify().withTypeProvider()، مما يحسن من نسبة الإسناد للمسارات (route attribution) ويقلل من الإيجابيات الكاذبة عندما تحمي الإضافات المسارات بشكل عام.

في لغة Rust، تم إصلاح حل المسارات لمسارات m::{self} عندما يكون m trait. كما تمت إضافة نماذج تدفق بيانات لـ core::fmt::Write، مما يحسن من اكتشاف الثغرات حيث تُكتب بيانات ملوثة إلى مخازن مخرجات منسقة. يستخرج Rust الآن استخدام rust-analyzer الإصدار 0.0.347، مما يحدّث AST لمكتبة Rust بأنواع عقد جديدة وواجهات برمجية للوصول (accessor APIs).

تحسينات في GitHub Actions

أصبح استعلام actions/unpinned-tag لا يبلغ عن الإجراءات المثبتة (pinned) بواسطة إدخال صالح هيكلياً في .github/workflows/actions.lock للعملية (workflow) المحيطة. كما لا يبلغ الاستعلام عن مراجع المستودع الذاتي $/، مثل uses: $/path/to/action، لأنها تحل إلى نفس المستودع عند الالتزام (commit) الجاري وتكون مثبّتة بطبيعتها.

إدارة التوزيع والترقية

تقوم GitHub تلقائياً بنشر كل إصدار جديد من CodeQL لمستخدمي خدمة فحص الأكواد على github.com. أما مستخدمو GitHub Enterprise Server (GHES) 3.24 فسيشملون الوظائف الجديدة في CodeQL 2.27.1. إذا كنت تستخدم إصداراً أقدم من GHES، يمكنك ترقية إصدار CodeQL يدوياً. كما أصبحت سجلات NuGet الخاصة التي تم تفعيل خيار Replaces base فيها في إعدادات المستودع الخاص بالمنظمة تستبدل تغذيات NuGet الافتراضية عند تنزيل الاعتماديات، حتى عندما يهيئ مشروع تغذيات افتراضية صراحةً.

المصادر