يا جماعة الخير، السلام عليكم ورحمة الله.
بتذكر قبل كم سنة، يمكن بحدود ٢٠١٧، كنّا سهرانين بالمكتب بنجهّز لإطلاق نسخة جديدة من نظام كبير. معنا كان شب جديد، خلّونا نسميه “سالم”، مطوّر شاطر بس لسا حماسي زيادة عن اللزوم. في خضم ضغط الشغل وتسليم المشروع، وبدون قصد طبعًا، رفع سالم ملف الإعدادات (.env file) اللي فيه كل المفاتيح السرية وقواعد البيانات على مستودع GitHub عام بدل الخاص.
والله ما مرّت ساعتين إلا والتلفون برنّ من شركة الاستضافة السحابية، بحكولنا إنه في نشاط غريب جدًا على حسابنا وعمليات تعدين عملات رقمية شغّالة على أعلى مستوى! ما بحكيلكم كيف كانت هالليلة… سباق مع الزمن لإلغاء كل المفاتيح وتأمين الحسابات. سالم، الله يستر عليه، تعلم يومها درس ما رح ينساه بحياته. هاي القصة الصغيرة، اللي بتصير كل يوم بعالم البرمجة، هي مجرد نسخة مصغّرة عن كارثة أكبر بكثير صارت بعالم الذكاء الاصطناعي، قصة الـ ١٢ ألف مفتاح سرّي.
الصدمة: ١٢ ألف مفتاح سرّي داخل “عقل” النموذج
قبل فترة، طلع تقرير من باحثين أمنيين عمل ضجة كبيرة، بس يمكن ما أخذ حقه من النقاش في عالمنا العربي. القصة باختصار: هؤلاء الباحثون فحصوا واحدة من مجموعات البيانات الضخمة (Datasets) اللي بتُستخدم لتدريب نماذج اللغة الكبيرة (LLMs)، وتفاجأوا بوجود ما يقارب ١٢ ألف مفتاح API وكلمة مرور وبيانات حساسة فعّالة وقت اكتشافها!
هالحكي مش مجرد بيانات قديمة أو غير صالحة، لأ. كانت مفاتيح حقيقية لأنظمة إنتاجية (Production systems)، قواعد بيانات، حسابات سحابية، وغيرها. تخيّل معي إنه مفتاح بيتك الخاص موجود بنسخة من كتاب منشور في كل مكتبات العالم. هاي هي حجم الكارثة.
كيف صارت هالكارثة؟ وشو القصة؟
السؤال المنطقي هو: كيف وصلت كل هالأسرار لمجموعة بيانات المفروض إنها “عامة”؟ الجواب يكمن في سوء فهمنا لكلمة “عام” وفي الطريقة اللي بتشتغل فيها عملية جمع البيانات.
وهم البيانات “العامة” (The Illusion of “Public” Data)
نماذج اللغة الكبيرة بتتعلم من خلال قراءة كميات هائلة من النصوص المأخوذة من الإنترنت. العملية هاي اسمها “Web Scraping” أو “Web Crawling”، يعني روبوتات بتلف على الإنترنت وبتجمع كل إشي بتلاقيه: مقالات، كتب، محادثات، والأهم… أكواد برمجية من مواقع مثل GitHub.
المشكلة إنه كثير مطورين، زي صاحبنا سالم، بيتركوا بالخطأ أسرارهم داخل الأكواد اللي بينشروها بشكل عام. ممكن تلاقيها في:
- ملفات الإعدادات (
config.json,.env,credentials.yml). - مضمنة مباشرة في الكود (Hard-coded).
- في سجلات الأخطاء (Error logs) اللي تم رفعها بالخطأ.
لما يجي روبوت جمع البيانات، هو ما بميّز بين كود عادي ومفتاح سري. بالنسبة إله، كله “نص” مفيد للتدريب. وهكذا، تنتقل هذه الأسرار من مستودع كود منسي في زاوية من زوايا الإنترنت إلى قلب واحدة من أضخم مجموعات البيانات في العالم.
ذاكرة النموذج التي لا تنسى
هون الخطر بصير مزدوج. مش بس الأسرار صارت موجودة في ملفات البيانات الخام، بل الأخطر من هيك إن النموذج نفسه “تعلّمها”.
النموذج اللغوي هو آلة لتوقّع الكلمة التالية. إذا شاف نمط “API_KEY = sk_live_…” آلاف المرات أثناء التدريب، فهو بيتعلم إن هذا النمط شائع ومهم.
وهذا يعني شغلتين خطيرات:
- وجود الأسرار في البيانات الخام: أي شخص بيوصل لمجموعة البيانات هاي (باحثين، شركات أخرى) بيقدر يستخرج منها هاي المفاتيح بسهولة.
- إعادة إنتاج الأسرار: النموذج نفسه ممكن يعيد إخراج (Regurgitate) هاي الأسرار كجزء من إجاباته. ممكن تسأله سؤال معين أو تعطيه بداية جملة (Prompt) بطريقة خبيثة، فيكمّل هو الجملة بمفتاح API حقيقي تعلّمه أثناء التدريب.
صارت القصة مش مجرد تسريب بيانات، بل تحوّل الإهمال الفردي لمطوّر واحد إلى قنبلة موقوتة موزّعة على مستوى العالم، مدعومة بأقوى النماذج التقنية.
نصائح أبو عمر العملية: كيف نحمي حالنا ومشاريعنا؟
طيب، بعد كل هالحكي اللي بيخوّف، شو الحل؟ هل نوقف استخدام الذكاء الاصطناعي؟ طبعًا لأ. الحل يكمن في تغيير طريقة تفكيرنا وتعاملنا مع البيانات والأمن. المسؤولية مشتركة بين اللي بيجمعوا البيانات، واللي بيدربوا النماذج، وإحنا كمطورين ومستخدمين.
نصيحة 1: قبل ما تطعمي النموذج، نظّف صحنك! (Secret Scanning)
هاي نصيحة مباشرة للشركات والمؤسسات اللي بتبني نماذجها الخاصة. مستحيل، وأعيد وأكرر، مستحيل تاخذ بيانات من الإنترنت وتدخلها مباشرة في خط أنابيب التدريب (Training Pipeline) بدون عملية تنظيف وفحص دقيقة.
لازم يكون في مرحلة إلزامية اسمها “فحص الأسرار” (Secret Scanning). في أدوات ممتازة ومفتوحة المصدر بتعمل هالشغلة، زي:
- Gitleaks: أداة رائعة لفحص مستودعات Git بحثًا عن مفاتيح وأسرار.
- truffleHog: أداة قوية جدًا بتدور في تاريخ المستودع كله (commit history) عشان تلاقي الأسرار اللي انحذفت حتى.
- git-secrets: بتمنعك من الأساس إنك تعمل commit لكود بيحتوي على أنماط تشبه الأسرار.
كمثال بسيط، لو عندك مجلد بيانات اسمه training_data، ممكن تشغل عليه Gitleaks بأمر بسيط قبل أي خطوة ثانية:
# تفحص المجلد الحالي بحثًا عن أي تسريبات محتملة
gitleaks detect --source="./training_data" --report-path="leaks_report.json" --verbose
إذا طلع التقرير نظيف، بنكمل. إذا لأ، منوقف كل شي ومنعالج المشكلة. هاي الخطوة لازم تكون جزء لا يتجزأ من عملية تحضير البيانات، زيها زي تنظيف النصوص من الـ HTML tags.
نصيحة 2: عزل البيانات ومعايير الامتثال (Compliance)
بيانات التدريب، حتى لو كانت “عامة”، لازم تتعامل معها كأنها بيانات حساسة. هذا يعني:
- عزل البيئة: خزّن بيانات التدريب في بيئة معزولة، الوصول إلها محدود ومراقب.
- سجلات التدقيق (Audit Trails): لازم يكون في سجل واضح مين وصل للبيانات، متى، وشو عمل فيها.
- الامتثال للمعايير: إذا كانت شركتك بتتعامل مع بيانات حساسة، لازم تتبع معايير عالمية مثل ISO 27001 (لأمن المعلومات) أو SOC 2. هاي المعايير بتجبرك تطبق أفضل الممارسات الأمنية.
نصيحة 3: الشفافية ومكافآت اكتشاف الثغرات (Bug Bounties)
هاي نصيحة للشركات الكبيرة اللي بتنتج النماذج (مثل OpenAI, Google, Anthropic وغيرهم):
- تقارير الشفافية: انشروا تقارير واضحة عن كيفية جمع بياناتكم، وما هي الإجراءات اللي اتخذتوها لتنظيفها من الأسرار والمعلومات الشخصية. الشفافية تبني الثقة.
- برامج المكافآت (Bug Bounty): وفّروا برامج مكافآت مالية واضحة ومجزية لأي شخص (باحث أمني أو مستخدم عادي) بيلاقي ثغرة أمنية أو سر مسرّب في مخرجات النموذج تبعكم. هذا بحوّل المجتمع كله لعيون إضافية بتساعدك تحمي منتجك.
الخلاصة: الذكاء الاصطناعي مرآة لممارساتنا 🤖
في النهاية يا جماعة، قصة الـ ١٢ ألف مفتاح سرّي مش غلطة ارتكبها الذكاء الاصطناعي. الذكاء الاصطناعي كان مجرد مرآة عكست ممارساتنا الأمنية السيئة و”ضخّمها”. هو أخذ إهمالنا المتراكم على مدى سنوات وحوّله لخطر حقيقي وواسع الانتشار.
المسؤولية بتبدأ من عندك كمطوّر. لا تستهين أبدًا بأي مفتاح أو كلمة سر. استخدم أدوات فحص الأسرار، افصل بين الإعدادات والكود، ولا ترفع أي شي حساس على مستودع عام أبدًا. لأن الخطأ الصغير اللي بتعمله اليوم، ممكن بكرة يصير جزء من “عقل” أضخم نموذج ذكاء اصطناعي في العالم.
ديروا بالكم على حالكم وعلى أسراركم الرقمية. ودمتم سالمين.