GeoServer の脆弱性 CVE-2024-36401 (CVSS 9.8) が FIX:RCE の恐れ

CVE-2024-36401 (CVSS 9.8): Urgent Patch Needed for GeoServer RCE Vulnerability

2024/07/02 SecurityOnline — 地理空間データを管理/共有するための、OSS プラットフォームとして広く利用されているGeoServer に、深刻な脆弱性 CVE-2024-36401 (CVSS:9.8) が発見された。この脆弱性の悪用に成功した攻撃者は、影響を受けるサーバ上で任意のコード実行が可能となり、機密性の高い地図や位置情報が危険にさらされる。

この脆弱性は、GeoTools ライブラリ API 内のプロパティ名表現の、安全ではない評価に起因する。具体的に言うと、複数の OGC リクエスト パラメータが処理される際に、未認証のユーザーが特別に細工された入力を挿入できる場合に問題が発生する。これらの細工された入力は、フィーチャ・タイプのプロパティ/属性名を評価する XPath 式を悪用し、任意のコードの実行につながる。

この脆弱性の根本的な原因は、GeoServer がプロパティ名を評価するために呼び出す、GeoTools ライブラリ API に存在する。これらのプロパティ名は、commons-jxpath ライブラリに渡され、XPath 式を評価する際に任意のコード実行が可能になる。この機能は (Application Schema データストアのような) 複雑なフィーチャ・タイプのために意図されたものであるが、単純なフィーチャ・タイプに誤って適用されると、すべての GeoServer インスタンスに脆弱性が拡大する。

GeoServer ユーザーには、この脆弱性によるリスクを軽減するために、早急な対処が求められる。影響を受けるシステムの安全性を確保するために、以下の手順を取ることが可能である:

回避策

GeoServer のインストールから、gt-complex-x.y.jar ファイルを削除することで、脆弱性を一時的に緩和できる。それにより、脆弱なコードは除去されるが、gt-complex モジュールに依存する特定の機能が使用できなくなる可能性がある。回避策は以下の通りである:

GeoServer .war をデプロイする場合:

  1. アプリケーション・サーバーを停止する。
  2. なんらかのディレクトリ内で geoserver.war を解凍する。
  3. “WEB-INF/lib/gt-complex-x.y.jar” を探して削除する。
  4. ディレクトリを新しい “geoserver.war” に再圧縮する。
  5. アプリケーションサーバーを再起動する。

GeoServer バイナリの場合:

  1. Jetty を停止する。
  2. “webapps/geoserver/WEB-INF/lib/gt-complex-x.y.jar” を見つけて削除する。
  3. Jetty を再起動する。
修正方法

すでに GeoServer は、バージョン 2.24.4/2.25.2/2.23.6 で、この脆弱性を修正している。システムを保護するため、ユーザには早急なアップデートが強く推奨される。直ちにアップデートが不可能な場合には、以前のリリースでパッチが適用された jar (gt-app-schema/gt-complex/gt-xsd-core) が利用可能であり、回避策と同様の手順で適用できる。