
このテストは、Spring Framework において CVE-2024-38828 の脆弱性がある場合とない場合の動作・応答を検証します。
ByteArrayHttpMessageConverter では、リクエストヘッダー Content-Length に基づいて ByteArrayOutputStream にメモリが割り当てられますが、実際のボディが 0 バイトである場合と一致しない可能性があります。このようなリクエストが急増すると (DoS)、メモリ使用効率が悪くなり、定期的な GC クリーンアップが発生し、アプリケーションが遅延し始めます。これを実装・修正する方法とメトリクスを示します。

CVE-2024-38828 は、Spring Framework におけるサービス拒否 (DoS) 型の脆弱性であり、攻撃者が Spring MVC コントローラの byte[] 型パラメータを介してサーバーのメモリ枯渇を引き起こす可能性があります。
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