مِخبارMIKHBAR
الويب

CodeQL 2.27.2 يعزز تحليل C++ وGo وRust وJavaScript

يقدّم الإصدار الجديد تحسينات جوهرية في دقة الكشف عن الثغرات الأمنية ودعم لغات برمجية إضافية، مع تحديثات تقنية هامة لمطوري المنصة.

CodeQL 2.27.2 يعزز تحليل C++ وGo وRust وJavaScript

إطلاق الإصدار الجديد وتحسينات C++

أعلنت GitHub عن توفر الإصدار 2.27.2 من محرك CodeQL، وهو المحرك الأساسي الذي يقف خلف خدمة فحص الشيفرة (Code Scanning) على المنصة. يهدف هذا التحديث إلى تعزيز قدرات التحليل الثابت لاكتشاف ومعالجة المشكلات الأمنية في الشيفرة المصدرية. يركز الإصدار بشكل خاص على لغة C++ من خلال إضافة محلل جديد يعالج التعبيرات المنتظمة التي تستخدم قواعد ECMAScript ضمن مكتبة std::regex، مما يوسع نطاق الفحص الدقيق لهذه اللغة. ويمكن الرجوع إلى GitHub Changelog للاطلاع على التفاصيل الأصلية للمصدر.

تشمل حزم الفحص الافتراضية (Default suite) الآن 498 استعلاماً أمنياً تغطي 170 من نقاط الضعف الشائعة (CWEs)، بينما تضيف الحزمة الممتدة (Extended suite) 131 استعلاماً إضافياً تغطي 32 نقطة ضعف أخرى. هذه الأرقام تعكس التزام المنصة بتوسيع تغطية الفحص الأمني لتغطية سيناريوهات أكثر تعقيداً في تطوير البرمجيات. ويمكن الرجوع إلى Back to changelog للاطلاع على التفاصيل الأصلية للمصدر.

تحسينات تحليل Go وRust

شهدت لغة Go تحسينات ملحوظة في تتبع تدفق البيانات، خاصة عند استخدام كتل async مع كلمة await. كما أضاف المحلل ملخصات تدفق (flow summaries) لمكتبات native-tls وasync-native-tls وtokio-native-tls، مما يعزز دقة الكشف عن الثغرات المحتملة في التعامل مع الاتصالات الآمنة. بالإضافة إلى ذلك، أصبح CodeQL يدعم مسار الاستيراد github.com/coder/websocket إلى جانب nhooyr.io/websocket الشائع الاستخدام.

بالنسبة للغة Rust، يدعم المستخرج (extractor) الآن فئتي AnyAttr وDocComment، مما يوفر رؤية أعمق لبنية الشيفرة. كما تم تحسين نماذج حاقنات حقن SQL (SQL-injection sink models) لواجهة برمجة Comdb2 C API، وإضافة ملخصات تدفق لمفككات الشيفرة (codecs) ومفككات تدفقات البايتات في Bloomberg BDE، وهو ما يعزز الأمان في التطبيقات المالية المعقدة.

تحديثات JavaScript ودعم Workflow SDK

في مجال JavaScript، أصبح CodeQL قادراً على التعرف على توجيهات "use workflow" و"use step" الخاصة بـ Workflow SDK. كما تم تحسين تتبع معالجي المسارات (route-handler) ومداخل الطلبات في إطار Hapi، خاصة عند استخدام مساعدي تسجيل المسارات المخصصة والدوال ذات الرتبة الأعلى (higher-order functions). هذه التحسينات تساهم في تقليل الإنذارات الكاذبة وتحسين دقة التحليل في تطبيقات الويب الحديثة.

تشمل التحسينات الأمنية أيضاً تحديثاً لاستعلام cs/web/missing-x-frame-options ليتعرف على رؤوس استجابة ASP.NET Core وتعليمات frame-ancestors في سياسة أمان المحتوى (CSP) كحمايات ضد انتحال النقر (clickjacking). كما تم تعديل استعلام cs/web/xss ليتجاهل قيم سمات مساعدات الوسوم (tag-helper) المكتوبة عبر WriteLiteral في Razor، مما يمنع اعتبارها نقاط ضعف XSS بشكل خاطئ.

تغييرات بنيوية في رسم تدفق التحكم

أجرى المطورون تغييرات جوهرية على رسم تدفق التحكم (CFG) في Go من خلال استخدام مكتبة CFG المشتركة. يتضمن هذا التحديث إضافة عقد إضافية لبنى مثل الإسنادات والمعاملات والنتائج وبيانات range والاستدعاءات المؤجلة (deferred calls)، مع استبعاد العقد غير القابلة للوصول من نقطة الدخول. هذا التغيير يؤثر على مواقع العقد والحواف والتمثيلات النصية وحدود الكتل الأساسية (basic-block boundaries).

نظراً لتغير تمثيل CFG، قد يحتاج المطورون الذين يعتمدون على التمثيل السابق إلى تحديث استعلاماتهم. كما تمت إضافة دوال جديدة مثل ControlFlow::EntryNode وControlFlow::ExitNode وSwitchStmt.getExpr. وتم إهمال (deprecate) دالة IfStmt.getCond لصالح IfStmt.getCondition، مع تغيير أنواع الإرجاع لدوال IfStmt.getThen وLoopStmt.getBody إلى Stmt. ننصح بمراجعة سجل التغييرات التفصيلي لضمان توافق المشاريع الحالية.

تحديثات سطر الأوامر والأداء

أصبحت أداة سطر الأوامر (CLI) أكثر استقراراً من خلال الإبلاغ عن قيم qlpack: وfrom: غير الصالحة في حزم الاستعلامات كأخطاء واضحة بدلاً من التعطل (crashing). كما أصبح CodeQL يرفض أرقام امتدادات البيانات YAML خارج نطاق 32-بت الموقّع بدلاً من قص بعض القيم بصمت. تشمل التحديثات أيضاً إضافة بادئات ERROR: وWARNING: لرسائل الخطأ والتحذير على مخرج الخطأ القياسي، مع بقاء المخرجات المهيكلة مثل السجلات وSARIF دون تغيير.

دعم الأمر codeql query compile الآن خيار --dil-constants مع --dump-dil لتضمين مجموعات الثوابت المحسنة في DIL المُصدرة. كما أصبحت الأوامر التي تحميل امتدادات البيانات تحذر فقط عندما لا تطابق أي أنماط في قائمة dataExtensions لأي ملفات. هذه التغييرات تهدف إلى تحسين تجربة المطور وتسهيل تصحيح الأخطاء في إعدادات التحليل.

قيود دعم macOS وXcode

مع إصدار macOS 27 وXcode 27، توقفت Apple عن توزيع ثنائيات متعددة المعماريات (x86-64/arm64). تتطلب هذه الثنائيات CodeQL لأداء التحليل المراقب (traced analysis). نتيجة لذلك، لن يتم دعم وضعي البناء التلقائي (autobuild) واليدوي (manual build) للغات المدمجة على macOS 27 مع أي إصدار من Xcode، وعلى macOS 26 عند اختيار Xcode 27. يُنصح المستخدمين باستخدام macOS 26 وXcode 26 كحد أقصى عند استخدام أوضاع البناء هذه.

يعمل فريق التطوير على تحسين دعم وضع البناء none على macOS للتخفيف من هذه القيود. يجب على المطورين الذين يعتمدون على التحليل المدمج الانتباه لهذه التغييرات وتخطيط بيئات التطوير والاختبار وفقاً لذلك لضمان استمرارية عمليات الفحص الأمني دون انقطاع.

نشر الإصدار وإدارة الإصدارات

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

يمكن للمستخدمين أيضاً إزالة المالكين من مجموعة الثقة المستخدمة في استعلام actions/unpinned-tag عن طريق إضافة مدخل يبدأ بـ !، مثل !github. هذا يتيح الإبلاغ عن الوسوم غير المثبتة (unpinned tags) للمالكين من الدرجة الأولى (first-party owners)، مما يعزز أمان سلاسل التوريد البرمجية. للمزيد من التفاصيل التقنية، يمكن الرجوع إلى سجل التغييرات الرسمي.

المصادر

تابع التسلسل الزمني

تغطية الكيانات المرتبطة