该测试检查在存在与不存在 CVE-2024-38828 漏洞时 Spring Framework 的行为/反应。
在 ByteArrayHttpMessageConverter 中,会根据请求头 Content-Length 在 ByteArrayOutputStream 中分配内存,这可能与实际为 0 字节的请求体不符。当此类请求急剧增加时(DoS),内存使用效率低下,GC 清理频繁出现,应用开始卡顿。我将展示如何实现/修复以及相关指标。

CVE-2024-38828 是 Spring Framework 中的一种拒绝服务(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', # Минимальный payload
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