
XStream DoS CVE-2021-21341
الثغرة
CVE-2021-21341: يمكن أن يتسبب XStream في رفض الخدمة (Denial of Service).
الإصدارات المتأثرة
جميع الإصدارات حتى الإصدار 1.4.15 وما يشمله متأثرة عند استخدام الإصدار بشكله الافتراضي (out of the box). ولا يتأثر أي مستخدم اتبع التوصية بإعداد إطار الأمان الخاص بـ XStream باستخدام قائمة بيضاء (whitelist) مقتصرة على الحد الأدنى من الأنواع المطلوبة.
الوصف
يحتوي الدفق المُعالَج وقت إلغاء التسلسل (unmarshalling) على معلومات النوع (type information) لإعادة إنشاء الكائنات التي كُتبت سابقًا. لذلك ينشئ XStream مثيلات جديدة بناءً على معلومات النوع هذه. يمكن للمهاجم التلاعب بدفق الإدخال المُعالَج واستبدال ByteArrayInputStream مُتلاعب به (أو فئة مشتقة منه) أو حقنه، مما قد يسبب حلقة لا نهائية تؤدي إلى رفض الخدمة.

$ docker build -t cve-2021-21341 .
$ docker run -it --rm cve-2021-21341
Security framework of XStream not explicitly initialized, using predefined black list on your own risk.
(never end)
غيّر pom.xml إلى ما يلي
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.16</version>
</dependency>
أضف NoTypePermission.NONE
import com.thoughtworks.xstream.security.NoTypePermission; // Add
XStream xstream = new XStream();
xstream.addPermission(NoTypePermission.NONE); // Add
xstream.fromXML(xml);