ثغرات GitSpawn: فتح مجلد مشروع بأداة agent قد يكفي لتنفيذ أوامر دون موافقة
الخطر هنا ليس في النموذج ولا في الـ prompt، بل في إعداد قديم في git صار يعمل تلقائيًا لأن الأدوات الجديدة تستدعي git في الخلفية دون أن يلاحظ أحد.
وسم
الخطر هنا ليس في النموذج ولا في الـ prompt، بل في إعداد قديم في git صار يعمل تلقائيًا لأن الأدوات الجديدة تستدعي git في الخلفية دون أن يلاحظ أحد.
حين يعمل agent على خادم سحابي ويقرأ نصوصًا لم يكتبها صاحبه، يصبح نطاق الضرر المحتمل حساب السحابة كله لا المستودع وحده. بعض الأوامر يجب أن تبقى بحاجة إلى موافقة مهما كان الوضع مريحًا.
الإكمال التلقائي صار سلعة لا تُحتسب في الفاتورة، والتكلفة الحقيقية انتقلت إلى الـ agent الذي يعمل وحده. أغلى ما في يوم المطور قد يكون مهمة تُركت تعمل.
الكاش يسقط لأسباب لا تظهر للمستخدم، فيُدفع السعر الكامل على سياق كان رخيصًا قبل دقائق. القياس لكل جلسة يحوّل الفاتورة من رقم واحد إلى شيء يمكن تفسيره.
النسبة المئوية بلا نقطة مرجع ليست حقيقة بل اختيار، فعبارتا زيادة 25% وخفض 17% قد تصفان اليوم نفسه بدقة.
من يشغّل agent على مستودع لم يكتبه لا يثق في الكود وحده، بل في ملفات الإعدادات أيضًا، فهي كانت جزءًا من سطح الهجوم.
القيد الذي يستطيع المستودع المفحوص إلغاءه بملف إعدادات ليس قيدًا، ولهذا نُقل التحكم من الكود الذي يُفحص إلى من يشغّل الأداة.
الاسم الذي يظهر على الشاشة قد لا يكون الاسم الذي يتعامل معه الجهاز، وكل قرار ثقة مبني على اسم مكتوب يحتاج إلى تنظيف ذلك الاسم قبل عرضه.
المفتاح المعرّض هنا ليس مفتاح Anthropic بل مفتاح الوسيط الذي يمر عبره الاستخدام، ولن يصل بشأنه أي إشعار لأن صاحبه وحده من يعرف بوجوده.
كتابة الكاش لمدة ساعة أغلى في المرة الواحدة، لكنها أرخص في الجلسات الطويلة المتقطعة التي يموت فيها كاش الدقائق الخمس ويُعاد بناؤه مرارًا.
أغلى الأخطاء البرمجية هي التي تترك كل شيء يعمل؛ فالإجابة تصل والشاشة طبيعية، بينما تُحتسب كل خطوة مرتين في فاتورة لا تُقرأ بندًا بندًا.
حين ينتقل عمل الـ agent من جهاز شخص واحد إلى قناة مشتركة، يصبح المكان الذي يتحدث فيه الفريق هو نفسه المكان الذي يُوزَّع فيه العمل ويُراجَع.
كلفة الوصول إلى حد الاستخدام صارت وقتًا على الساعة لا سياقًا ضائعًا، وهذا يجعل المهام الطويلة غير المراقبة ممكنة، مع درس أمني عن مسارات الملفات القادمة من نص خارجي.
ظهور مرحلة وسيطة بين الطلب والكود يجعل رفض الفكرة الخاطئة أرخص، خاصة في الفرق الصغيرة التي لا تضم مصممًا.
الحل لمشكلة agent يستهلك ذاكرة الجهاز لم يأتِ من الموديل ولا من الـ prompt، بل من نظام التشغيل، ومشكلات الـ agents تتحول تدريجيًا إلى مشكلات تشغيل عادية.
حين يرث الـ subagent الـ prompt cache لا يدفع مجددًا ثمن قراءة السياق نفسه، وحين تتراسل الجلسات بالاسم يصبح الجهاز الواحد أقرب إلى فريق صغير من الوكلاء.
في الاختبار أوقف الـ classifier 89% من الأوامر الخطرة مقابل 13.6% للموافقة اليدوية، وهو رقم يقول عن عادة الضغط دون قراءة أكثر مما يقول عن الأداة.
التشغيل على خوادم الشركة يحدد مكان تنفيذ الكود، لا مكان معالجة الكلام. فيتغير سؤال إقامة البيانات من مصير الكود إلى مصير الـ prompt الذي قد يحمل أسماء العملاء.
نافذة الموافقة هي معظم الأمان الذي يعتمد عليه من يشغّل agent على مستودع حقيقي، وإذا أمكن التلاعب بما تعرضه صارت الموافقة قرارًا على نص غير النص الذي سيُنفَّذ.
ملفات إعدادات المحررات وأدوات الذكاء الاصطناعي صارت سطحًا يُنفَّذ منه الكود، بينما تتعامل معها أدوات الفحص كأنها إعدادات لا تستحق القراءة.
السؤال لم يعد مقدار الثقة في الـ agent، بل كيف يعمل دون أن يرى السر أصلًا. والأول يُحل بسياسة، أما الثاني فيُحل بتصميم النظام.
الصفحة المنشورة لا تحمل صلاحيات ناشرها؛ فكل من يفتحها يرى ما يصل إليه حسابه هو، وهذا ما يجعل مشاركة لوحة بيانات حية ممكنة دون كشف البيانات.
حين يرى الوكيل نتيجة الكود على الشاشة، يلتقط أخطاء لا وجود لها في الكود نفسه، ومنها أعطال الواجهات العربية واتجاه RTL التي لا يكشفها إلا النظر.
التعليمات المكتوبة في ملف يقرؤه النموذج طلب قد يُنفَّذ أو لا، أما الـ hook فكود يعمل في كل مرة، وهذا الفرق يحدد أين يوضع كل قيد.
إعادة كتابة كانت مستحيلة على فريق صغير صارت ممكنة بالمال، لكنها تنتج codebase يعمل ولم يقرأه أحد في الفريق سطرًا سطرًا.
استقلالية الوكيل بلا سقف ليست رخيصة، وكلما مُنحت الأداة صلاحيات أوسع احتاج من يدفع الفاتورة إلى حدود أوضح لا أقل.
مجرد قراءة كود غير موثوق صارت مخاطرة حين يقرؤه وكيل قادر على التنفيذ، والخطأ هنا في الأدلة المزورة لا في منطق النموذج، فلا يعالجه نموذج أذكى.
نصيحة قراءة طلب الموافقة جيدًا قبل قبوله تفترض أن ما يُعرض هو ما سيُنفَّذ، وهذا الإصلاح يكشف أن الافتراض نفسه كان قابلًا للكسر.
موافقة المطور على تعديل ملف لا تضمن أن التعديل سيقع على ذلك الملف، والشركات نفسها لم تتفق بعد على ما إذا كان هذا ثغرة أم قرارًا يتحمله المستخدم.
حين تقرأ أدوات البرمجة المختلفة ملف التعليمات نفسه، تُكتب قواعد المشروع مرة واحدة وتنتقل مع الفريق من أداة إلى أخرى.