
إثبات المفهوم لثغرة إلغاء تسلسل غير آمنة لـ pickle في Socket.IO
تمثل ثغرة تنفيذ تعليمات برمجية عن بُعد في إصدارات python-socketio الأقدم من 5.14.0، تسمح للمهاجمين بتنفيذ كود بايثون تعسفي من خلال إلغاء تسلسل خبيث (pickle deserialization) في عمليات النشر متعددة الخوادم التي حصل فيها المهاجم سابقًا على إمكانية الوصول إلى قائمة انتظار الرسائل التي تستخدمها الخوادم للاتصالات الداخلية. يمكنك العثور على تحليل مفصل لهذه الثغرة في GitHub Advisory.
هناك ثلاث حاويات دوكر (Docker) مشتركة في هذا العرض التوضيحي:
يوجد ملف docker-compose.yml يُنسّق هذه الحاويات. لتشغيل العرض التوضيحي، نفذ الأمر التالي في الدليل الذي يحتوي على ملف docker-compose.yml:
docker-compose up --build
سيقوم هذا الأمر ببناء وتشغيل الحاويات الثلاث جميعها. سيكون خادم Socket.IO متاحًا على http://localhost:5000، وسيحاول العميل المهاجم تلقائيًا استغلال الثغرة عند بدء التشغيل. يمكنك التحقق من دليل evidence داخل حاوية socketio_server بحثًا عن أي ملفات تم إنشاؤها بواسطة الاستغلال.