سيكون هناك العديد من المحادثات في مؤتمر
RubyRussia حول كيفية كتابة التعليمات البرمجية وكيفية القيام بذلك بشكل أفضل من الآخرين. ولكن إذا كان المنتج الذي تطلقه شركتك غير آمن ، فقد يؤدي ذلك إلى مشاكل كبيرة. ناقش غريغوري بيتروف هذا الموضوع الهام مع ميخائيل برونياكين من شركة ONSEK ، مطور منصة
فالارم المتكاملة.
قل لي ماذا تفعل وكيف تستخدم روبي؟ذات مرة ، عملت كمتخصص في مجال أمن المعلومات. فعلت شيء مثل pentest تطبيقات الويب والأجهزة المادية المختلفة. بالتوازي مع هذا ، كان يعمل في برمجة النظام في C. في ذلك الوقت ، كما هو الحال الآن ، كان إطار Metasploit شائعًا ، والذي يمكن توسيعه باستخدام وحداته الخاصة للبحث عن الثغرات واستغلالها. لقد كتب في روبي - لذلك بدأت معرفتي بهذه اللغة. ثم ذهبت للعمل لدى Onsek ، حيث قمت في البداية بتسريع بعض الأجزاء المهمة من الواجهة الخلفية للمشروع من خلال إعادة كتابة الكود من Ruby إلى C ، ثم بدأت في كتابة وظائف جديدة فقط في Ruby. ترتبط أنشطة شركتنا بأمن المعلومات ، فنحن نقوم بتنفيذ
Valarm ، وهي منصة لحماية واختبار تطبيقات الويب (وليس فقط). اتضح أنني مطور روبي ومتخصص في أمن المعلومات.
سيتم ربط تقريرك بهذا الموضوع. قل لي أكثر.يوفر RoR للمبرمج فرصًا رائعة لكتابة التعليمات البرمجية ، ولكن هناك أيضًا نقاط غير واضحة يمكن أن تؤدي إلى مشاكل أمنية. في المؤتمر ، سأتحدث عن مواطن الضعف النموذجية لتطبيقات روبي وأقدم أمثلة عملية من شأنها أن تساعد في منع الأخطاء.
في رأيك ، كيف هي Rails الآن من حيث الأمان؟في فلسفة روبي و Rails ، هناك شيء مثل "أولوية الاتفاق على التكوين". إذا تم التفكير في كل شيء في الاتفاقية ، فلن تظهر أي مشاكل أمنية. ولكن إذا حدث موقف فجأة بحيث يمكنك كتابة التعليمات البرمجية الضعيفة بشكل افتراضي ، فإن هذا يمكن أن يسبب بالفعل مشاكل خطيرة. خاصة للمطورين المبتدئين الذين بدأوا لتعلم Rails ولا يفكرون في أمان الكود الخاص بهم. بالنظر إلى الماضي ، كان الوضع أسوأ في كل مكان مع الأمن من الآن. هذا لا ينطبق فقط على روبي ، ولكن أيضًا على اللغات والأطر الأخرى. كل عام ، يتم دمج ميزات الأمان بشكل متزايد في الأطر. على سبيل المثال ، تحتوي Rails بالفعل على رموز CSRF خارج الصندوق في كل مكان ، وهو أمر جيد جدًا. كل هذا يعمل تحت الغطاء ، ولكن إذا كنت لا تعرف كيف وتريد أن تفعل شيئًا مخصصًا ، فقد يتعرض أمان التطبيق للخطر.
إذا أخذنا في الاعتبار نقاط الضعف ، فيمكن تقسيمها تقريبًا إلى نوعين: هذه هي نقاط الضعف في وقت التشغيل ونقاط الضعف في اللغة نفسها. ذات مرة في بيثون ، كانت هناك قصة حزينة - اتضح أنه في بيثون يتم حساب تجزئة القاموس دون ملح. يمكن للمرء أن يثير عدد لا حصر له من الاصطدامات. ونتيجة لذلك ، فاضت القواميس ، وتوفيت الخوادم من عدة ميغابايت من طلبات الهجوم. أخبرني ، في عالم القضبان ، في تجربتك ، كم عدد الثغرات الموجودة في روبي نفسها ، وكم عدد الثغرات الموجودة في القضبان؟إذا نظرنا إلى موضوع الثغرات الأمنية ، فهو أوسع بكثير من مجرد روبي ورايلز. على سبيل المثال ، لدينا nginx. إذا لم يتم تكوينه بشكل صحيح ، يمكنك ببساطة قراءة بعض الملفات من الخادم والحصول على سر تطبيق Rails. وهذا كل شيء ، يتم اختراق التطبيق - افعل ما تريد. يجب أن تفهم أن الأمان لا يقتصر على لغة واحدة وإطار عمل - فهناك بيئة يتم تنفيذها فيها ، وبيئة يتم تجميعها فيها ، ومليون فروق دقيقة أخرى.
وفيما يتعلق بالكمية ، هل يمكنك معرفة مكان وجود المزيد من نقاط الضعف؟ خارج Ruby and Rails ، وباللغة نفسها ، وفي وقت تشغيلها ، أو في المكتبة القياسية ، أو في Rails كإطار يستخدم Ruby؟أود أن أقول إن معظم نقاط الضعف توجد عند التقاطع بين منطق التطبيق و Rails أنفسهم أو وظائف المكتبة الأخرى.
على مدار السنوات القليلة الماضية ، ما هي أطرف نقاط الضعف التي وجدتها أنت أو زملائك؟ من مسلسل "آه ، حسناً ، هذا ما كان عليك أن تفوه به بهذه الطريقة."وكان الضعف لا تنسى في الأحجار الكريمة ، والسماح النصوص الصوتية. أنت تعطيه النص ، وهو يعبّر عنه. دعا جوهرة وحدة التحكم وحدة وتمرير المعلمات إليها دون فحص مناسب. نتيجة لذلك ، تم اكتشاف حقنة في Bash ، ويمكنك سماع نتيجة تنفيذ أمر تعسفي. يمكنك إرسال الأمر "ls /" إلى الإدخال ، والصوت في الرد يملي "slash dev slash إلخ" وهلم جرا.
خلال السنوات القليلة الماضية ، اعتمد النظام البيئي للغات عالية المستوى - بيثون وروبي وجافا سكريبت - على عدد كبير من المكتبات الصغيرة. هناك الكثير منهم ، وهم يعتمدون على بعضهم البعض بحيث تزيل بعض اليسار ، وهذا يقتل النظام البيئي. يبدأ المهاجمون إما في إنشاء مكتباتهم الخاصة ، أو السيطرة على الغرباء وإضافة بعض الأكواد الخبيثة إليهم التي لا يمكنك العثور عليها. كيف كبيرة ورهيبة هذا الآن؟هناك مشكلة ، ولكن حتى الآن لا أحد يفكر حقًا في الأمر ، يعتمد الجميع "بشكل عشوائي". إذا كان المهاجم لديه هدف لمهاجمة شركة معينة بطريقة معينة ، فلن يمنعه أحد اليوم. لا شيء يمنع صنع مجرد جوهرة جيدة ، واكتساب الكثير من النجوم على جيثب وانتظار الجميع لبدء استخدامه. بعد ذلك ، قم بتضمين تعليمة برمجية ضارة سراً ، وهذا ليس بالأمر الصعب على الإطلاق. أعتقد أن مسألة التبعيات اليوم هي مسألة ثقة: المشكلة مفتوحة ولا تزال تنتظر حلها.
نراكم في RubyRussia!يمكن طرح الأسئلة حول موضوع الأمن على ميخائيل بعد التقرير ، وكذلك مناقشتها في جناح شركته. يمكنك الاطلاع على الموضوعات الأخرى التي سيناقشها الياقوت في 28 سبتمبر
على الموقع الإلكتروني .
وإلى جانب المتحدثين والمشاركين ، يمكنك التعرف على الشركات الرائعة التي تدعم المؤتمر:
المنظم -
إيفرونالشريك العام -
توبتالالشريك الذهبي -
Gettشركاء الفضة -
Valarm ،
JetBrains ،
Bookmate و
Cashwagonالشريك البرونزي -
InSales