Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2023-25157-and-CVE-2023-25158 — GeoServer & GeoTools SQLインジェクション (CVE-2023-25157 & CVE-2023-25158) | Kitploit
ツール/GitHubGitHub/murataydemir/cve-2023-25157-and-cve-2023-25158
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育データベースセキュリティ
GitHubmurataydemir/cve-2023-25157-and-cve-2023-25158

CVE-2023-25157-and-CVE-2023-25158

GeoServer & GeoTools SQLインジェクション (CVE-2023-25157 & CVE-2023-25158)

リポジトリを見る
144543年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

GeoServer & GeoTools SQLインジェクション (CVE-2023-25157 & CVE-2023-25158)


このリポジトリには、GeoServerプラットフォームとGeoToolsライブラリで発見されたSQLインジェクションの脆弱性の詳細な説明と再現手順が含まれています。この脆弱性には、GeoServer用にCVE-2023-25157、GeoTools用にCVE-2023-25158の識別子が割り当てられています。

GeoServer は、Javaで書かれたオープンソースのソフトウェアサーバーであり、地理空間データの表示、編集、共有機能を提供します。地理情報システム (GIS) データベース、ウェブベースのデータ、個人データセットなど、さまざまなソースからの地理空間データを配布するための柔軟で効率的なソリューションとして設計されています。

GeoServerは、Web Feature Service (WFS)、Web Map Service (WMS)、Web Coverage Service (WCS) を含む、データ共有のためのOpen Geospatial Consortium (OGC) 標準に準拠しています。この標準への準拠により、GeoServerからのデータは、カスタム構築されたGISソフトウェアから既製のソリューションまで、多種多様なアプリケーションで使用できます。

GeoServerは主にSpringフレームワーク上に構築されていますが、以下のような他の多くのライブラリやフレームワークも使用しています。

  • GeoTools: 地理空間データのためのツールを提供するオープンソースのJavaライブラリです。GeoServerは、データの読み取り、書き込み、変換など、多くのコア機能にGeoToolsを使用しています。
  • Hibernate Validator: Beanバリデーションに使用されます。
  • Java Topology Suite (JTS): 平面ジオメトリのためのオブジェクトモデルと基本的な幾何学関数のセットを提供するオープンソースのJavaソフトウェアライブラリです。GeoServerはバウンディングボックスの計算などの幾何学操作にこれを使用します。
  • Apache Wicket: Web管理インターフェースに使用されます。JavaServer FacesやTapestryに似たコンポーネントベースのWebアプリケーションフレームワークです。
  • Log4J: ロギングに使用されます。

脆弱性


問題の脆弱性は、Open Geospatial Consortium (OGC) 標準で定義されたフィルタおよび関数式に深く埋め込まれています。これらの式は、地理空間データのクエリと操作のバックボーンを形成しており、GeoServerやGeoToolsのようなシステムの機能において極めて重要な役割を果たしています。

これらの脆弱性が悪用されると、深刻なセキュリティ侵害につながる可能性があります。攻撃者はデータベースに保存されている機密データにアクセスできる可能性があるため、情報の不正開示が主な懸念事項です。不正な変更も別の潜在的な結果であり、攻撃者はデータを自分たちの都合の良いように操作できます。さらに、これらの脆弱性はサービスの妨害を促進する可能性もあり、悪用が成功するとサービスが利用できなくなる可能性があります。

以下では、特定された各脆弱性の詳細な分析を提供します。各脆弱性は詳細に調査され、その具体的な特徴、発現につながる条件、および悪用の潜在的な影響について説明します。以下は、GeoServerで見つかった脆弱性の詳細な内訳です。

  • PropertyIsLikeフィルタ: この脆弱性は、PropertyIsLikeフィルタが、任意のリレーショナルデータベースベースのストア、エンコード機能が有効なPostGISデータストア、またはリレーショナルデータベースにインデックスが保存されたイメージモザイクと共にStringフィールドで使用された場合に存在します。
  • strEndsWith関数: この脆弱性は、strEndsWith関数が、エンコード機能が有効なPostGISデータストアで使用された場合に発生します。
  • strStartsWith関数: この脆弱性は、strStartsWith関数が、エンコード機能が有効なPostGISデータストアで使用された場合に見つかります。
  • FeatureIdフィルタ: この脆弱性は、FeatureIdフィルタが、String主キー列を持つデータベーステーブルで、かつプリペアドステートメントが無効になっている場合に存在します。
  • jsonArrayContains関数: この脆弱性は、jsonArrayContains関数がStringまたはJSONフィールドと共に、PostGISまたはOracleデータストア(GeoServer 2.22.0以降のみ)で使用された場合に見つかります。
  • DWithinフィルタ: この脆弱性は、DWithinフィルタがOracleデータストアで使用された場合に発見されます。

以下は、GeoToolsで見つかった脆弱性の詳細な内訳です。

  • PropertyIsLikeフィルタ:
    • エンコード機能が有効なPostGISデータストアが必要
    • またはStringフィールドを持つ任意のJDBCDataStore(すべてのリレーショナルデータベース)(緩和策なし)
  • strEndsWith関数:
    • エンコード機能が有効なPostGISデータストアが必要
  • strStartsWith関数:
    • エンコード機能が有効なPostGISデータストアが必要
  • FeatureIdフィルタ:
    • プリペアドステートメントが無効で、String主キーを持つテーブルを含むJDBCDataStore(すべてのリレーショナルデータベース)が必要(Oracleは影響なし、SQL ServerとMySQLはプリペアドステートメントを有効にする設定がなく、PostGISは有効にできる)
  • jsonArrayContains関数:
    • StringまたはJSONフィールドを持つPostGISおよびOracleデータストアが必要
  • DWithinフィルタ:
    • Oracleデータストアでのみ発生、緩和策なし

影響を受けるバージョン


  • GeoServer: バージョン < 2.21.4、>= 2.22.0、< 2.22.2 が影響を受けます CVE-2023-25157 GeoServer SQL Injection 脆弱性。
  • GeoTools: バージョン < 28.2、< 27.4、<26.7、<25.7、<24.7 が影響を受けます CVE-2023-25158 GeoTools SQL Injection 脆弱性。

ステータス


  • 修正を含む更新されたGeoServerバージョン2.21.4、2.22.2、2.20.7、2.19.7、および2.18.7が公開されています。
  • 必要なパッチを含むGeoToolsのバージョン28.2、27.4、26.7、25.7、および24.7が利用可能になりました。

緩和策と推奨される回避策


GeoServer SQLインジェクション (CVE-2023-25157) とGeoTools SQLインジェクション (CVE-2023-25158) の両方の脆弱性に対する推奨される対処方法は、参照されたバージョン以降にアップグレードすることです。このアップグレードが完了している場合は、追加の手順は必要ありません。ただし、迅速なアップグレードが困難な方のために、Geoチームは以下の代替ソリューションを提供しています。

  • PostGISデータストアのエンコード機能設定を無効にして、strEndsWith、strStartsWithの脆弱性を緩和します(公開されたフィーチャタイプに文字列フィールドがある場合、likeフィルタには緩和策はありません)。

  • PostGISデータストアのpreparedStatements設定を有効にして、FeatureIdの脆弱性を緩和します。```java Map<String, Object> params = new HashMap < >(); params.put("dbtype", "postgis"); params.put("host", "localhost"); params.put("port", 5432); params.put("schema", "public"); params.put("database", "database"); params.put("user", "postgres"); params.put("passwd", "postgres"); params.put("preparedStatements", true); // mitigation params.put("encode functions", false); // mitigation

    DataStore dataStore = DataStoreFinder.getDataStore(params);

攻撃対象領域を制限するための良い習慣として、接続プールに使用されるデータベースアカウントには必要最小限の権限のみを付与することが重要です(例:WFS-T/インポーター/RESTグラニュールハーベスティングが使用されない限り読み取り専用、本番運用に必要なスキーマとテーブルにのみアクセス制限)。
- `PropertyIsLike`フィルタに対する緩和策はありません。アップグレードが可能になるまで、データベースDataStoreを無効にすることを選択しても構いません。
- Oracle DataStoreの`DWithin`に対する緩和策はありません。アップグレードが可能になるまで、Oracle DataStoreを無効にすることを選択しても構いません。
### <b>パッチ分析:GitHub Issueおよび関連コミット</b>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
以下に、GeoServerとGeoToolsの両方で見つかったSQLインジェクションの脆弱性に関連するいくつかのJIRA Issueへのリンクを提供します。これらのリンクは、これらの特定の脆弱性に関連する重要なデータ、議論、および提案された解決策へのアクセスを提供します。
- [GEOS-10842: JDBCConfig: SQLクエリ内のユーザ入力をエスケープ](https://osgeo-org.atlassian.net/browse/GEOS-10842)
- [GEOS-10839: JDBCConfig: SQLコメントとpretty-printingを無効にするJDBC設定パラメータを追加](https://osgeo-org.atlassian.net/browse/GEOS-10839)
- [GEOT-7302: SQLクエリ内のユーザ入力をエスケープ](https://osgeo-org.atlassian.net/browse/GEOT-7302)

[`geoserver/geoserver@145a8af`](https://github.com/geotools/geotools/commit/64fb4c47f43ca818c2fe96a94651bff1b3b3ed2b)コミットを見ると、それぞれ以下の変更が明確に確認できます。

- [`ConfigDatabase.java`](https://github.com/geoserver/geoserver/blob/b05287608048d0f6e36c264f43fe15aa5dfb5130/src/community/jdbcconfig/src/main/java/org/geoserver/jdbcconfig/internal/ConfigDatabase.java)では、プロパティフィールドの追加と、そのプロパティフィールドを含めるためのコンストラクタの変更があります。これにより、データベース設定のカスタマイズが可能になり、セキュリティ対策の強化が可能になる可能性があります。[`NamedParameterJdbcTemplate`](https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/jdbc/core/namedparam/NamedParameterJdbcTemplate.html)はSpring Frameworkが提供するクラスで、従来のプレースホルダ('?')引数を使用したJDBCステートメントのプログラミングとは対照的に、名前付きパラメータを使用してJDBCステートメントをプログラミングするためのサポートを追加します。このコミットでは、`ConfigDatabase`コンストラクタが`DataSource`を受け取り、そこから`NamedParameterJdbcTemplate`を作成するように更新されています。名前付きパラメータは可読性を向上させ、引数がパラメータ化されておりSQLコマンドの一部ではないことを明確にするため、SQLインジェクション攻撃を防ぐこともできます。
  > [src/community/jdbcconfig/src/main/java/org/geoserver/jdbcconfig/internal/ConfigDatabase.java](https://github.com/geoserver/geoserver/commit/145a8af798590288d270b240235e89c8f0b62e?diff=split#diff-1b49bc6af3f36da2ebf7a0d8d3af3fa3697ccee91bf67a690f99837ee2730bed)```java
    /* (c) 2014 Open Source Geospatial Foundation - all rights reserved
     * (c) 2001 - 2013 OpenPlans
     * This code is licensed under the GPL 2.0 license, available at the root
     * application directory.
     */
    package org.geoserver.jdbcconfig.internal;
    // import some packages...
    import org.geoserver.jdbcloader.JDBCLoaderProperties;

    public class ConfigDatabase implements ApplicationContextAware {
        public static final Logger LOGGER = Logging.getLogger(ConfigDatabase.class);
        private static final int LOCK_TIMEOUT_SECONDS = 60;

        private Dialect dialect;

        private JDBCLoaderProperties properties;
        // rest of the codebase

        protected ConfigDatabase() {
            //
        }

        public ConfigDatabase(
                JDBCLoaderProperties properties,
                DataSource dataSource,
                XStreamInfoSerialBinding binding) {
            this(properties, dataSource, binding, null);
        }
ツールをダウンロード