Java向けWebフレームワークApache Wicketに、コンポーネントIDやHTML要素のIDを生成JavaScriptへ埋め込む際の処理に起因するXSS脆弱性が公表された。CVE-2026-95863は開発元CNA評価でCVSS v4.0 7.6(HIGH)。既定のCSPでは防げない経路があり、修正版への更新に加え、IDの文字種チェック強化によるアプリの互換性も確認する必要がある。
30秒でわかる / THE SIGNAL
Java向けWebフレームワークApache Wicketに、コンポーネントIDやHTML要素のIDを生成JavaScriptへ埋め込む際の処理に起因するXSS脆弱性が公表された。CVE-2026-95863は開発元CNA評価でCVSS v4.0 7.6(HIGH)。既定のCSPでは防げない経路があり、修正版への更新に加え、IDの文字種チェック強化によるアプリの互換性も確認する必要がある。
画面部品のIDがJavaScriptに組み込まれる
Apache Software Foundationが2026年11月1日(UTC)に公表したCVE-2026-95863は、Wicketが画面部品のマークアップIDやフォーム部品の入力名をJavaScript文字列に埋め込む際の処理に関する脆弱性だ。対象となるIDに特定の文字が含まれると、出力先のJavaScriptの文字列として適切に扱われず、アプリケーションと同じオリジンで意図しないスクリプトが実行される恐れがある。
CNA原本は、wicket-coreのFormやFormComponentUpdatingBehavior、MultiFileUploadFieldのほか、wicket-extensionsの複数コンポーネントに関係する経路を列挙している。ただし、Wicket自身が危険なIDを自動生成するわけではない。アプリ側が設定したID、テンプレートのID、データから導出されたIDなどに問題となる文字が含まれることが成立条件であり、すべてのWicketアプリで直ちに悪用できると断定できない。
既定のCSPだけでは防げない理由
Wicket 9.x/10.xでは、生成するスクリプト要素にリクエストごとのnonceを付与するCSPが既定で利用される。しかし今回の問題は、許可済みのスクリプト要素の内部で発生する。開発元CNAは、この経路について既定のCSPでは防げないと明記している。
この点は、同日に別Issue #162で扱ったリソースバンドル文言のXSSと共通するが、今回の入力源は文言ではなくコンポーネントID/マークアップIDだ。開発者はCSPの設定確認だけでなく、IDを組み立てる実装とテンプレートの値を点検する必要がある。
影響範囲と修正版、更新時の互換性
影響するのはWicket 8.0.0~8.19.0、9.0.0~9.24.0、10.0.0~10.11.0。Apache CNAは修正版として8.20.0、9.25.0、10.12.0を示している。開発元によれば8.xと9.xは最終リリースに達し、今後のセキュリティ修正を提供しない。長期運用にはサポート中の10系LTSなどへの移行が必要だ。
修正は各出力箇所でのエスケープ追加ではなく、IDを受け取る段階で一部の記号・制御文字を拒否する方式を採る。このため、旧版で使えていた独自IDが更新後に例外を引き起こす可能性がある。更新後はフォーム、Ajaxイベント、画面遷移などを含む回帰テストで動作を確かめたい。
実悪用と影響の限界
今回確認したApache CNA原本と公式リリースには、本CVEの実環境での悪用を確証する情報はない。GitHub Advisory DatabaseはHIGH 7.6と表示する一方、パッケージ別の影響・修正バージョン欄はUnknownであり、具体的な範囲はApache CNA原本を根拠とした。CISA KEVの2026年10月30日版はCVE公表前のため、同版に掲載がないことを悪用不存在の証拠とはしない。