خلال فترة امتدت أربع ساعات مساء 21 أغسطس, نشر موجز الثغرات الوطني الأميركي 12 سجل CVE تغطي ثمانية مشاريع في مجالات الذكاء الاصطناعي والتعلّم الآلي وأدوات الوكلاء. ولا واحد منها إفصاح جديد. ففي كل حالة كان التصحيح قد صدر بالفعل، وكان تنبيه المورّد قد أصبح علنيًا بالفعل — بفارق يتراوح بين 11 و118 يومًا.
أسوأ فجوة هي أسوأ خطأ
أطول تأخير يرتبط بأعلى تقييم. إن تنفيذ تعليمات عن بُعد بدرجة CVSS 10.0 في إطار خدمة النماذج Xinference يعود إلى سطر واحد — eval() مطبّق على ناتج استدعاء الأدوات الخاص بالنموذج نفسه — بحيث إن مطالبةً تدفع النموذج إلى إخراج استدعاء نظام تنفيذي تُشغِّله على الخادم. صدر الإصلاح في 25 أبريل; ونشر الصيانة التنبيه في 13 يوليو; ثم وصل CVE في 21 أغسطس، أي بعد 118 يومًا من التصحيح. ويقترض المشروع الآن ستة إصدارات فرعية من الإصلاح. كما أن تقييم 10.0 يفترض أيضًا الإعداد الافتراضي المشحون، الذي تكون فيه المصادقة متوقفة — ويذكر التنبيه ذلك صراحةً.
أربعة دفعة واحدة في حاضنة وكيل واحدة
أربعة من أصل 12 تعود إلى Omnigent، وهي حاضنة meta-harness مرتبطة بـ Databricks تنسّق وكلاء برمجة آخرين. والأكثر إثارة للاهتمام هو أحد ضوابط الحماية الذي يفشل منفتحًا: إذ يعيد محلّل أوامر shell-command لا شيء عندما يعجز عن تحليل أمر، لذا فإن أعلام المفسّر المجمّعة، ولفائف timeout وnice وsetsid وstdbuf، وإبدال الأوامر، ومُشغّل خلفي واحد، كلها تنتج "no parsed operation" — فتتراجع سياسة قائمة السماح للمستودع وسياسات حصر مساحة العمل وتسمح بذلك. ويذكر التنبيه أن وكيلاً مصدقًا عليه أو تم حقن مطالبة فيه يمكنه استخدام هذا لدفع تغييرات إلى مستودع غير مخوّل أو للهرب من مساحة العمل. ويُنسب المُبلِّغ حرفيًا إلى وكيل أمني ذاتي التشغيل. وهناك إدخال منفصل في إطار عمل Microsoft UFO يربط خادم وكيل محليًا بمنفذ لا يتحقق من Host ولا Origin، بحيث يمكن لأي صفحة ويب أن تعيد ربطه وتنفذ أوامر؛ وقد بقيت رسالة الإصلاح في المستودع 45 يومًا قبل أن تنقلها نسخة إصدار إلى المستخدمين.
ما يخطئ فيه التأطير الشائع
من يوم الاثنين ستُعرض هذه على أنها ثغرات حرجة كُشف عنها حديثًا في بنية الذكاء الاصطناعي التحتية. لكنها في الحقيقة مجرد لحاق الخلاصة بالواقع. وهناك أيضًا فخ لمن يتحقق: إذ تُرجِع واجهة برمجة التطبيقات الخاصة بـ GitHub Advisory API طابع نشر زمنيًا بتاريخ 21 أغسطس لتنبيهات تقول صفحات مستودعاتها إن تاريخها يوليو. إن حقل API يسجل وقت مراجعة GitHub لقاعدتها العالمية للبيان، لا وقت نشر الصيانة له — والاستشهاد بتاريخ API في الخبر خطأ لا يترك أثرًا.
النمط الكامن تحت السطح
إذا جُرِّدت القضايا الاثنتا عشرة، يتكرر فشل واحد: أطر الوكلاء التي تعامل ناتج النموذج أو الإعدادات أو منفذًا محليًا غير موثَّق باعتباره مدخلًا موثوقًا. وفي الأثناء يبلغ متوسط الفجوة بين صدور الإصلاح وظهور CVE نحو 55 يومًا، وخلال هذه المدة يبقى التصحيح في تاريخ git العام — قابلًا للفَرق بصورة مباشرة إلى استغلال — بينما لا شيء ينبه المشغّل downstream إلى الترقية.
