
بقلم: ليلى | محررة أدوات المطورين · صوت تحريري بإشراف بشري
أصدر GitHub نسخة جديدة من CodeQL 2.26.0، المحرك الذي يقف خلف أداة GitHub code scanning، وجاءت هذه المرة بتحديث يلامس مباشرةً واحدة من أخطر الثغرات الناشئة في تطبيقات الذكاء الاصطناعي: حقن قيم خارجية غير موثوقة داخل system prompt الخاص بالنموذج، ما يفتح الباب أمام المهاجم للتحكم في سلوك النموذج بأكمله.
التحديث لا يقتصر على هذه النقطة. فهو يمتد عبر ست لغات ومنصات، ويعالج فجوات حقيقية في دقة التحليل — سواء بإضافة مصادر تدفق جديدة، أو بتقليل الإيجابيات الكاذبة التي طالما أزعجت الفِرق الأمنية. إليك ما الذي تغيّر بالتفصيل:
- كشف حقن System Prompt في JavaScript/TypeScript: الجديد الأبرز هو استعلام
js/system-prompt-injectionالذي يرصد متى تتدفق قيم مُدخلة من المستخدم إلى system prompt في النموذج دون تعقيم كافٍ. وبالتوازي، أضافت CodeQL مصارف injection جديدة تغطي واجهات برمجية إضافية من OpenAI (بما فيها Sora prompts وجلسات Realtime)، وAnthropic (completion prompts القديمة)، وGoogle GenAI (المحتوى المخزَّن مؤقتاً وتعليمات النظام). باختصار: إذا كنت تبني تطبيقاً يمرّر مدخلات المستخدم إلى أيٍّ من هذه SDKs، يستطيع CodeQL الآن تتبّع هذا التدفق واكتشاف نقاط الضعف. - دعم Kotlin حتى الإصدار 2.4.0: يدعم CodeQL الآن Kotlin 2.4.0 بشكل كامل، وهو أحدث إصدار مستقر من اللغة. هذا يعني أن مشاريع Android وKotlin Multiplatform التي رُقِّيت مؤخراً ستحصل على تحليل أمني دقيق دون الحاجة إلى الإبقاء على إصدارات قديمة من اللغة لتجنّب أخطاء التحليل.
- توسيع نطاق C# ليشمل Razor Pages: أضافت النسخة معالجات Razor Page كمصادر تدفق بعيدة، وتحديداً معاملات
OnGetوOnPostوOnPostAsyncفي PageModel subclasses. يعني هذا عملياً أن استعلامcs/sql-injectionوغيره بات قادراً على رصد الثغرات التي تدخل عبر هذه المعالجات — وهي نقطة دخول شائعة جداً في تطبيقات ASP.NET Core. - تغطية حزمة log/slog في Go: منذ إطلاق Go 1.21 تضمّ اللغة حزمة
log/slogالرسمية، لكن CodeQL لم يكن يُحللها. في هذه النسخة، أضافت GitHub نماذج لهذه الحزمة كاملةً، بما يشمل دوالslogوطرقslog.Logger، لتصبح استعلاماتgo/log-injectionوgo/clear-text-loggingفعّالة مع الكود الحديث المكتوب بـ Go. - استعلام تجريبي جديد لـ SSRF عبر IPv6: أُضيف استعلام
javascript/ssrf-ipv6-transition-incomplete-guardالتجريبي لرصد حالة خاصة وخطيرة: الحمايات ضد SSRF التي تحجب نطاقات IPv4 الخاصة لكن يمكن تجاوزها باستخدام صيغ عناوين IPv6 الانتقالية. هذا نوع من الثغرات يصعب رصده يدوياً، وهو شائع في تطبيقات تسمح للمستخدم بتحديد URLs. - تحسينات في الدقة عبر Python وSwift وGo وGitHub Actions: على صعيد تقليل الضوضاء، يتوقف استعلام
go/unhandled-writable-file-closeعن الإبلاغ عن تحذيرات خاطئة حين يتم استدعاءSyncقبلCloseعلى نفس الملف. كذلك لن يُبلّغ استعلامpy/modification-of-localsبعد الآن عن تعديلات على قاموسlocals()خارج نطاقه الأصلي. أما في Swift، فقد تُحسِّن نمذجة CryptoKit لاستعلامَيswift/weak-sensitive-data-hashingوswift/weak-password-hashing، مما قد يكشف نتائج إضافية لم تكن مرصودة سابقاً. وفي GitHub Actions، يتعرّف استعلامactions/pr-on-self-hosted-runnerالآن على أحدث تسميات الـ runners القياسية، فضلاً عن تصحيح اسم ووصف وتنبيهactions/untrusted-checkout/mediumليوضّح أنه يسري على السياقات غير المميّزة فقط.
من الجانب التشغيلي، يُنشَر CodeQL 2.26.0 تلقائياً لجميع مستخدمي GitHub code scanning على github.com دون أي خطوة إضافية. أما مستخدمو GitHub Enterprise Server فسيحصلون على التحديث ضمن إصدار GHES مستقبلي، وإن كانوا يشغّلون نسخة قديمة فبإمكانهم الترقية اليدوية الآن.
ما يستحق التوقف عنده هو الاتجاه الذي تسلكه GitHub: إضافة استعلام js/system-prompt-injection ليست مجرد ميزة تقنية، بل اعتراف صريح بأن تطبيقات الذكاء الاصطناعي باتت تُعامَل كسطح هجوم رسمي يستحق أدوات تحليل ثابتة مخصصة. إذا كنت تبني agents أو pipelines تمرّر فيها مدخلات المستخدم إلى نماذج LLM، فإن هذا الاستعلام يجب أن يكون جزءاً من خط الدفاع الأول — لا خياراً اختيارياً.







