
CVE-2025-65637: Logrus सेवा अस्वीकार भेद्यता
इस निर्देशिका में github.com/sirupsen/logrus में डिनायल ऑफ सर्विस (DoS) भेद्यता के लिए प्रूफ-ऑफ-कॉन्सेप्ट कोड और परीक्षण स्क्रिप्ट शामिल हैं, जिसे CVE-2025-65637 के रूप में नामित किया गया है।
CVE ID: CVE-2025-65637
CWE: CWE-400 (अनियंत्रित संसाधन खपत)
CVSS: 7.5 (उच्च)
खोजकर्ता: Christopher Straight, Juan Pablo Mandelbaum
github.com/sirupsen/logrus में एक डिनायल-ऑफ-सर्विस भेद्यता मौजूद है, जब Entry.Writer() का उपयोग करके न्यूलाइन वर्णों के बिना 64KB से बड़ा सिंगल-लाइन पेलोड लॉग किया जाता है।
आंतरिक bufio.Scanner की सीमाओं के कारण, रीड "token too long" के साथ विफल हो जाती है और राइटर पाइप बंद हो जाता है, जिससे Writer() अनुपयोगी रह जाता है और एप्लिकेशन अनुपलब्धता (DoS) उत्पन्न होती है।
यह < 1.8.3, 1.9.0, और 1.9.2 संस्करणों को प्रभावित करता है। यह समस्या 1.8.3, 1.9.1, और 1.9.3+ में ठीक कर दी गई है, जहाँ इनपुट को चंक किया जाता है और त्रुटि लॉग होने पर भी राइटर कार्य करता रहता है।
प्रभावित संस्करण:
< v1.8.3 (v1.8.1, v1.8.2 सहित)
v1.9.0
v1.9.2
पैच किए गए संस्करण:
v1.8.3
v1.9.1
v1.9.3+
poc_logrus_dos_improved.go - भेद्यता प्रदर्शित करने वाला स्टैंडअलोन PoC
poc_logrus_dos.go - सरल PoC संस्करण
test_versions.ps1 - कई संस्करणों के परीक्षण के लिए PowerShell स्क्रिप्ट
test_versions.sh - कई संस्करणों के परीक्षण के लिए Bash स्क्रिप्ट
test_single_version.ps1 - एकल संस्करण के लिए त्वरित परीक्षण
# PowerShell
.\test_single_version.ps1 v1.8.1
# PowerShell
.\test_versions.ps1
# Bash/Linux
chmod +x test_versions.sh
./test_versions.sh
go mod init poclogrus
go get github.com/sirupsen/[email protected]
go run poc_logrus_dos_improved.go
व्यापक परीक्षण पुष्टि करता है:
| संस्करण | स्थिति | त्रुटि है | राइटर टूटा |
|---|---|---|---|
| v1.8.1 | असुरक्षित | True | True |
| v1.8.2 | असुरक्षित | True | True |
| v1.8.3 | पैच किया गया | True | False |
| v1.9.0 | असुरक्षित | True | True |
| v1.9.1 | पैच किया गया | True | False |
| v1.9.2 | असुरक्षित | True | True |
| v1.9.3 | पैच किया गया | True | False |
यह भेद्यता तब उत्पन्न होती है जब logrus.Writer() को न्यूलाइन के बिना 64KB से बड़ी एकल पंक्ति प्राप्त होती है। यह तब हो सकता है जब एप्लिकेशन उपयोगकर्ता-नियंत्रित डेटा (जैसे User-Agent जैसे HTTP हेडर या किसी सब-प्रोसेस का stdout/stderr) को logrus.Writer() में पाइप करते हैं।
असुरक्षित संस्करण: आंतरिक स्कैनर विफल हो जाता है, पाइप टूट जाता है, और एप्लिकेशन लॉगिंग खो देता है या क्रैश हो जाता है (DoS)।
पैच किए गए संस्करण: त्रुटि लॉग हो जाती है, लेकिन राइटर सही ढंग से कार्य करता रहता है, जिससे DoS को रोका जाता है।