
XStream SSRF CVE-2021-21349
भेद्यता
CVE-2021-21349: XStream के साथ अनमार्शलिंग करके सर्वर-साइड फोर्जरी अनुरोध सक्रिय किया जा सकता है, जिससे इंट्रानेट या स्थानीय होस्ट में किसी संसाधन को संदर्भित करने वाले किसी भी URL से डेटा स्ट्रीम तक पहुँचा जा सकता है।
प्रभावित संस्करण
बॉक्स से बाहर (out of the box) संस्करण का उपयोग करने पर, संस्करण 1.4.15 तक के सभी संस्करण प्रभावित हैं। जिन उपयोगकर्ताओं ने XStream के सुरक्षा ढाँचे को न्यूनतम आवश्यक प्रकारों तक सीमित व्हाइटलिस्ट के साथ सेट करने की अनुशंसा का पालन किया है, वे प्रभावित नहीं हैं।
विवरण
अनमार्शलिंग के समय संसाधित स्ट्रीम में पहले लिखी गई वस्तुओं को फिर से बनाने के लिए प्रकार की जानकारी होती है। XStream इस प्रकार की जानकारी के आधार पर नए उदाहरण बनाता है। एक हमलावर संसाधित इनपुट स्ट्रीम में हेरफेर कर सकता है और वस्तुओं को बदल या इंजेक्ट कर सकता है, जिसके परिणामस्वरूप सर्वर-साइड फोर्जरी अनुरोध होता है।

$ docker build -t cve-2021-21349 .
$ python -m http.server 8080
$ docker run -it --rm cve-2021-21349
Serving HTTP on :: port 8080 (http://[::]:8080/) ...
::ffff:127.0.0.1 - - [05/May/2021 16:35:39] "GET /internal.txt HTTP/1.1" 200 -
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);