
Apache Struts S2-072(CVE-2026-73633)の概念実証エクスプロイトで、Struts JSONプラグインに巧妙に細工されたJSONリクエストを送信し、CPUとメモリの枯渇を実証します。
サーバー側で有効化されている JSON body プラグインによる JSON フィリング(「JSON フィリング」は Struts 2 の JSON プラグインが提供する中核機能の一つで、簡単に言うと自動的なデータ変換メカニズムです。)
JSON フィリング機能のパーサーは、JSON 配列を処理する際に、リクエストボディのすべての JSON コンテンツを一度にメモリへ読み込みます(項目ごとにロード)
メモリ消費(および CPU 消費)を引き起こします
wsl2 と tomcat を使って Struts アプリケーションをデプロイし、ログインページを作成しました。ユーザー名は admin、パスワードは 123456 です。
実際のテストでは、コンピューター上で最も顕著に増加したのは CPU 使用率で、次いでメモリでした。また、リクエスト処理が完了すると CPU 使用率は解放されます。
メモリが OOM になると GC 回収がトリガーされ、メモリが満杯になることは決してなく、クラッシュにはほど遠い状態です。
コンテナのサーバーリソースが逼迫するだけで、メモリ使用量が一定の値(OOM トリガーポイント)まで上昇するとそれ以上は増加せず、GC による回収と再占有が繰り返され、また回収される、という状態が続きます…………
CPU の増加はフィリング値(--size)に比例します
git clone https://github.com/CuteeCat/CVE-2026-73633.git
cd CVE-2026-73633
cd docker
docker-compose build
docker-compose up -d
cd ..
python poc.py --url http://127.0.0.1:8080/login.action --local