
عرض تعليمي لإلغاء التسلسل غير الآمن في Node.js (CVE-2017-5941) مع حقن حمولة قائمة على ملفات تعريف الارتباط واستغلال القشرة العكسية للتدريب الأمني.
Node.js هي بيئة تشغيل مفتوحة المصدر تُستخدم لتنفيذ وظائف الخادم بلغة JavaScript.
تحتوي حزمة برمجية محددة داخل Node.js على دالة ضعيفة تتعامل مع إزالة التسلسل، مما يؤدي إلى تنفيذ أوامر غير مصرح بها إذا قدم العميل ملف تعريف ارتباط مصنوعًا خصيصًا.
تم تكرار هذه الثغرة، ويمكنها نظريًا تشغيل قشرة عكسية (reverse shell)، وهذا ممكن بسبب بيانات الإدخال غير المنقّاة التي تُقرأ من ملف تعريف ارتباط في طلب العميل. يمكن للعميل تعديل ملفات تعريف الارتباط الخاصة به، وحقن حمولة غير آمنة تحتوي على أمر bash، وإرسالها إلى الخادم الذي سينفّذ الأمر بشكل أعمى. يمكن أن يؤدي ذلك إلى وصول مستخدمين غير مصرح لهم إلى قواعد البيانات أو الأجهزة بالكامل.
تتمثل الآثار الأخلاقية لهذا النوع من الثغرات في البيانات التي يمكن الوصول إليها في قواعد البيانات على الخادم الخلفي. اعتمادًا على البيانات، يمكن أن يكون ذلك ضارًا بأمن المستخدم، وقد يؤثر على موثوقية الشركة وسمعتها. ولهذا السبب، من المهم اكتشاف الثغرات قبل المهاجمين الآخرين. هناك مجموعة متنوعة من الأدوات المتاحة مثل Snyk وBurp Suite وخيارات مدفوعة أخرى لتحديد هذه الثغرات.
أفضل طريقة للتخفيف من هذه الثغرة هي ممارسة تنقية المدخلات بشكل صحيح، والتوقف عن أي استخدام للدالة الضعيفة unserialise داخل node.js. ويوصى باستخدام البديل لهذه الدالة الضعيفة، وهو JSON.parse