في مكتبة Snyk لورش عمل عملاء SecRel، لدينا واحدة تسمى Breaking AI. تتناول ورشة العمل هذه كيف يمكن لمساعدي الذكاء الاصطناعي، مثل مساعد الطيار والكوديوم، مساعدة المطورين على كتابة التعليمات البرمجية بشكل أسرع. أهم ما يميز ورشة العمل هو أن مساعدي الذكاء الاصطناعي يشبهون المطورين المبتدئين الذين تخرجوا حديثًا من معسكراتهم التدريبية للبرمجة: متحمسون للغاية ومفيدون، ولكن - أنت حقًا تريد التحقق من التعليمات البرمجية الخاصة بهم (لا يوجد ظل للمطورين المبتدئين - نحن في حاجة إليها، وأنها رهيبة!). نوضح في ورشة العمل كيف أن الجمع بين مساعدي الذكاء الاصطناعي وSnyk يمنحك قوة خارقة - كتابة التعليمات البرمجية بسرعة وأمان.
على حد تعبير أحد الطهاة المشهورين، قامت Snyk الآن "بالارتقاء إلى مستوى أعلى" بفضل قدرتها على Deep Code AI Fix. لقد قدمت Snyk Code دائمًا نصائح جيدة للمعالجة عندما تجد ثغرة أمنية. بل إنه سيوفر لك ثلاثة مراجع جيدة لمشاريع أخرى مفتوحة المصدر بها نفس الثغرة الأمنية ويوضح لك كيف قامت هذه المشاريع بإصلاحها. الآن، بفضل البيانات المنسقة بعناية من فريق أبحاث الأمان في Snyk، وهو نموذج ذكاء اصطناعي مختلط يجمع بين قوة الذكاء الاصطناعي التوليدي والرمزي، بالإضافة إلى نماذج التعلم الآلي، يمكن لـ Snyk الآن إصلاح العديد من الثغرات الأمنية الشائعة تلقائيًا من راحة جهازك. IDE المفضل.
في هذه المدونة، سأوضح كيف يمكنك الاستفادة بشكل أفضل من Deep Code AI Fix (DCAF) في مثال مشروع Java الذي نستخدمه في ورش العمل لدينا. يمكن العثور على الكود المصدري هنا. ملحوظة: هذا المشروع معرض للخطر عمدًا بعدة طرق وغير مناسب للاستخدام في أي بيئة إنتاج.
إذا سبق لك أن حضرت مؤتمرًا تقنيًا أو تحدثت فيه، فأنت تعلم أن أحد الجوانب الأكثر تحديًا هو إنشاء الجدول الزمني وتقديمه.
التطبيق المرجعي هو نسخة فظيعة من هذا (أنا لست مطورًا جيدًا للواجهة الأمامية!) ولكنه مفيد لإظهار كيف يمكن أن تعمل التعليمات البرمجية تقنيًا وتكون غير آمنة في نفس الوقت.
إنه تطبيق Spring Boot يستخدم محرك قالب Thymeleaf. عند بدء التشغيل، يقوم بإنشاء مكبرات صوت عشوائية وعناوين للمحادثات وبيانات وصف المحادثات باستخدام مكتبة Faker الشهيرة. عناوين المحادثات وأوصافها كلها مأخوذة من نص كتاب دليل المسافر إلى المجرة. ملاحظة: قد لا تكون العناوين والأوصاف كلها آمنة للعمل بنسبة 100%. لقد تم تحذيرك!
كل متحدث تم إنشاؤه لهذا الحدث لديه أيضًا صفحة مخصصة حيث يمكنك رؤية قائمة محادثاتهم في المؤتمر. سنركز على هذا الجزء من التطبيق.
لتجميع التطبيق وتشغيله، قم بتنفيذ ما يلي:
mvn clean install mvn spring-boot:run
عند تشغيل التطبيق، بالإضافة إلى شعار Spring Boot المعتاد والمخرجات الأخرى، سترى شيئًا مثل هذا:
Access talks for heath.davis at: http://localhost:8081/talks?username=heath.davis Access talks for russell.bernier at: http://localhost:8081/talks?username=russell.bernier Access talks for kenyetta.jones at: http://localhost:8081/talks?username=kenyetta.jones Access talks for howard.bailey at: http://localhost:8081/talks?username=howard.bailey Access talks for buddy.jast at: http://localhost:8081/talks?username=buddy.jast Access talks for jeanice.kertzmann at: http://localhost:8081/talks?username=jeanice.kertzmann Access talks for deborah.hamill at: http://localhost:8081/talks?username=deborah.hamill Access talks for horacio.renner at: http://localhost:8081/talks?username=horacio.renner Access talks for winfred.schuster at: http://localhost:8081/talks?username=winfred.schuster Access talks for tommie.hane at: http://localhost:8081/talks?username=tommie.hane Access talks for micah at: http://localhost:8081/talks?username=micah
ملاحظة: لن يكون الأمر على هذا النحو تمامًا، حيث يتم إنشاء المتحدثين ومحادثاتهم بشكل عشوائي في كل مرة تقوم فيها بتشغيل التطبيق.
إذا قمت بالنقر فوق أحد الروابط أو نسخها/لصقها، فسترى صفحة المتحدث مع قائمة محادثاتهم:
ألق نظرة على TalkController.java. هذه هي الطريقة التي يتم بها عرض صفحة المتحدث. هل يمكنك اكتشاف الثغرة الأمنية؟
لا نريد أن تعتمد على مقل عينيك! نريد من المطورين التحرك بسرعة وكتابة تعليمات برمجية آمنة.
أستخدم IntelliJ Idea لكتابة تطبيقات Java الخاصة بي. أستخدم أيضًا امتداد IDE الخاص بـ Snyk. والخبر السار هو أن هناك امتدادات Snyk IDE لجميع بيئات التطوير المتكاملة الشائعة، والتي تدعم مجموعة واسعة من لغات البرمجة.
إذا كنت تريد المتابعة وليس لديك حساب Snyk، فيمكنك إنشاء حساب مجانًا هنا.
هل ذكرت أن هذا التطبيق به الكثير من نقاط الضعف؟ وذلك لأننا نستخدمه في ورش العمل لدينا. ما أريد التركيز عليه هو الموجود في TalkController.java:
هذه كلها معلومات مفيدة للغاية لحل المشكلة. ومع ذلك، لاحظ وجود رمز صاعقة صغير (⚡️) على يسار الثغرة الأمنية رقم 1. يشير ذلك إلى أنه يمكن إصلاح هذه الثغرة الأمنية تلقائيًا.
إذا قمت بتعليق مؤشر الماوس فوق اللون الأحمر المتعرج، فسيظهر لك خيار إصلاح هذه المشكلة:
قبل أن ننظر إلى نتيجة Deep Code AI Fix، دعونا نلقي نظرة على ما سيفعله مساعد الطيار لنا.
إليك المطالبة التي قدمتها لمساعد الطيار في السطر 42 والرمز الذي يُدخله:
// guard against XSS username = username.replaceAll("", ">");
قد يعمل هذا ضد الهجمات الساذجة، ولكن هل سيعمل ضد جميع أنواع هجمات XSS؟ لست متأكدا من ذلك. في الواقع، عندما أعيد تشغيل فحص Snyk، لا تزال ثغرة XSS موجودة.
دعونا نلقي نظرة على إصلاح Snyk:
String usernameStr = "" HtmlUtils.htmlEscape(username) "'s talks"; ================================================
الآن، هذا يعجبني. يستخدم أسلوبًا اصطلاحيًا ومتوقعًا مع مكتبة Spring Boot المضمنة: HtmlUtils. أنا واثق من أن هذا سيؤدي إلى تطهير الإدخال: اسم المستخدم تمامًا. يُظهر فحص Snyk الجديد أن الثغرة الأمنية لم تعد موجودة.
ممتاز، في الواقع! لم يحل الإصلاح التلقائي لـ Snyk الثغرة الأمنية فحسب، بل قام بذلك بطريقة تتوافق مع إطار العمل المستخدم - Spring Boot في هذه الحالة.
في هذا المنشور، أوضحت لك كيف أن Deep Code AI Fix من Snyk يتجاوز مجرد نصيحة العلاج ويمكنه إجراء إصلاح نيابة عنك. يمكنك أيضًا التأكد من فائدة الإصلاح من خلال التأكد من أن الثغرة الأمنية الأصلية لم تعد موجودة.
في Snyk، نحن نحب مساعدي الذكاء الاصطناعي، لكنهم ليسوا جيدين جدًا في مجال الأمن. يُظهر بحثنا أن الجيل الجديد من الذكاء الاصطناعي يميل إلى توليد تعليمات برمجية غير آمنة بنفس المعدل الذي يفعله البشر تقريبًا - حوالي 40%. وهذا أمر منطقي لأن حلول Gen AI الخالصة مثل Copilot تقوم بتدريب نماذجها بشكل أساسي على التعليمات البرمجية الموجودة. إن نهج Snyk المختلط، والذي يتضمن الذكاء الاصطناعي الرمزي، والذكاء الاصطناعي العام، والتعلم الآلي، والتدريب المنسق من فريق الأمان لدينا، يعطي النتائج نهجًا للأمان أولاً.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3