
CVE-2025-55182 (React2Shell) का विस्तृत तकनीकी वॉकथ्रू, React के Flight प्रोटोकॉल आंतरिक का पता लगाकर एक्सप्लॉइट श्रृंखला, पेलोड निर्माण, और फिक्स विश्लेषण की व्याख्या करता है।
लेखक: Kavienan J
कमजोरी खोजकर्ता: lachlan2k, जिन्होंने इसे React टीम को जिम्मेदारीपूर्वक सूचित किया।
इस कमजोरी पर अपडेट के लिए, देखें: react2shell.com
CVE-2025-55182 की गंभीरता 10.0/10.0 आंकी गई है। यदि आपने सार्वजनिक PoCs को देखा है, तो आपने देखा होगा कि जहां वे एक्सप्लॉइट के काम करने को दिखाते हैं, वहीं की व्याख्या अपर्याप्त लग सकती है—जो React Flight प्रोटोकॉल की जटिलता को देखते हुए पूरी तरह उचित है। Flight, जो React Server Components और Server Actions के पीछे सीरियलाइज़ेशन परत है, एक जटिल 1,100+ पंक्तियों की स्टेट मशीन है, और इसका व्यवहार तब तक सहज नहीं लगता जब तक आप कोड को स्वयं ट्रेस न करें।
समुदाय के PoCs इस कमजोरी को स्पष्ट रूप से प्रदर्शित करते हैं:
…लेकिन जब आप "यह क्यों काम करता है?" का उत्तर खोजने की कोशिश करते हैं, तो आप जल्दी ही React के आंतरिक भागों में गहरे उतर जाते हैं जिन्हें कभी पंक्ति दर पंक्ति पढ़ने के लिए नहीं बनाया गया था।
नोट: कई PoCs गलती से सुधार का श्रेय
requireModuleमें बदलावों को देते हैं। जैसा कि हम सुधार में देखेंगे, एक्सप्लॉइट पेलोड कभी उस फ़ंक्शन तक नहीं पहुँचता—वास्तविक कमजोर कोड पूरी तरहReactFlightReplyServer.jsमें स्थित है।
यह लेख React की डिकोडिंग और चंक-इनिशियलाइज़ेशन लॉजिक को चरण दर चरण ट्रेस करके एक्सप्लॉइट श्रृंखला को रिवर्स-इंजीनियर करने का मेरा प्रयास है। यहाँ चर्चित प्रत्येक व्यवहार सीधे ReactFlightReplyServer.js के सुधार से पहले के काम करने के तरीके से आता है (संदर्भ: https://github.com/facebook/react/blob/v19.2.0/packages/react-server/src/ReactFlightReplyServer.js), इसे सरलीकृत और संक्षिप्त किया गया है ताकि एक React/JS डेवलपर पर्याप्त धैर्य के साथ इसका अनुसरण कर सके।
अगला भाग: पृष्ठभूमि