PostgreSQL JDBC の脆弱性 CVE-2024-1597 が FIX:CVSS 値は 10.0

CVE-2024-1597 (CVSS 10): Critical SQL Injection Flaw in PostgreSQL JDBC Driver

2024/02/20 SecurityOnline — 開発者たちに人気の PostgreSQL データベースに、新たな脆弱性 CVE-2024-1597 (CVSS:10.0) が発見された。この脆弱性が浮き彫りにするのは、予防的なセキュリティ対策の重要性である。ここでは、PostgreSQL JDBCドライバ (pgjdbc) の脆弱性と、その潜在的な影響と、重要な緩和策について探っていく。

PostgreSQL JDBC ドライバは、開発者たちの間では PgJDBC として知られており、Java アプリケーションと PostgreSQL データベース間の、シームレスな相互作用を促進するものである。純粋な Java (Type 4) で作られた PgJDBC は、オープンソースとしての実績を持ち、PostgreSQL ネイティブのネットワーク・プロトコルによる通信能力に長けている。


新たに発見された脆弱性は、このドライバが “PreferQueryMode=SIMPLE” で使用されたときに発生する。このモードは、クエリー実行の柔軟性を提供することを意図しているが、諸刃の剣となる。

クエリ内の数値や文字列のプレースホルダを操作する攻撃者は、ユーザーが意図する SQL 実行ロジックを変更できる。この操作により、プレースホルダの配置において、特に数値プレースホルダが文字列プレースホルダの前にある場合において、悪意の SQL コードが注入されてしまう。

CVE-2024-1597 が悪用されると、以下のような大惨事を招く可能性がある:

  • データ漏えい:顧客情報/企業の機密情報/財務記録などが漏洩する可能性がある。
  • データ操作:攻撃者がデータベース内の重要なデータを改ざんし、業務を中断させ、信頼を損なう可能性がある。
  • 完全な乗っ取り:最悪のシナリオとして、攻撃者がデータベースを完全にコントロールする可能性が考えられる。

この脆弱性は、セキュリティ研究者である CyberElNiak により発見された。彼は、この脆弱性の技術的な詳細を公開している。

PostgreSQL JDBC ドライバ・チームは、この迫り来る脅威に対して迅速に行動を開始して、脆弱性に対処するためのパッチをリリースした。影響を受けるバージョンは、42.7.2/42.6.1/42.5.5/42.4.4/42.3.9/42.2.8 未満だ。これらのバージョンにおいて、”PreferQueryMode=SIMPLE” が設定されている場合には、直ちにパッチを適用したバージョンにアップグレードする必要がある。

さらに、SQL インジェクションなどの、潜在的なセキュリティ脅威に対する強固な防御を構築するためには、以下のような、一般的なベスト・プラクティスの実施も不可欠である:

  • Sanitize and Validate Inputs全ユーザー入力を疑わしいものとして扱い、厳密なクリーニングと検証を行うことで、潜在的に危険な入力をフィルタリングする。
  • Prepared Statements SQL クエリにおける文字列の直接連結を、環境内でサポートされている、安全かつパラメータ化されたプリペアド・ステートメントに置き換える。
  • Principle of Least Privilege:データベースのアカウントには、必要な権限のみを与える。そより、攻撃が成功した場合の被害を抑えることができる。
  • Continuous Audits コードとデータベースの権限を積極的にレビューすることで、隠れた弱点を発見していく。