
Apache Tomcat सुरक्षा बाईपास भेद्यता PoC

हाल ही में, Apache ने एक सुरक्षा बुलेटिन जारी किया जिसमें कहा गया कि Apache Tomcat 7, 8, 9 के कई संस्करणों में सुरक्षा बाईपास भेद्यता मौजूद है। हमलावर इस समस्या का उपयोग करके कुछ सुरक्षा प्रतिबंधों को दरकिनार करके अनधिकृत कार्य कर सकते हैं, जो आगे के हमले में सहायक हो सकता है।
Apache Tomcat servlet एनोटेशन द्वारा परिभाषित सुरक्षा प्रतिबंध केवल एक बार लागू होते हैं, जब servlet लोड हो जाता है। चूंकि इस प्रकार परिभाषित सुरक्षा प्रतिबंध, URL पैटर्न और उस बिंदु के नीचे किसी भी URL पर लागू होते हैं, यह संभवतः servlet लोड होने के क्रम पर निर्भर करता है, जो संसाधनों को उन उपयोगकर्ताओं के लिए उजागर कर सकता है जिन्हें उन तक पहुँचने का अधिकार नहीं है।
CVE-2018-1305
Apache Tomcat < 9.0.5
Apache Tomcat < 8.5.28
Apache Tomcat < 8.0.50
Apache Tomcat < 7.0.85
मध्यम
Java EE, ACL अनुमति जाँच के समान ServletSecurity एनोटेशन प्रदान करता है, जिसका उपयोग Servlet को संशोधित करके उनकी सुरक्षा के लिए किया जा सकता है। यदि दो servlet हैं: Servlet1 जिसका पथ "/servlet1/" है और उस पर ServletSecurity एनोटेशन लागू है, और Servlet2 जिसका पथ "/servlet1/servlet2/" है लेकिन उस पर कोई ServletSecurity एनोटेशन नहीं है, तो पहली बार servlet1/servlet2 तक पहुँचने पर Servlet1 का ServletSecurity एनोटेशन प्रभावी नहीं होगा और "/servlet1/servlet2" पथ की रक्षा नहीं कर पाएगा, जिससे अनधिकृत पहुँच हो सकती है।
यदि "/servlet1/servlet2" तक पहुँचने से पहले "/servlet1" तक पहुँचा गया हो, तो Tomcat ACL लोड करेगा और "/servlet1/servlet2" की सुरक्षा शुरू करेगा, जिससे भेद्यता ट्रिगर नहीं होगी।

Servlet1 पर ServletSecurity एनोटेशन जोड़ा गया है, Servlet2 पर यह एनोटेशन नहीं है।

web.xml फ़ाइल में servlet से संबंधित url-pattern को नीचे दिए गए चित्र के अनुसार संशोधित करने के बाद।

प्रोजेक्ट चलाएँ। पहली बार servlet2 के URL तक पहुँचने पर, पता चला कि अनधिकृत पहुँच संभव है, Servlet1 के लिए ACL प्रभावी नहीं हुआ।

दूसरी बार servlet1 के URL तक पहुँचने पर, पहुँच प्रतिबंधित हो गई, इस समय ACL प्रभावी हुआ।

फिर से servlet2 के URL तक पहुँचने पर, पहुँच प्रतिबंधित पाई गई। यदि ACL को servlet2 पर प्रभावी होना है, तो यह केवल तभी संभव है जब servlet1 पहले एक्सेस किया गया हो।


इस प्रकार, भेद्यता का पुनर्निर्माण केवल तभी सीमित है जब Tomcat शुरू होने के बाद, "/servlet1/" तक पहुँचने से पहले "/servlet1/servlet2/" पृष्ठ तक पहुँचा गया हो। यदि पहले किसी ने "/servlet1/*" पृष्ठ तक पहुँच बनाई हो, तो भेद्यता ट्रिगर नहीं होगी। भेद्यता का खतरा अधिक है, लेकिन इसका उपयोग करने की स्थितियाँ कठिन हैं, इसलिए प्रभाव का दायरा बड़ा नहीं है।