المكاسب:
- القدرة على استخدام الذكاء الاصطناعي كعين ثانية والإبلاغ عن نقاط الضعف في فئة OWASP (الحقن، السر الثابت، التحكم في الوصول) في الكود من خلال إعطاء السياق
- القدرة على القضاء على الإيجابيات الكاذبة التي ينتجها الذكاء الاصطناعي مع السياق ومنع التعامل مع كل نتيجة على أنها نقطة ضعف حقيقية دون التحقق من صحتها
- القدرة على إدراك أن الإصلاح الذي يقترحه الذكاء الاصطناعي قد يؤدي إلى ظهور نقاط ضعف/أخطاء جديدة وتمرير كل تصحيح من خلال بوابة المراجعة والاختبار
تعد الثغرات الأمنية الموجودة داخل البرامج من أغلى الثغرات الأمنية لأنها مضمنة في المنتج منذ البداية ويتم توزيعها على ملايين المستخدمين. مراجعة التعليمات البرمجية الآمنة هي عملية قراءة التعليمات البرمجية المصدر سطرًا تلو الآخر واكتشاف الثغرات الأمنية - حقن SQL، وثغرات المصادقة، وكلمة المرور المشفرة، والتفويض غير الصحيح - قبل الدخول في الإنتاج. عندما يتم ذلك يدويًا، يكون بطيئًا ومتعبًا؛ من السهل تفويت ثغرة أمنية في قاعدة تعليمات برمجية كبيرة.
الذكاء الاصطناعي قوي في مراجعة التعليمات البرمجية لسببين: الكود هو أيضًا لغة، والذكاء الاصطناعي جيد في التعرف على الأنماط. يستطيع الذكاء الاصطناعي الإبلاغ بسرعة عن الأنماط الخطيرة في جزء من التعليمات البرمجية (وضع إدخال المستخدم مباشرة في الاستعلام، وتخزين البيانات غير المشفرة، وفقدان التحقق من صحة الإدخال)، وشرح سبب خطورة كل منها، واقتراح إصلاح. لكن الذكاء الاصطناعي لا يرى سياق التشغيل الكامل للكود (قد يتم مسح المدخلات في طبقة أخرى)، وقد يخترع ثغرة غير موجودة (إيجابية كاذبة) أو يفتقد ثغرة حقيقية (سلبية كاذبة)، والأهم من ذلك أن "الإصلاح" الذي يقترحه قد يقدم ثغرة أمنية أو خطأ جديد. الذكاء الاصطناعي هو العين الثانية والمؤشر في مراجعة التعليمات البرمجية؛ يقرر المطور وخبير الأمان ما إذا كان الاكتشاف يمثل ثغرة أمنية حقيقية وما إذا كان الإصلاح صحيحًا وآمنًا.
خطوات مراجعة الكود
- إعطاء النطاق والسياق. ما هي اللغة، أي إطار، أين يأخذ هذا الكود المدخلات، أين يعطي المخرجات، في أي طبقة يعمل؟ مراجعة الكود بدون سياق تنتج نتائج إيجابية كاذبة.
- البحث عن الأنماط الخطيرة. ابحث عن فئات ثغرات الذكاء الاصطناعي المعروفة (مثل OWASP Top 10): الحقن، والمصادقة، والكشف عن البيانات الحساسة، والتحكم في الوصول.
- اجعل كل نتيجة مبررة. لكل علم: أي خط، أي فئة من الثغرة، كيف يمكن استغلالها، ما هو الدليل. النتيجة غير المبررة لا تؤخذ على محمل الجد.
- القضاء على إيجابية كاذبة. هل يتم بالفعل مسح الإدخال، وهل يمكن الوصول إلى هذا المسار بالفعل - تحقق من السياق.
- التحقق من الإصلاح. تأكد من أن التصحيح الذي أوصى به الذكاء الاصطناعي يغلق الثغرة فعليًا، ولا يقدم ثغرات/أخطاء جديدة، وقد اجتاز الاختبار.
- موافقة الإنسان. يقوم المطور + خبير الأمان بمراجعة النتائج وإصلاحها؛ هذه هي الطريقة التي يدخل بها مستودع التعليمات البرمجية.
المصطلحات: SAST (اختبار أمان التطبيقات الثابتة — اختبار أمان ثابت يقوم بتحليل كود المصدر دون تشغيله). DAST (ديناميكي — اختبار ديناميكي يختبر التطبيق قيد التشغيل خارجيًا). OWASP Top 10 هي القائمة القياسية لنقاط الضعف الأكثر شيوعًا في تطبيقات الويب. الحقن هو ثغرة أمنية ناجمة عن تفسير إدخال المستخدم كأمر/استعلام (على سبيل المثال، حقن SQL). الاستعلام ذو المعلمات هو الطريقة الصحيحة التي تمنع الحقن عن طريق فصل الإدخال عن الكود.
جدول فئات الضعف المشتركة
فئة الضعف
الأعراض (في الكود)
الحل الصحيح
فخ الذكاء الاصطناعي
حقن SQL
الانضمام إلى المدخلات في الاستعلام
استعلام معلمات
يمكن تجاهل التعقيم
سر مشفر صعب
كلمة المرور/المفتاح في الكود
خزنة سرية (قبو)، env
إيجابية كاذبة (عينة/اختبار)
مصادقة ضعيفة
التحكم المفقود/غير الصحيح
تحكم مركزي قوي
يفتقد السياق
التحكم في الوصول الخاطئ
لا يوجد فحص الترخيص
ترخيص جانب الخادم
لا يفهم التدفق المعقد
الكشف عن البيانات الحساسة
تخزين/تسجيل بدون كلمة مرور
التشفير، الإخفاء
لا يمكن أن تعرف الحرجة
تسلسل غير آمن
إلغاء تسلسل البيانات غير الموثوقة
تحليل آمن
يفتقد نمط نادر
ثلاث حالات صغيرة
الحالة 1 - الإمساك بالحقن الفعلي. يقوم المطور بفحص وظيفة الوصول إلى البيانات بواسطة الذكاء الاصطناعي. يحدد الذكاء الاصطناعي السطر الذي يتم فيه ربط قيمة معرف المستخدم من المستخدم مباشرة في نص SQL ويقول "هذا حقن SQL كلاسيكي، قم بتحويله إلى استعلام ذي معلمات"؛ يوفر تصحيح العينة. يؤكد المطور أن المدخلات لم يتم تطهيرها في مكان آخر، ويتحقق من أنها ثغرة أمنية حقيقية، وينفذ الاستعلام ذو المعلمات المقترح، ويكتب اختبارًا. وسلط الذكاء الاصطناعي الضوء على نقاط الضعف؛ جاء اختبار التحقق والتصحيح من المطور.
الحالة 2 - سر ثابت إيجابي كاذب. يرى الذكاء الاصطناعي سطر كلمة المرور = "test1234" في الملف ويقول "حرج: كلمة مرور مضمنة". يتحقق المطور من السياق: هذا ملف اختبار وحدة، وبيانات اختبار وهمية، ولم يتم إصدارها في الإنتاج ولم يتم نقلها إلى نظام حقيقي. النتيجة إيجابية كاذبة. يقوم المطور بتوثيق ذلك ولكنه لا يتخذ أي إجراء لأنه ليس سرًا حقيقيًا. الدرس المستفاد: يجب حذف علامة "السرية الشديدة" الخاصة بالذكاء الاصطناعي حسب السياق؛ ليس كل سلسلة سرا.
الحالة 3 - إصلاح الثغرات الأمنية الجديدة. يقترح الذكاء الاصطناعي إصلاحًا لثغرة XSS (البرمجة النصية عبر المواقع)؛ لكن الكود الذي يقترحه يمسح الإدخال في المكان الخطأ ويتخطى تشفير الإخراج في منطقة أخرى؛ ونتيجة لذلك، فإن الفجوة لا تغلق تماما. يقوم خبير الأمان بمراجعة الإصلاح، ويلاحظ الترميز المفقود، ويصلحه في الطبقة الصحيحة. الدرس المستفاد: التصحيح الذي توصي به منظمة العفو الدولية ليس آمنًا تلقائيًا؛ تتم مراجعة كل إصلاح واختباره.
موجه ضعيف / موجه قوي
حث ضعيف:
هل توجد ثغرة في هذا الكود قم بإصلاحها: [code]
لا يقدم هذا الموجه أي سياق (لغة، أو إطار عمل، أو مصدر إدخال)، ولا يطلب تبريرًا، ولا يشكك في الإيجابيات الخاطئة، وهو مفتوح لقبول التصحيح الناتج عن الذكاء الاصطناعي بشكل أعمى. علامات مختلطة للذكاء الاصطناعي تشير إلى وجود ضعف حقيقي وعدم وجوده.
مطالبة قوية:
دورك: المساعد الذي يكون العين الثانية للمطور في مراجعة التعليمات البرمجية الآمنة. اتخاذ القرار؛ النظر في الإصلاح المطبق مباشرة. الكود: [حدد اللغة/الإطار]. السياق: هذه الوظيفة [مصدر الإدخال: على سبيل المثال. يتلقى [طلب HTTP خارجي]، ويكتب إلى [وجهة الإخراج]. مهمتك: (1) تحديد نقاط الضعف المحتملة باستخدام فئة OWASP، وإعطاء رقم السطر + سبب الخطورة + كيفية استغلالها + الأدلة لكل منها، (2) كتابة سيناريو إيجابي خاطئ واحد على الأقل لكل نتيجة (على سبيل المثال، إذا تم تحسين المدخلات في طبقة أخرى)، (3) اقتراح إصلاح ولكن باستخدام علامة "[مراجعة + اختبار الكتابة]"؛ قم أيضًا بتقييم ما إذا كان الإصلاح يقدم نقاط ضعف/أخطاء جديدة. إضافة ثغرة أمنية وهمية.[code]
موجه قوي يعطي السياق، ويسأل عن فئة OWASP والأدلة، والأسئلة الإيجابية الخاطئة ومخاطر العلاج، ويفرض المراجعة البشرية.
قوالب سريعة قابلة للنسخ
نموذج فحص الثغرات الأمنية: افحص كود [اللغة/الإطار] لأفضل 10 نقاط لـ OWASP. لكل نتيجة محتملة: رقم السطر، فئة الثغرة الأمنية، سبب خطورتها، نموذج الاستغلال، قوة الأدلة (مؤكد/محتمل/ضعيف). السياق: الإدخال [المصدر]، الإخراج [الهدف]. إضافة نتائج ملفقة؛ إذا لم تكن متأكدًا، فاكتب "[يجب التحقق منه]". الكود: [لصق]
نمط الإزالة الإيجابي الكاذب للعثور على التعليمات البرمجية التالية، قم بإدراج السيناريوهات التي لا توجد فيها ثغرة أمنية حقيقية: هل يمكن مسح الإدخال في طبقة أخرى، هل يمكن الوصول إلى هذا المسار، هل هذه القيمة اختبار/عينة، هل إطار العمل محمي تلقائيًا. اكتب كيفية التأكيد لكل واحد. البحث: [لصق]
إصلاح قالب التقييم التوصية بإصلاح الثغرة الأمنية التالية؛ ثم انتقد الإصلاح الخاص بك: (1) هل يقوم بالفعل بإغلاق الثغرة الأمنية، (2) هل يقدم ثغرة أمنية/خطأ جديد، (3) ما الاختبار الذي يجب أن أكتبه (حالة إيجابية وسلبية)، (4) تأثير الأداء/الوظيفة. سأقوم بمراجعة واختبار الإصلاح. الضعف + الكود: [لصق]
قالب تدريس النمط الآمن لفئة الضعف [على سبيل المثال. حقن SQL] يُظهر نسبيًا نمط الكتابة الآمنة والأنماط الخاطئة الشائعة في هذه اللغة/الإطار. القاعدة العامة + إعطاء مثال على الكود؛ لكني أريدك أن تسأل السياق قبل تنفيذه في الكود الخاص بي. اللغة/الإطار: [كتابة]
الأخطاء الشائعة
- مراجعة دون سياق. وبدون اللغة والإطار وسياق المدخلات والمخرجات، يخلط الذكاء الاصطناعي بين النتائج الحقيقية والزائفة؛ تأكد من إعطاء السياق.
- الخلط بين كل علامة والضعف الحقيقي. ينتج الذكاء الاصطناعي نتائج إيجابية كاذبة (بيانات الاختبار، وتنظيف المدخلات في طبقة أخرى)؛ قم بغربلة كل نتيجة مع السياق.
- تطبيق تصحيح الذكاء الاصطناعي بشكل أعمى. قد يؤدي التصحيح الموصى به إلى ظهور نقاط ضعف/أخطاء جديدة؛ مراجعة وكتابة الاختبارات.
- الثقة السلبية الكاذبة. حتى لو قال الذكاء الاصطناعي "لا توجد ثغرات أمنية"، افحص المسارات الحرجة بنفسك؛ لا يكتشف المسح الثابت كل الثغرة الأمنية.
- إعطاء الرمز/السر للأداة الخارجية. الكود الخاص والأسرار الحقيقية (المفتاح، كلمة المرور) هي ملكية فكرية ونقاط ضعف؛ إخفاء الهوية أو استخدام أدوات خاصة بالشركة.
نصيحة: عند الحصول على كود مراجعة الذكاء الاصطناعي، فإن المرشح الأكثر كفاءة هو السؤال عن "قوة الأدلة" (مؤكدة/محتملة/ضعيفة) لكل نتيجة. معظم النتائج التي تحمل علامة "ضعيفة" هي نتائج إيجابية كاذبة؛ أنت تخصص طاقتك للأشخاص "المؤكدين".
تحذير: يجب ألا يدخل الإصلاح الأمني المقترح من قبل الذكاء الاصطناعي إلى المستودع دون اختباره. "الإصلاح" غير الصحيح يمكن أن يترك الثغرة الأمنية مفتوحة ويؤدي إلى خطأ وظيفي في الإنتاج؛ كل تصحيح يمر عبر بوابة المراجعة والاختبار.
في ملخص
تعد المراجعة الآمنة للتعليمات البرمجية أرخص وسيلة لاكتشاف الثغرات الأمنية قبل دخولها مرحلة الإنتاج، وبما أن التعليمات البرمجية هي لغة، يصبح الذكاء الاصطناعي بمثابة عين ثانية قوية هنا: فهو يشير إلى الأنماط الخطيرة، ويشرح المخاطر، ويقترح الإصلاحات. لكن الذكاء الاصطناعي لا يرى سياق التشغيل بأكمله، وينتج إيجابيات كاذبة وسلبيات كاذبة، وقد يؤدي التصحيح الذي يوصي به إلى ظهور نقاط ضعف جديدة. لذا فإن المراجعة تتكون من ست خطوات (السياق، والفحص، والتبرير، والإزالة الإيجابية الخاطئة، والتحقق من الإصلاح، والموافقة البشرية) والقرار يقع على عاتق المطور والخبير الأمني. ثلاثة مبادئ: لا يتم تفسير أي نتيجة دون سياق، ويتم حذف كل علامة مع السياق، ولا يتم تخزين أي إصلاح دون اختباره. ولا يتم تسليم الرمز/السر مطلقًا إلى أداة خارجية دون إخفاء الهوية.
مهمة التطبيق
خذ نموذجًا لمقتطف التعليمات البرمجية (إما إزالة الأجزاء الحساسة من التعليمات البرمجية الخاصة بك أو نموذج التعليمات البرمجية الذي يحتوي على ثغرات أمنية). اطلب من الذكاء الاصطناعي فحصها باستخدام قالب "فحص الثغرات الأمنية"؛ قم بتطبيق نموذج "القضاء الإيجابي الكاذب" على كل نتيجة وقم بإزالة النتائج الحقيقية. قم بتصحيح النتيجة الأكثر خطورة باستخدام قالب "تقييم العلاج"، وراجعه بنفسك واكتب حالة اختبار إيجابية + حالة اختبار سلبية واحدة. لاحظ عدد النتائج التي كانت إيجابية كاذبة.
قائمة مرجعية
- [ ] لقد قدمت اللغة والإطار وسياق الإدخال/الإخراج قبل مراجعة الكود.
- [ ] لقد طلبت رقم السطر وفئة الضعف ومسار الاستغلال والأدلة لكل نتيجة.
- [ ] لقد قمت بفحص كل نتيجة بحثًا عن نتائج إيجابية كاذبة مع السياق.
- [ ] لم أطبق تصحيح الذكاء الاصطناعي بشكل أعمى؛ لقد راجعت وكتبت اختبارا.
- [ ] على الرغم من إخراج "لا توجد ثغرات أمنية"، فقد قمت بفحص المسارات الحرجة بنفسي.
- [ ] قمت بإخفاء هوية الكود/الأسرار أو استخدمت أدوات معزولة خاصة بالشركة.
- [ ] لقد اجتزت الاكتشاف والإصلاح من خلال موافقة المطور + الأمان.