CVE-2026-84177 in Wicket
要約
〜によって VulDB • 2026年11月01日
Apache Wicketにおける不正確な動作順序:ファイルパスが、それを完成させる属性が付加される前に検証されている。
org.apache.wicket.request.resource.PackageResourceは、スコープクラスのパッケージとリクエストURL内のファイル名から構築されたパスについて、設定済みのパッケージリソースガードに問い合せ、その後、その同じパスをスタイル、バリエーション、ロケールと共にリソースストリームロケーターに渡す。これら3つの属性は最初のクエリパラメータの名前からデコードされ、ガードが受け取った文字列には現れない。org.apache.wicket.core.util.resource.locator.ResourceNameIteratorは、ファイル拡張子の前に、それぞれアンダースコアを前置して、バリエーション、スタイル、ロケールの順序でそれらをそのパスに付加するため、開かれるファイルはガードが承認したファイルとは異なるものとなる。
org.apache.wicket.markup.html.PackageResourceGuardは、同じ名前のクラスファイルを傍らに見つけることで、HTMLファイルがコンポーネントのマークアップテンプレートかどうかを判断する。この際、処理を進めるにつれてアンダースコア区切りの接尾辞を1つずつ除去していく。HTMLはデフォルトの許可リストに含まれているため、このチェックは、提供可能な静的なHTMLファイルと、提供できないマークアップテンプレートを分ける唯一のものとなっている。テンプレート名について問い合わせられた場合、ガードはそれを正しく拒否するが、存在しないクラスに対するより短い名前については承認し、URLで指定されたスタイルによってその名前はコンポーネントクラスのマークアップテンプレートへと完成され、レスポンスに書き込まれる。
任意のコンポーネントクラスの単純名にアンダースコアが含まれ、かつその名の shorter な部分が自身としてクラスではない場合(例:Report_v2 や Wizard_Step1)、アプリケーションは影響を受ける。そのようなクラス名を持たないアプリケーションには影響がない。特別なデプロイメント、パッケージング、または構成は必要なく、開発モードではなく運用モードで実行してもこれを防止するものではない。Javaの命名規則ではクラス名にアンダースコアを使用することは推奨されておらず、Wicketが同梱するモジュールにもそれはないため、フレームワーク自体のマークアップは公開されない;この方法で公開されるのはアプリケーション独自のコンテンツである。クラス名にアンダースコアを含まないコンポーネントには到達できず、そのローカライズ済みまたはスタイル指定されたマークアップにも到達できない。なぜなら、ガードが基本名の下のクラスファイルを見つけ、リクエストを拒否するためである。属性はファイル拡張子を変更することはできず、またコンポーネントのパッケージから出ることもできないため、そのパッケージ内のHTMLファイル以外には何も到達不可能である。アクセスは読み取り専用であり、開示されるのは開発者が作成したテンプレートコンテンツ(コンポーネント構造、開発者コメント、特定の条件下でのみレンダリングされるマークアップ、インラインスクリプト、およびテンプレートが参照するエンドポイント)である。この方法でユーザーデータ、資格情報、またはセッション情報は到達不可能である。攻撃者は対象パッケージ内のクラス名とコンポーネント自体の名前を指定する必要があり、Wicketはパッケージリソースを描画する際のURLに完全修飾クラス名を書き込む。
本問題は Apache Wicket に影響を与える:8.0.0 から 8.19.0、9.0.0 から 9.24.0、10.0.0 から 10.11.0 のバージョンで発生する。サポート終了版である Apache Wicket 7.x またはそれ以前のユーザーは、サポート対象のバージョンにアップグレードすべきである。本問題を修正したバージョン 8.20.0、9.25.0、または 10.12.0へのアップグレードを推奨する。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.