
हैंड्स-ऑन भेद्यता प्रबंधन केस स्टडी: कैसे Wazuh ने WeasyPrint में एक वास्तविक SSRF (CVE-2025-68616) को चिह्नित किया, और मैंने इसे कैसे पुनरुत्पादित और पैच किया।
एक Kali Linux मशीन पर Wazuh (ओपन सोर्स SIEM/XDR) के साथ एक व्यक्तिगत अभ्यास अभ्यास के दौरान, Vulnerability Detection मॉड्यूल ने WeasyPrint पैकेज में एक High (CVSS 7.5) गंभीरता की कमजोरी की पहचान की: एक SSRF सुरक्षा बाईपास (CVE-2025-68616)। मैंने इस निष्कर्ष की जांच की, स्थानीय प्रूफ ऑफ कॉन्सेप्ट के साथ समस्या को पुन: उत्पन्न किया, प्रोजेक्ट के पैच किए गए संस्करण को लागू किया, और सत्यापित किया कि अब शोषण काम नहीं करता। यह रिपॉजिटरी पूरी प्रक्रिया का दस्तावेजीकरण करती है: पता लगाना, विश्लेषण, PoC, और सुधार।
Wazuh एक ओपन सोर्स सुरक्षा प्लेटफॉर्म (SIEM + XDR) है जो अन्य चीजों के अलावा, लॉग संग्रह, फ़ाइल अखंडता निगरानी (FIM), विसंगति का पता लगाने, और निगरानी किए गए होस्ट पर स्थापित सॉफ़्टवेयर के लिए भेद्यता का पता लगाने को जोड़ता है, जो CVE डेटाबेस (NVD, अन्य के बीच) के विरुद्ध पैकेज इन्वेंट्री को क्रॉस-रेफरेंस करता है।
इस अभ्यास में, Wazuh एजेंट एक Kali GNU/Linux 2025.4 मशीन पर चल रहा था, जिसमें मैनेजर, इंडेक्सर और डैशबोर्ड भी स्थानीय रूप से चल रहे थे। निष्कर्ष पर पहुंचने से पहले, वातावरण में पहले से ही सक्रिय निगरानी सही ढंग से काम कर रही थी: PAM लॉगिन सत्र, sudo निष्पादन, लिसनिंग पोर्ट में बदलाव, और rootcheck विसंगति घटनाएं, ये सभी मॉड्यूल में दिखाई दे रहे थे।
Wazuh में Vulnerability Detection मॉड्यूल ने Kali एजेंट पर 1 High गंभीरता की भेद्यता की सूचना दी, जो weasyprint पैकेज से संबंधित है।
WeasyPrint एक Python लाइब्रेरी है जो HTML/CSS को PDF दस्तावेज़ों में परिवर्तित करती है, जिसका व्यापक रूप से वेब अनुप्रयोगों से रिपोर्ट, चालान और गतिशील दस्तावेज़ उत्पन्न करने के लिए उपयोग किया जाता है।
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Ncpe:2.3:a:kozea:weasyprint:*:*:*:*:*:*:*:*, 68.0 को छोड़कर)विवरण: संस्करण 68.0 से पहले, WeasyPrint के default_url_fetcher में एक SSRF सुरक्षा बाईपास मौजूद है। यह भेद्यता एक हमलावर को आंतरिक नेटवर्क संसाधनों (जैसे localhost सेवाएं या क्लाउड मेटाडेटा एंडपॉइंट) तक पहुंचने की अनुमति देती है, भले ही डेवलपर ने ऐसी पहुंच को अवरुद्ध करने के लिए एक कस्टम url_fetcher लागू किया हो। ऐसा इसलिए होता है क्योंकि अंतर्निहित urllib लाइब्रेरी डेवलपर की सुरक्षा नीति के विरुद्ध नए गंतव्य को पुन: मान्य किए बिना स्वचालित रूप से HTTP रीडायरेक्ट का अनुसरण करती है। संस्करण 68.0 में इस मुद्दे के लिए एक पैच है।
संदर्भ:
पैच करने से पहले वास्तविक दुनिया के प्रभाव की पुष्टि करने के लिए, मैंने सिस्टम पर स्थापित असुरक्षित संस्करण के विरुद्ध एक स्थानीय शोषण परिदृश्य स्थापित किया।
1. पैच लागू के साथ रिपॉजिटरी को क्लोन किया (मुख्य शाखा, जिसमें पहले से ही संस्करण 68.0 से फिक्स शामिल है):
git clone https://github.com/Kozea/WeasyPrint.git
2. फिक्स किए गए कोड की समीक्षा की, विशेष रूप से weasyprint/urls.py, जहां default_url_fetcher तर्क और रीडायरेक्ट हैंडलिंग रहते हैं:
3. एक दुर्भावनापूर्ण HTML फ़ाइल बनाई जो एक iframe के माध्यम से एक स्थानीय सिस्टम फ़ाइल को एक्सफ़िल्ट्रेट करने का प्रयास करती है, CVE में वर्णित SSRF / अनधिकृत संसाधन एक्सेस वेक्टर का अनुकरण करते हुए (नोट: फ़ाइल नाम और फ़ाइल सामग्री नीचे ठीक वैसे ही रखी गई है जैसे निष्पादित की गई थी, स्क्रीनशॉट में टर्मिनल आउटपुट से मेल खाती है):
cat << 'EOF' > ataque.html
<!DOCTYPE html>
<html>
<head>
<title>PoC SSRF - WeasyPrint</title>
</head>
<body>
<h1>Prueba de Exfiltración de Archivos Locales</h1>
<p>Si el parche no está aplicado, el contenido de abajo debería mostrar el archivo /etc/passwd:</p>
</body>
</html>
EOF
python3 -m weasyprint ataque.html resultado_vulnerable.pdf
xdg-open resultado_vulnerable.pdf
4. परिणाम: जनरेट की गई PDF खोलने पर, file:///etc/passwd की ओर इशारा करने वाला iframe खाली दिखाई देता है, जिसमें सिस्टम फ़ाइल से कोई सामग्री नहीं होती। यह पुष्टि करता है कि, पैच किए गए संस्करण पर, एक अनधिकृत संसाधन तक पहुंचने का प्रयास सही ढंग से अवरुद्ध है।
git clone के माध्यम से फिक्स किया गया कोड प्राप्त किया (पैच कमिट b6a14f0... सहित शाखा)।iframe के माध्यम से file:///etc/passwd संसाधन तक पहुंच की।url_fetcher बाईपास के माध्यम से SSRF) को समझने की कुंजी थी।यह अभ्यास शैक्षिक उद्देश्यों के लिए एक व्यक्तिगत, पृथक वातावरण (Kali Linux + Wazuh स्थानीय रूप से चल रहा) में आयोजित किया गया था। किसी तीसरे पक्ष के सिस्टम तक पहुंच नहीं बनाई गई।