تخط إلى المحتوى
English

فك التسلسل غير الآمن Insecure Deserialization

الثقة بكائن معاد بناؤه ومسار قديم بلا توقيع ونوع gadget ينفذ عند فك التسلسل ولماذا إعادة بناء الكائنات من بيانات المستخدم خطر

المسار
أمن الويب
الوقت المتوقع
25 د
المستوى
متوسط
تقدمك في المسار0%

قبل هذا الدرس

التسلسل يحول الكائن إلى بايتات للتخزين أو الإرسال وفك التسلسل يعيد بناءه وفك التسلسل غير الآمن إعادة بناء كائن من بيانات يتحكم بها المهاجم ثم الثقة به حقوله أو توقيعه أو حتى الفئة التي يسميها وفي أسوأ الحالات في اللغات ذات التسلسل الغني يقود اختيار النوع المناسب عند العودة إلى تنفيذ شيفرة مباشرة

هذه اللابات تحاكي التسلسل base64 لـ JSON وسجل gadget فلا ينفذ شيء حقيقي ولا يمس محرك اللابات والسلوك كائن معاد بناؤه موثوق وتوقيع متخطى ونوع gadget يشغل فعلا يطابق الثغرة الحقيقية

ما هي الثغرة؟

  • الثقة بالكائن المعاد بناؤه الجلسة كائن متسلسل فيه المستخدم والدور يفككه الخادم ويثق بالدور اقلبه إلى admin
  • مسار قديم بلا توقيع يضاف توقيع لكنه يتحقق فقط حين يوجد جرده يمر الكائن المزور
  • gadget عند فك التسلسل يبني فك التسلسل الفئة التي يسميها حقل __type ويشغل سلوكها نوع Report بريء لكن gadget من نوع Command ينفذ فعلا على الخادم ويسرب بيانات

لماذا تحدث؟

تعامل الصيغة كأنها حالة داخلية موثوقة لكنها مرت عبر العميل والتوقيع ينفع فقط إن كان إلزاميا وفك التسلسل الذي يبني أنواعا عشوائية يعطي المهاجم أداة بناء سلاسل الgadget الشهيرة

كيف تتوقف؟

احفظ الحالة الحساسة في الخادم ومعرف عشوائي فقط عند العميل أو وقعها واطلب توقيعا صالحا كل مرة ولا تفك تسلسل بايتات غير موثوقة إلى أنواع بسلوك بل حلل بيانات خالصة بمخطط وابن كائناتك من الحقول المتحقق منها

اللابات الثلاثة أدناه تمشي هذا زور كائن جلسة وجرد توقيعا وأطلق gadget

اللابات

  • كائن جلسة موثوق

    سهللاب في المتصفح

    زور كائن الجلسة لتصبح admin

  • تجريد التوقيع

    متوسطلاب في المتصفح

    زور الكائن بلا توقيع لتصبح admin

  • سلسلة gadget

    صعبلاب في المتصفح

    اصنع كائن gadget من نوع Command ينفذ ويسرب سر الخادم