When "Do Not" Is Not Deny: Security Rules in CLAUDE.md vs Built-In Controls
تكشف هذه الورقة عن ثغرة أمنية حرجة في Claude Code حيث تفتقر تعليمات "لا تفعل" (do not) المكتوبة بلغة طبيعية في ملفات CLAUDE.md غالباً إلى ضوابط منع مدمجة مقابلة، إذ تمتلك ما يتراوح بين 4.4% إلى 16% فقط من القواعد المستخرجة مطابقات قابلة للإنفاذ، مما يترك المطورين دون تغذية راجعة حول ما إذا كانت قواعدهم الأمنية يتم إنفاذها بالفعل أم لا.
البحث الأصلي مرخَّص بموجب CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). هذا شرح مولَّده بالذكاء الاصطناعي للبحث أدناه. لم يكتبه المؤلفون ولم يصادقوا عليه. وللتحقق من الدقة التقنية، يرجى الرجوع إلى البحث الأصلي. اقرأ إخلاء المسؤولية الكامل
في عالم إنشاء البرمجيات الحديث، ظهر نوع جديد من المساعدين: "وكيل البرمجة" (coding agent). هذه برامج ذكاء اصطناعي يمكنها كتابة الكود، وإصلاح الأخطاء، وإدارة الملفات تماماً كما يفعل المطور البشري. وللحفاظ على سلامة هؤلاء المساعدين الرقميين وإبقائهم على المسار الصحيح، يكتب المطورون ملفات تعليمات. فكر في هذه الملفات كأنها مجموعة من القواعد المكتوبة، مثل وصفة طهي أو ميثاق سلوك، حيث يخبر الإنسان الوكيل بما يُسمح له بفعله وما يجب ألا يفعله أبداً. قد يكتب المطور: "لا تحفظ كلمات المرور أبداً بنص مجرد"، أو "استأذن قبل حذف البيانات المهمة". لسنوات، كانت هذه الطريقة في تقديم التعليمات هي المعيار لتوجيه هذه الأدوات الذكية، وكان الافتراض هو أنك إذا كتبت قاعدة بوضوح، فإن الوكيل سيفهمها وسيتبعها، مما يخلق بيئة آمنة للبرمجيات التي يتم بناؤها.
ومع ذلك، كشفت دراسة حديثة أجراها الباحث تينغ يان عن فجوة صامتة ولكنها كبيرة في هذا النظام. تركز الدراسة على نوع محدد من ملفات التعليمات المستخدمة مع وكيل برمجة شهير يسمى "كلود كود" (Claude Code). تسأل الدراسة سؤالاً بسيطاً ولكنه حاسم: عندما يكتب المطور قاعدة أمنية بلغة إنجليزية بسيطة، هل يمتلك البرنامج بالفعل آلية داخلية لفرض تلك القاعدة، أم أن القاعدة مجرد اقتراح يتعين على الذكاء الاصطناعي تخمين كيفية اتباعه؟ تشير النتائج إلى أنه بالنسبة للغالبية العظمى من هذه القواعد المكتوبة، فإن الإجابة هي الخيار الثاني. يعمل الملف كطريق ذي اتجاه واحد حيث يتحدث المطور، لكن النظام لا يؤكد أبداً ما إذا كانت القاعدة يتم فرضها أم لا. وهذا يخلق شعوراً زائفاً بالأمان، حيث يعتقد المطور أن إجراءً خطيراً قد تم حظره، بينما في الواقع، يعتمد النظام فقط على الذكاء الاصطناعي لتذكر التعليمات وطاعتها دون وجود أي توقف حازم في مكانه.
لفهم حجم هذه المشكلة، جمع الباحثون ما يقرب من خمسمائة ملف تعليمات عام من المطورين حول العالم. لقد تعاملوا مع هذه الملفات كأنها مجموعة من الملاحظات المكتة بخط اليد، حيث قاموا بمسحها سطراً بسطر للعثور على جمل تبدو كقواعد أمنية. بحثوا عن عبارات مثل "يجب ألا" أو "أبداً" أو "لا تفعل"، والتي تشير إلى قيد ما. ومن هذه الملفات، استخرجوا آلاف القواعد المرشحة. الخطوة التالية كانت العمل كمترجم بين لغة البشر في القاعدة واللغة التقنية للبرمجيات. فقد تساءلوا عما إذا كان وكيل البرمجة المحدد، "كلود كود"، يمتلك بالفعل مفتاحاً أو إعداداً داخلياً يمكنه تلقائياً حظر الإجراء الموصوف في القاعدة. على سبيل المثال، إذا قالت القاعدة "لا تشغل هذا الأمر المحدد"، فقد تحقق الباحثون مما إذا كان البرنامج يمتلك إعداد أذونات يمكنه ببساال منع هذا الأمر قبل حدوثه. إذا لم يكن لدى البرنامج مثل هذا المفتاح، تُترك القاعدة للذكاء الاصطناعي لتفسيرها، مما يعني أن الوكيل سيتعين عليه أن يقرر بنفسه ما إذا كان سيتبع التعليمات أم لا.
كانت نتائج هذه المقارنة صارخة. فعندما طبق الباحثون معياراً صارماً — يتطلب أن يغطي التحكم الداخلي الإجراء المحدد، والهدف المحدد، والشرط المحدد للقاعدة المكتوبة — تبين أن جزءاً ضئيلاً جداً فقط من القواعد لديه آلية أمان مطابقة. وتحديداً، وجدوا أن حوالي أربعة إلى ستة بالمائة فقط من القواعد الأمنية التي كتبها المطورون مدعومة بتحكم داخلي يمكنه فرضها دون أي عمل إضافي. وحتى عندما استخدموا معياراً أقل صرامة، يسمح بالمطابقات الجزئية، ارتفع الرقم إلى حوالي ستة عشر بالمائة فقط. وهذا يعني أنه بالنسبة لحوالي خمسة وتسعين بالمائة من القواعد الأمنية المكتوبة في هذه الملفات، لم يكن هناك شبكة أمان تلقائية. كانت القاعدة موجودة فقط كنص، تعتمد كلياً على الذكاء الاصطناعي لتفسيرها بشكل صحيح في كل مرة.
كما نظرت الدراسة في سبب افتقار الكثير من القواعد للمطابقة. وجد الباحثون أن القواعد غالباً ما تطلب أشياء لا تستطيع الأدوات المدمجة في البرنامج رؤيتها أو القيام بها. قد تقول قاعدة ما: "لا ترفع أسراراً إلى الكود"، لكن إعدادات الأذونات في البرنامج يمكنها حظر مسار ملف أو أمر ما، وليس المحتوى الفعلي داخل الملف. لفرض قاعدة تتعلق بالأسرار، يحتاج البرنامج إلى قراءة الملف وفهم ما بداخله، وهي مهمة لا يستطيع القيام بها باستخدام إعداداته القياسية. وبالمثل، قد تتطلب قاعدة ما التحقق من حالة نظام ما أو الحصول على موافقة من شخص معين، وهي تفاصيل لا تستطيع الضوابط المدمجة الوصول إليها. في هذه الحالات، لم تكن القاعدة أمراً يمكن للبرنامج تنفيذه؛ بل كانت طلباً للذكاء الاصطناعي لاستخدام تقديره. وأشار الباحثون إلى أن هذا التمييز غير مرئي للمطور. فملف التعليمات يبدو نفسه سواء كانت القاعدة يتم فرضها بواسطة قفل نظام صلب أو بواسطة الذاكرة اللينة والقابلة للخطأ للذكاء الاصطناعي.
هذا النقص في التغذية الراجعة يخلق ما يسميه الباحثون "قناة الكتابة فقط" (write-only channel). في معظم عمليات تطوير البرمجيات، عندما يكتب المطور قاعدة، فإنه يحصل على تغذية راجعة فورية. إذا كتب كوداً يكسر قاعدة ما، فقد يرفض الكمبيوتر تشغيله، أو قد يفشل اختبار ما، مما يخبره فوراً بأن هناك خطأ ما. ومع ملفات التعليمات هذه، لا توجد مثل هذه الإشارة. يمكن للمطور كتابة قاعدة، والمضي قدماً، وعدم معرفة ما إذا كان الوكيل يتبعها بالفعل. وتبرز الدراسة أن هذا يشكل خطورة خاصة على المطورين الجدد في مجال الأمن؛ فقد يكتبون قاعدة ظناً منهم أنهم أمنوا نظامهم، غير مدركين أن النظام ليس لديه طريقة لفرض هذا القيد فعلياً. قد يتبع الذكاء الاصطناعي القاعدة معظم الوقت، لكنه يمكن أن يرتكب أخطاء، أو يرتبك، أو يُخدع بمدخلات أخرى، مما يترك النظام عرضة للخطر.
لم يجد الباحثون أن البرنامج معطل أو أن المطورين يفعلون شيئاً خاطئاً. بدلاً من ذلك، حددوا خللاً في التصميم في كيفية تواصل هذه الأدوات مع مستخدميها. تسمح هذه الأدوات للمستخدمين بكتابة قواعد بلغة طبيعية، وهو أمر سهل وبديهي، لكنها لا تخبر المستخدم أي من تلك القواعد يتم فرضها بالفعل بواسطة النظام وأيها مجرد اقتراحات. تشير الدراسة إلى أنه لكي تكون هذه الأدوات آمنة حقاً، يجب عليها إغلاق هذه الحلقة. يجب أن تمنح المطورين وسيلة لمعرفة أي القواعد مدعومة بضوابط صلبة وأيها ليس كذلك. ومن الناحية المثالية، يجب أن يحذر البرنامج المطور إذا كتب قاعدة لا يستطيع النظام فرضها، أو يجب أن يساعده في تحويل تلك القاعدة إلى إعداد يمكن للنظام استخدامه فعلياً. وإلى أن يتم إغلاق حلقة التغذية الراجعة هذه، فإن أمن هذه الأنظمة سيعتمد بشدة على الأمل في أن يتذكر الذكاء الاصطناعي كل تعليمة ويطيعها بدقة، وهو أمل تظهر البيانات أنه غالباً ما يكون في غير محله.
تختتم الدراسة بالتأكيد على أن هذه مشكلة قابلة للحل، ولكنها تتطلب تغييراً في كيفية بناء هذه الأدوات. إن الفجوة بين ما يكتبه المطور وما يفرضه النظام ليست لغزاً؛ بل هي حقيقة قابلة للقياس. ومن خلال قياسها، أظهر الباحثون أن الطريقة الحالية لتأمين هؤلاء الوكلاء غير مكتملة. يكمن الحل في جعل غير المرئي مرئياً، وضمان أنه عندما يكتب المطور قاعدة، فإنه يعرف بالضبط نوع الحماية التي توفرها. هذا من شأنه أن يحول ملف التعليمات من ملاحظة ذات اتجاه واحد إلى محادثة ذات اتجاهين، حيث يؤكد النظام أن القواعد ليست مكتوبة فحسب، بل تعمل حقاً.
غارق في أبحاث مجالك؟
تصلك نشرة يومية بأحدث الأبحاث المطابقة لكلماتك البحثية المفتاحية — مع ملخصات تقنية، بلغتك.