عن المشروع
ysoserial هي أداة أمنية من نوع إثبات المفهوم لتوليد حمولات Java متسلسلة تستغل إلغاء التسلسل غير الآمن للكائنات. تم إصدارها في البداية كجزء من محاضرة AppSecCali 2015 بعنوان 'Marshalling Pickles: how deserializing objects will ruin your day'، مع سلاسل أدوات أولية لـ Apache Commons Collections (الإصدارات 3.x و4.x) وSpring Beans/Core (4.x) وGroovy (2.3.x)، ثم تم توسيعها لاحقًا بسلاسل لـ JRE 1.7u21 والعديد من المكتبات الأخرى.
يقوم البرنامج الرئيسي بأخذ أمر يحدده المستخدم، ويغلّفه في سلسلة أدوات يحددها المستخدم — وهي تسلسل برمجة موجه بالخصائص مُجمّع من فئات موجودة في مكتبات Java الشائعة — ثم يسلسل الكائنات الناتجة إلى الإخراج القياسي. عندما يقوم تطبيق يحتوي على الأدوات المطلوبة في مسار الفئات (classpath) بإلغاء تسلسل هذه البيانات بشكل غير آمن، يتم استدعاء السلسلة تلقائيًا وتنفيذ الأمر على مضيف التطبيق. يؤكد المشروع أن الثغرة تكمن في التطبيق الذي يقوم بإلغاء التسلسل غير الآمن، وليس في مجرد وجود مكتبات الأدوات في مسار الفئات.
تأتي الأداة مع أكثر من ثلاثين نوعًا من الحمولات ساهم بها باحثون متعددون. تشمل هذه سبعة متغيرات من CommonsCollections تغطي commons-collections 3.x وcommons-collections4 4.x، بالإضافة إلى سلاسل لـ CommonsBeanutils وSpring (متغيران) وGroovy وHibernate (متغيران) وC3P0 وBeanShell وJython وClojure وMozilla Rhino (متغيران) وROME وJSON-lib وMyFaces (متغيران) وClick وFileUpload وVaadin وWicket وJavassist/Weld وJBoss interceptors وAspectJWeaver وJdk7u21 وURLDNS (الذي لا يتطلب أي تبعيات) وJRMPClient/JRMPListener. كما يتم عرض أداة مساعدة مدمجة، ysoserial.exploit.RMIRegistryExploit، في الأمثلة لتسليم حمولة إلى سجل RMI.
الاستخدام هو أمر واحد، على سبيل المثال: java -jar ysoserial.jar CommonsCollections1 calc.exe. يمكن توجيه الحمولة المولدة مباشرة إلى هدف أو حفظها في ملف، كما هو موضح مع netcat في ملف README. تتوفر ملفات JAR المجمعة مسبقًا من إصدارات GitHub، ويمكن بناء المشروع من المصدر باستخدام Java 1.7+ وMaven 3.x+ عبر الأمر 'mvn clean package -DskipTests'.
يصرح القائمون على الصيانة صراحةً أن البرنامج أُنشئ لأغراض البحث الأكاديمي وتطوير تقنيات دفاعية فعالة فقط، وأنه ليس مخصصًا لاستخدامه في مهاجمة الأنظمة إلا بإذن صريح؛ ويُطلب من المستخدمين استخدامه بمسؤولية. تشمل المشاريع ذات الصلة المذكورة في README: marshalsec (مشروع شقيق يغطي تنسيقات ومكتبات أخرى لإلغاء التسلسل في Java)، وysoserial.net (المكافئ لـ .NET)، وJava-Deserialization-Cheat-Sheet الذي يجمع الثغرات والأدوات والكتابات ذات الصلة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.