ثغرات GSON أو برمجيات إكسبلويت عند إلغاء التسلسل لتجنبها

StackOverflow https://stackoverflow.com/questions/8403277

سؤال

أخطط لاستخدام طريقة gson's fromJson () لتحليل سلسلة قادمة من المتصفح.هل هناك أي نقاط ضعف محتملة مرتبطة بفعل ذلك؟نوع البيانات الذي أقوم بالتحويل إليه بسيط نسبيًا ، قائمة ومنطقية.ولكن بما أن gson يستخدم الانعكاس ، فهل هناك شيء يجب أن أحترس منه؟

على سبيل المثال ، مع jvm الأقدم (ما قبل 6.24) ، كان من الممكن استخدام هجوم DOS ضد الأعداد الصحيحة ، حيث سيتوقف محلل العدد الصحيح.

هل يمكن لبعض برامج json الذكية أن تجعل gson يبدأ في تحميل الفئات كما ينبغي؟

هل كانت مفيدة؟

المحلول

الشيء الذي يجب مشاهدته مع Gson هو نوع المُنشئ الذي تستخدمه (راجع جهاز إلغاء التسلسل / جهاز التسلسل المخصص)

يعاني Gson من نقطة ضعف أخرى ، عندما تقوم بإلغاء التسلسل ، (دعنا نقول باستخدام واحدة مخصصة) ، فمن الأفضل أن تتحقق من نوع الكائن الذي تمرره (استخدم مثيلاً).

نقطة رئيسية أخرى: سيقوم Gson تلقائيًا بتحويل المتغير بناءً على النوع الذي يتم تمريره.

على سبيل المثال.{"var1": 1، "var2": "1"} سيتم تحويل الأول إلى عدد صحيح ، والثاني على أساس سلسلة ، لذلك سأحترس من تحويل الكائنات الخاصة بك.

نصائح أخرى

لأسباب أمنية ، أوصى مطور مشروع Gson بعدم السماح لكود إلغاء التسلسل بتحميل تعريفات فئة محددة من قبل المستخدم - يجب التحكم بعناية في إلغاء تسلسل الأشياء ذات النوع العام.

ليس من الصعب كتابة محلل JSON ، وأي إصدار مفتوح المصدر جيد الاستخدام يجب أن يكون آمنًا كما يأمل المرء.بالطبع ، يمكن أن يحتوي المحلل اللغوي على خطأ يجعله خاضعًا لتجاوز المخزن المؤقت وما شابه ، ولكن ، مرة أخرى ، المنطق بسيط بما يكفي بحيث لا يحدث ذلك إذا كانت الشفرة مكتوبة جيدًا ومراجعتها جيدًا.

يتمثل الخطر الأكبر في أنك قد لا تفحص نتائج التحليل بشكل صحيح وتقبل ، على سبيل المثال ، رقمًا خارج النطاق لتطبيقك ، أو سلسلة طويلة جدًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top