
Apache Struts JSONプラグインのサービス拒否(DoS)脆弱性(CVE-2026-73633)を実証する概念実証エクスプロイト。巧妙に細工されたJSON配列を介したCPUおよびメモリ枯渇を示します。
サーバー側で有効になっているJSON bodyプラグインのJSONフィリング(「JSONフィリング」はStruts 2のJSONプラグインが提供するコア機能であり、簡単に言うと自動的なデータ変換メカニズムです。)
JSONフィリング機能のパーサーはJSON配列を処理する際に、すべてのリクエストボディのJSONコンテンツを一度にメモリへ読み込みます(項目ごとにロード)。
それにより消費が発生します(およびCPU消費)。
WSL2とTomcatでStrutsアプリケーションをデプロイし、ログインページを作成しました。ユーザー名はadmin、パスワードは123456です。
実際のテストでは、コンピュータで最も顕著に増加したのはCPU使用率で、次にメモリでした。また、リクエスト終了後(TCP接続終了後)はCPU使用率のみが解放され、メモリは自動的には解放されません。 (デフォルト設定でのテスト時間は3分で、ホストマシンのCPU使用率は7から32に上昇し、メモリは9.8GBから11GBに増加しました)遠く及ばず、クラッシュには至りませんでした。
単にコンテナのサーバーリソースを逼迫させるだけで、メモリ使用量が一定の固定値まで上昇すると、それ以上は上昇しなくなります。この固定値はフィリング値(--size)に比例します。