الزر والملف والأمر

نشرت شركة أمن التطبيقات أبييرو في السادس من نوفمبر بحثًا وجد 2539 سرًّا حقيقيًا في 1994 مستودعًا عامًا على غيت هب، جُلّها كتبه هناك ملف الأذونات الخاص بوكيل برمجة.

الآلية عادية تمامًا. يسأل كلود كود قبل تشغيل أي أمر صدفة. وإذا اخترت “نعم، ولا تسأل مرة أخرى”، خزّن قاعدة سماح في .claude/settings.local.json داخل مجلد المشروع. وحين تكون القاعدة المعتمدة أمرًا حرفيًا لا نمطًا، يُحفظ معها كل ما كُتب في ذلك الأمر — كلمة مرور قاعدة بيانات أو رمز وصول أو حساب SSH — بنص صريح، في ملف يجاور الشيفرة.

مسحت أبييرو غيت هب العام بين الأول والثالث من نوفمبر فوجدت 104185 نسخة من الملف في 103617 مستودعًا. ومن بينها احتوى 1122 ملفًا، نحو 1.1 بالمئة، سرًّا حقيقيًا: 1379 قيمة مختلفة إجمالًا، منها 636 تطابق صيغة مفتاح مزوّد معروف و743 كلمات مرور أو رموز وصول بجوار خادم عام. وأكثر من الثلث يفتح قاعدة بيانات مباشرة، منها 379 كلمة مرور لقواعد بيانات و122 مفتاح دور خدمة لسوبابيس، إلى جانب 43 حساب SSH لخوادم عامة و42 رمزًا لغيت هب وغيت لاب وnpm و23 مفتاحًا لأمازون ويب سيرفيسز.

صفوف من خزائن الخوادم في قاعة بيانات
تقول أبييرو إنها لم تختبر أي بيانات اعتماد ولم تتصل بأي خادم. صورة توضيحية. Brett Sayles · pexels · Pexels License

لماذا صارت هذه الملفات علنية أصلًا

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

وتذكر أبييرو أيضًا أن الوكيل كثيرًا ما يودع الملف بنفسه: ففي 539 من أصل 1105 مستودعات ذات سر حقيقي أمكن تتبعها، عدّل الملفَّ إيداعٌ شارك كلود في تأليفه. وتعليمات الإيداع في كلود كود تطلب من النموذج ألا يودع .env أو credentials.json؛ أما ملف إعداداته هو فليس على تلك القائمة. ومن بين 16 وكيل برمجة قارنت أبييرو وثائقها، تقول إن كلود كود وحده المؤكَّد أنه يكتب الأمر المعتمد كاملًا في ملف داخل المشروع افتراضيًا.

والانكشاف ليس عابرًا. فكل ملف متأثر كان لا يزال على الفرع الافتراضي لمستودعه عند الفحص، وفي الحالة الوسيطة مضى عليه 217 يومًا هناك. وحذفه لا يسد الثغرة: ففي النسخ الأقدم من الملف 734 سرًّا إضافيًا في 509 مستودعات لا تظهر في أي نسخة حالية، وتحمل 211 نسخة متفرعة من 74 مستودعًا القيم نفسها.

مكتب مفتوح خالٍ بصفوف من الطاولات والمقاعد
تبقى الملفات أيضًا على أجهزة المطورين، حيث تبحث البرمجيات الخبيثة أصلًا عن بيانات الاعتماد. صورة توضيحية. cottonbro studio · pexels · Pexels License

ما يفوت الماسحات، وما تقوله أنثروبيك

التقطت ماسحات الأسرار العامة نحو النصف. فبتشغيلها على الملفات الـ104185 جميعها، أشّر gitleaks على 564 من الملفات الـ1122 ذات السر الحقيقي، وأشّر TruffleHog على 643؛ وأفلت 215 من كليهما. والفجوة هي كلمات المرور المكتوبة داخل الأوامر — بعد PGPASSWORD= أو sshpass -p أو mysql -p — إذ تبدو كلمات عادية لا صيغ مفاتيح.

وتقول أبييرو إنها أبلغت كل مؤسسة متأثرة في الثاني والثالث من نوفمبر، وأبلغت أنثروبيك عبر القناة التي تطلبها الشركة. وتشير كذلك إلى أن مستخدمين يبلّغون عن هذه الآلية في مسائل غيت هب الخاصة بكلود كود منذ أغسطس 2025، وأن أيًّا منها لم يتلقَّ ردًا، وأن ثلاثًا أُغلقت تلقائيًا بوصفها خاملة أو مكررة.

وردّ مسؤول كلود كود في أنثروبيك، بوريس تشيرني، على هاكر نيوز في السابع من نوفمبر. وكتب: “تاريخيًا لم يقم كلود كود بتنقية الأسرار (فهناك أدوات جيدة كثيرة لذلك)، لكننا ننظر فيما يمكننا فعله لمنع هذا”، وعدّد “التأكد من أن الوضع التلقائي يلتقط هذا، وبناء مسح أساسي للأسرار” بين المقاربات التي سيجرّبها الفريق “قبل أن نطلق شيئًا”. وقال أيضًا إن كلود كود يضيف الملف إلى gitignore حين ينشئه، فالنسخ المنكشفة في رأيه أُنشئت يدويًا ثم أُودعت.

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