يمكن لتعليق واحد غير مرئي في طلب سحب Azure DevOps أن يحول وكيل ترميز الذكاء الاصطناعي الخاص بالمراجع ضده، مما يدفعه إلى مشاريع ليس للمهاجم الحق في الوصول إليها وتسريب ما يجده بهدوء.

يوجد الخلل في خادم Azure DevOps MCP الرسمي من Microsoft، وهو يعمل لأن إحدى أدواته تعرض أوصاف طلبات السحب دون وجود حاجز حماية للحقن الفوري قامت الشركة بتطبيقه بالفعل على الآخرين.

قامت شركة الأمن الهجومي Manifold Security بتفصيل خطأ النائب المرتبك هذا الأسبوع. تقوم Microsoft بشحن الخادم حتى يتمكن وكلاء الذكاء الاصطناعي من قراءة وتشغيل Azure DevOps للمستخدم، عبر طلبات السحب وخطوط الأنابيب والمواقع wiki وعناصر العمل، كل ذلك بأذونات المستخدم الخاصة. هذه هي المشكلة برمتها: المحتوى الذي كتبه أشخاص آخرون يمكن أن يصبح تعليمات يتصرف الوكيل بناءً عليها.

تقبل أوصاف Azure DevOps PR عملية Markdown، التي تسمح بتعليقات HTML. في واجهة مستخدم الويب، يظهر تعليق HTML () على أنه لا شيء، لذلك يرى المراجع الذي يقوم بتمرير الوصف تغييرًا عاديًا. تقوم واجهة REST API بإرجاعه حرفيًا، ويقوم الخادم بتسليم هذا النص مباشرة إلى الوكيل.

هذا الانقسام بين ما يراه الإنسان وما يتلقاه النموذج هو آلية التسليم: لا يتحدث المهاجم أبدًا إلى العميل ولكنه يزرع التعليمات في المحتوى الذي يعرف أنه سيقرأه لاحقًا.

عندما يطلب المراجع من وكيله مراجعة العلاقات العامة، يمكن للنص المخفي إعادة كتابة هدف الوكيل. يحمل الوكيل بيانات اعتماد المراجع، حتى يتمكن من التصرف عبر المشاريع التي لا يحق للمهاجم الوصول إليها.

يقول مانيفولد أن الوصول يصل إلى الكود المصدري والأسرار وعناصر العمل، وليس فقط إلى صفحة الويكي التي تم تسريب إثبات المفهوم الخاص بها. تصف الشركة التصعيد بالحالة العادية، نظرًا لأن المراجعين غالبًا ما يكونون أعلى مرتبة من الشخص الذي فتح طلب السحب. لا يكسب المهاجم أي شيء بشكل مباشر؛ إنهم يستعيرون وصول المراجع من خلال النص الذي لا يراه المراجع أبدًا.

لقد أخطأ مسار طلب السحب الدرابزين

ما يرفع هذا فوق التحذير العام بشأن الحقن الفوري هو أن Microsoft قامت بالفعل بشحن دفاع عنه. عند قراءة مصدر الخادم، وجد مانيفولد أنه يستخدم تسليط الضوء، وهي تقنية من إرشادات Microsoft الخاصة بشأن الحقن الفوري غير المباشر: فهو يغلف المحتوى غير الموثوق به في محددات حتى يتمكن النموذج من تمييز البيانات بصرف النظر عن التعليمات التي يجب اتباعها.

أضافتها الشركة في PR #1062، حيث تقوم أدوات صفحة wiki وأدوات سجل البناء بتمرير مخرجاتها من خلال مساعد مشترك، createExternalContentResponse. الأداة التي تُرجع طلب سحب، repo_get_pull_request_by_id، لا تستدعيه أبدًا، لذا فهي تعيد الوصف الخام، وهو بالضبط السطح الذي يكتب عليه المهاجم.

وأكدت Hacker News أن نفس المسار لا يزال مكشوفًا في المصدر الحالي اعتبارًا من 21 يوليو.

في إثبات المفهوم الخاص بـ Manifold، والذي يتم تشغيله على إصدار محلي من الإصدار 2.7.0، يفتح أحد المساهمين في أحد المشاريع علاقات عامة ذات مظهر عادي ويحمل تعليقه المخفي الحمولة. بمجرد أن يبدأ الوكيل مراجعته، يقوم تتبع الأداة بتشغيل سلسلة: فهو يقوم بتشغيل خط أنابيب في مشروع مختلف، ويقرأ صفحة wiki سرية لا يستطيع المهاجم فتحها، وينشر تلك الصفحة مرة أخرى كتعليق على العلاقات العامة، حيث يقرأها المهاجم.

كان هناك تعليق مخفي واحد يقود التسلسل بأكمله، وكل مكالمة فيه كانت مكالمة يُسمح للعميل بإجرائها. وكتب الباحثون أن المشكلة كانت “التسلسل والقصد، مدفوعًا بالنص الذي لم يراه الإنسان مطلقًا”. أعاد الفريق إنتاجه باستخدام كل من Copilot CLI وClaude Code، لذلك فهو غير مرتبط بوكيل واحد.

ومع ذلك، تحتوي السلسلة على متطلبات مسبقة: نص العلاقات العامة الذي يكتبه المهاجم، وسير العمل الذي يغذيه إلى الوكيل، والمراجع الذي يتجاوز وصوله وصول المهاجم، والوكيل مسموح له بتشغيل الأدوات دون طلب ذلك.

أكدت شركة Manifold أنها اختبرت هذا الجزء الأخير كموقف للموافقة التلقائية بدون مطالبات لكل أداة، وهي نقطة التفتيش التي من شأنها أن تسمح للمراجع برصد خط أنابيب غريب عبر المشروع يتم تشغيله قبل إطلاقه. الرمز الواسع بالإضافة إلى هذا الموقف هو المكان الذي تتركز فيه المخاطر.

يفترض العرض التوضيحي أن شخصًا ما هو الذي يبدأ المراجعة، لكن مانيفولد يلاحظ أين تتجه الفرق: المراجعة الآلية، والفرز، والملخصات التي يتم إطلاقها بواسطة المشغلات، دون مطالبة أي إنسان بكل عملية تشغيل أو قراءة كل نتيجة. في هذا الإعداد، يتم تنشيط الوصف المزروع من تلقاء نفسه، ويستمر التسرب لفترة أطول قبل أن يلاحظ أي شخص.

النمط ليس جديدا. في مايو 2025، أظهرت Invariant Labs نفس فئة الهجوم ضد خادم MCP الخاص بـ GitHub، باستخدام مشكلة عامة لدفع الوكيل إلى قراءة الريبو الخاص وتسريبه من خلال طلب السحب؛ وصلت نفس التقنية منذ ذلك الحين إلى سير عمل وكيل GitHub الآلي.

وكانت تلك الحالة أحد الأمثلة التي أشار إليها سايمون ويليسون في تسمية الثلاثية القاتلة: وكيل لديه إمكانية الوصول إلى البيانات الخاصة، والتعرض لمحتوى غير موثوق به، وطريقة لإرسال البيانات. يمكن لأي وكيل لديه هذه العناصر الثلاثة أن ينقلب على مالكه من خلال جزء واحد من النص، والأكثر فائدة هو أنه يحتوي على العناصر الثلاثة جميعها.

شكر متحدث باسم Microsoft مانيفولد على الإبلاغ عن السلوك بموجب الكشف المنسق ووصفه بأنه “فئة معروفة من مخاطر الذكاء الاصطناعي” التي توجه عمل الشركة المستمر بشأن ضماناتها. ولم تذكر Microsoft ما إذا كانت ستغير الكود أو تقوم بتعيين CVE.

وأشارت إلى أن الهجوم يتطلب أن يكون لدى المهاجم بالفعل حق الوصول للكتابة إلى المشروع ومستخدم ثانٍ لاستدعاء أداة الذكاء الاصطناعي على المحتوى، وأوصت العملاء بتقييد الوصول إلى المشروع و”مراجعة التغييرات المقترحة قبل مطالبة أداة الذكاء الاصطناعي بالتصرف بناءً عليها”. المهم هو أن الحمولة هنا غير مرئية في الواجهة التي يراجعها الإنسان.

اعتبارًا من 21 يوليو، لم يكن هناك إصدار ثابت، ولم تجد The Hacker News أي CVE مخصص للخلل في قواعد البيانات العامة. تم شحن الإصدار الأخير، v2.8.0، في 24 يونيو. ولا يوجد تقرير عام يضع هذه التقنية قيد الاستخدام خارج نطاق اختبارات Manifold الخاصة.

اختبر مانيفولد فقط الخادم المحلي المستند إلى PAT، لكنه أخبر The Hacker News أن السبب الجذري هو “في كود الخادم، وليس في النقل”. وبهذا المنطق، سيتم كشف خادم MCP البعيد المستضاف أيضًا، لكن Manifold لم يختبره، ولم تعالجه Microsoft.

يؤدي تسليط الضوء على رفع المستوى ولكنه لا يغلق الحقن الفوري من تلقاء نفسه، وبالتالي فإن الدفاعات هي المألوفة. امنح الوكيل الرموز المميزة الأقل امتيازًا وقم بنطاقها للمشروع قيد المراجعة. قم بتحميل مجالات MCP التي تحتاجها المهمة فقط؛ يقوم الخادم المحلي بتضييق نطاقها بعلامة -d.

استمر في تشغيل خطوط الأنابيب وقراءات wiki ونشر التعليقات خارج مجموعة أدوات مراجعة التعليمات البرمجية التي لا فائدة منها. للتحقق مما إذا كانت السلسلة قد تم تشغيلها بالفعل، ابحث في آثار أداة الوكيل لعمليات تشغيل خطوط الأنابيب عبر المشروعات، أو قراءات wiki، أو التعليقات التي تم نشرها أثناء المراجعة، وقم بمسح أوصاف العلاقات العامة المفتوحة بحثًا عن تعليقات HTML المخفية. المراجع البشري الذي لا يستطيع رؤية الحمولة لا يعتبر عنصر تحكم.

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

شاركها.
اترك تعليقاً