Vaadin Framework 8で不正なv-uiIdによりサービス停止のおそれ
概要
Vaadin Framework 8の一部版では、v-uiIdパラメータに数値以外を指定したリクエストでセッションのロックが解放されず、同じセッションへの後続リクエストが止まるおそれがあります。認証は不要で、繰り返されるとスレッドプールが枯渇しアプリケーションが停止するおそれがあります。影響を受けるのは8.16.0から8.32.1で、8.32.2以降へのアップグレードで修正されます。
AI要約
外部の AI が作成した要約です。誤りを含むことがあります。重要な判断の前に、下の原文と参照URLを確認してください。
Vaadin Framework 8の一部版では、v-uiIdパラメータに数値以外を指定したリクエストでセッションのロックが解放されず、同じセッションへの後続リクエストが止まるおそれがあります。認証は不要で、繰り返されるとスレッドプールが枯渇しアプリケーションが停止するおそれがあります。影響を受けるのは8.16.0から8.32.1で、8.32.2以降へのアップグレードで修正されます。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| vaadin | framework |
8.18.0 以上 8.32.2 未満 |
8.32.2 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
VaadinService.requestEnd() in Vaadin Framework 8 locks the session and then reads the v-uiId request parameter outside the block that releases the lock. A request carrying a non-numeric v-uiId makes Integer.parseInt throw while the session lock is held, so the lock is never released and the container thread returns to its pool still owning it. Every later request to that session then blocks forever in VaadinService.lockSession(), and repeating the request exhausts the thread pool and takes the application down. No authentication is required: a session cookie, which any client obtains with a single request, is enough. Vaadin 10 and later are not affected, because Flow releases the lock in a finally block and does not read that parameter there, and Vaadin Framework 7 is not affected either.
Users of affected versions should apply the following mitigation or upgrade. Releases that have fixed this issue include:
Product version
Vaadin Framework 8.16.0 - 8.32.1
Mitigation
Upgrade to 8.32.2
Vaadin Framework 7 and Vaadin 10 and later do not carry this behaviour and need no upgrade for this issue.
Artifacts
Maven coordinates / Vulnerable versions / Fixed version
com.vaadin:vaadin-server / 8.16.0 - 8.32.1 / >=8.32.2
com.vaadin:vaadin-server-mpr-jakarta / 8.18.0 - 8.32.1 / >=8.32.2
出典: CVE.org (CVE Program・cvelistV5) NVD