CVE-2025-24813: Apache Tomcat Partial PUT RCE
Apache Tomcat में एक क्रिटिकल भेद्यता सिर्फ़ दो HTTP रिक्वेस्ट का उपयोग करके अनऑथेंटिकेटेड रिमोट कोड एक्ज़ीक्यूशन की अनुमति देती है। यह हमला एक सीरियलाइज़्ड Java ऑब्जेक्ट अपलोड करने के लिए Tomcat की partial PUT सुविधा का शोषण करता है, फिर GET रिक्वेस्ट के ज़रिए डिसीरियलाइज़ेशन ट्रिगर करता है। CVSS 9.8। यह डिफ़ॉल्ट कॉन्फ़िगरेशन के साथ Tomcat 9, 10, और 11 को प्रभावित करता है।
| विशेषता | मान |
|---|---|
| CVE ID | CVE-2025-24813 |
| CVSS Vector | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन |
| प्रकाशित | 10 मार्च 2025 |
| शोषण | सक्रिय — 30 घंटों के भीतर सार्वजनिक PoC जारी |
CVE-2025-24813 क्या है?
Apache Tomcat "partial PUT" का समर्थन करता है — एक HTTP सुविधा जो क्लाइंट को Content-Range हेडर का उपयोग करके बड़ी फ़ाइलों को खंडों में अपलोड करने देती है। Tomcat इन आंशिक अपलोड को एक वर्क डायरेक्टरी में टेम्पररी फ़ाइलों के रूप में स्टोर करता है। यह भेद्यता इस इम्प्लीमेंटेशन में दो ख़ामियों से उत्पन्न होती है:
- टेम्पररी फ़ाइल का नाम अपलोड URL पाथ से लिया जाता है, जो आंशिक रूप से हमलावर-नियंत्रित होता है
- अगर Java सेशन-पर्सिस्टेंस तंत्र सक्षम है (सेशन को फ़ाइलों में स्टोर करना), तो Tomcat वर्क डायरेक्टरी की किसी भी उस फ़ाइल को डिसीरियलाइज़ कर सकता है जिसका
.sessionएक्सटेंशन हो
हमलावर इन ख़ामियों को मिलाकर एक दुर्भावनापूर्ण सीरियलाइज़्ड Java ऑब्जेक्ट को आंशिक अपलोड के रूप में छिपाकर अपलोड कर सकता है, फिर एक ऐसा URL रिक्वेस्ट करके उसका डिसीरियलाइज़ेशन ट्रिगर कर सकता है जिसे Tomcat सेशन-लुकअप के रूप में समझता है।
🚨 30 घंटों के भीतर सार्वजनिक PoC
CVE-2025-24813 के खुलासे के लगभग 30 घंटे बाद GitHub पर एक काम करने वाला एक्सप्लॉइट प्रकाशित हुआ। दो-रिक्वेस्ट वाला यह हमला स्वचालित करना बेहद आसान है, और कुछ ही दिनों में बड़े पैमाने पर शोषण-कैंपेन देखे गए। डिफ़ॉल्ट कॉन्फ़िगरेशन वाला कोई भी अनपैच्ड इंटरनेट-फ़ेसिंग Tomcat सर्वर भंग माना जाना चाहिए।
प्रभावित वर्ज़न
| Tomcat वर्ज़न | प्रभावित रेंज | फ़िक्स्ड वर्ज़न |
|---|---|---|
| Apache Tomcat 11.x | 11.0.0-M1 से 11.0.2 तक | 11.0.3+ |
| Apache Tomcat 10.x | 10.1.0-M1 से 10.1.34 तक | 10.1.35+ |
| Apache Tomcat 9.x | 9.0.0.M1 से 9.0.98 तक | 9.0.99+ |
RCE के लिए पूर्व-शर्तें: दोनों शर्तें सत्य होनी चाहिए:
- डिफ़ॉल्ट सर्वलेट में राइट सक्षम है (
readonly=false) — यह डिफ़ॉल्ट नहीं है; इसे स्पष्ट रूप से कॉन्फ़िगर किया जाना चाहिए - फ़ाइल-आधारित सेशन-पर्सिस्टेंस कॉन्फ़िगर की गई है — या partial PUT राइट किसी डिसीरियलाइज़ेशन-सुलभ पाथ में जाते हैं
पूर्व-शर्तों पर नोट: कुछ स्रोतों ने शुरुआत में बताया कि पूर्व-शर्तें सख़्त थीं। हालाँकि, असल-दुनिया के विश्लेषण से पता चला कि कुछ आम Tomcat कॉन्फ़िगरेशन (कुछ एप्लिकेशन-सर्वर डिस्ट्रीब्यूशन सहित) दोनों शर्तें पूरी करते हैं। फिर भी पैच करें — CVSS स्कोर सबसे बुरी स्थिति को दर्शाता है।
दो-रिक्वेस्ट वाला हमला
# Request 1: Upload malicious serialized object as partial PUT PUT /.xxxxx HTTP/1.1 Host: target.com Content-Type: application/octet-stream Content-Range: bytes 0-1233/1234 Content-Length: 1234 [serialized Java gadget chain payload — e.g., Commons Collections] # Tomcat stores this as a temp file in work directory # File name derived from URL: .xxxxx → stored as partial upload # Request 2: Trigger deserialization via session lookup GET /.xxxxx HTTP/1.1 Host: target.com Cookie: JSESSIONID=.xxxxx # Tomcat looks up session file matching the session ID # Finds attacker's file → deserializes it → RCE
Tomcat एक उच्च-मूल्य वाला लक्ष्य क्यों है
Apache Tomcat दुनिया भर में सबसे व्यापक रूप से डिप्लॉय किए गए Java एप्लिकेशन सर्वरों में से एक है, इनमें उपयोग किया जाता है:
- एंटरप्राइज़ Java वेब-एप्लिकेशन
- WAR फ़ाइलों के रूप में डिप्लॉय किए गए Spring Boot एप्लिकेशन
- लेगेसी J2EE एप्लिकेशन
- इंटरनल HR, ERP, और बिज़नेस एप्लिकेशन
- क्लाउड-नेटिव माइक्रोसर्विस
Tomcat में RCE का अक्सर मतलब है डेटाबेस क्रेडेंशियल्स, इंटरनल API, और उस पर चल रहे एप्लिकेशन द्वारा स्टोर किए गए संवेदनशील बिज़नेस डेटा तक पहुँच।
पहचान
# Check Tomcat version /opt/tomcat/bin/version.sh # or check catalina.jar manifest unzip -p /opt/tomcat/lib/catalina.jar META-INF/MANIFEST.MF | grep Implementation-Version # Check for suspicious partial PUT uploads in access logs grep 'PUT' /opt/tomcat/logs/localhost_access_log.* | grep -v '200\|201\|204' grep 'PUT.*Content-Range' /opt/tomcat/logs/localhost_access_log.* # Check for unusual files in Tomcat work directory find /opt/tomcat/work -name "*.session" -newer /opt/tomcat/conf/server.xml find /opt/tomcat/work -type f -newer /opt/tomcat/conf/server.xml # Check if default servlet write is enabled grep -r "readonly" /opt/tomcat/conf/web.xml /opt/tomcat/webapps/
सुधार
- तुरंत पैच करें: Tomcat 9.0.99+, 10.1.35+, या 11.0.3+ में अपग्रेड करें
- डिफ़ॉल्ट सर्वलेट राइट अक्षम करें (अगर ज़रूरत न हो):
<servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>readonly</param-name> <param-value>true</param-value> <!-- Ensure this is true --> </init-param> </servlet> - फ़ाइल-आधारित सेशन-पर्सिस्टेंस अक्षम करें: इन-मेमोरी या डेटाबेस सेशन-पर्सिस्टेंस पर स्विच करें
- WAF नियम डिप्लॉय करें: ऐसे HTTP PUT रिक्वेस्ट ब्लॉक करें जिनमें
Content-Rangeहेडर हो, अगर ज़रूरत न हो - Java डिसीरियलाइज़ेशन फ़िल्टर का उपयोग करें: डिसीरियलाइज़ेबल क्लास को प्रतिबंधित करने के लिए Java 9+ सीरियलाइज़ेशन फ़िल्टर कॉन्फ़िगर करें
KENSAI पहचान क्षमता
- Tomcat वर्ज़न पहचान: KENSAI सभी इंटरनेट-फ़ेसिंग एसेट पर HTTP हेडर, एरर पेज, और डिफ़ॉल्ट पाथ से Apache Tomcat वर्ज़न फ़िंगरप्रिंट करता है
- सुरक्षित शोषण प्रोब: पेलोड निष्पादित किए बिना CVE-2025-24813 की शोषण-योग्यता की पुष्टि करता है
- कॉन्फ़िगरेशन ऑडिट: राइट-सक्षम डिफ़ॉल्ट सर्वलेट और फ़ाइल-आधारित सेशन-पर्सिस्टेंस की मौजूदगी की जाँच करता है
- इंटरनल खोज: एजेंट या नेटवर्क स्कैनिंग के ज़रिए इंटरनल नेटवर्क पर चल रहे Tomcat इंस्टेंस को खोजता है
- स्वचालित री-टेस्टिंग: सुधार के बाद पैच लागू होने की पुष्टि करता है
हमलावरों से पहले अपने उजागर Tomcat सर्वर खोजें
KENSAI आपके एनवायरनमेंट में हर Apache Tomcat इंस्टेंस की पहचान करता है और CVE-2025-24813 तथा अन्य क्रिटिकल Java एप्लिकेशन-सर्वर भेद्यताओं के लिए परीक्षण करता है।
Tomcat भेद्यताओं के लिए स्कैन करें →