PostgreSQL ドライバ Npgsql の脆弱性 CVE-2024-32655 が FIX:SQLi が生じる恐れ

CVE-2024-32655: SQL Injection Flaw Discovered in Popular PostgreSQL Driver, Npgsql

2024/05/10 SecurityOnline — PostgreSQL データベースに .NET アプリケーションを接続する際に広く利用される、OSS データ・プロバイダーである Npgsql に、深刻な脆弱性 CVE-2024-32655 (CVSS:8.1) が発見された。この脆弱性の悪用に成功した攻撃者は、影響を受けるアプリケーションに対すしての SQL コマンド・インジェクションが可能となり、データ漏えいや不正アクセスなどの悪意のアクションが実行される可能性が生じる。


Npgsql は .NET エコシステムにおける重要なコンポーネントであり、それを用いて開発されるアプリケーションは、C#/Visual Basic/F# などの言語で、PostgreSQL データベースとのインタラクションが可能となる。C# で実装された OSS プロジェクトである Npgsql は、世界中の数多くのビジネス/クリティカルなアプリケーションにとって不可欠なものとなっている。

この脆弱性は、ファイル “src/Npgsql/Internal/NpgsqlConnector.FrontendMessages.cs” 内の WriteBind() メソッドに存在しており、メッセージとパラメータの長さを格納するために使用される、整数変数のメソッドの処理に起因するものだ。パラメータの長さの合計が整数の記憶容量を超えると、クリティカルなオーバーフローが発生する。このオーバーフローにより、PostgreSQL プロトコルのメッセージをネットワーク経由で送信する際に、アプリケーションが不適切なサイズのメッセージを生成してしまう。

その結果として、受信側の PostgreSQL データベース・サーバは、不適切なサイズのメッセージを誤って解釈してしまう。そして、データの一部のみを読み取り、残りを別のメッセージとして扱ってしまう。このエラーを悪用する攻撃者は、任意の PostgreSQL プロトコル・メッセージを接続ストリームに挿入し、最終的には不正な SQL ステートメントを実行する可能性を持つ。

脆弱性 CVE-2024-32655 は、4.0.0〜8.0.2 の全てのリリースを含む、広範囲の Npgsql バージョンに影響を及ぼす。この脆弱性の発見/公表は、セキュリティ研究者である Paul Gerste により行われた。

この脆弱性の潜在的な影響は大きく、機密データの漏えい/アプリケーションの機能停止/基礎となるデータベースの完全な制御などを、攻撃者に許す恐れがあるという。

幸いなことに、影響を受ける Npgsql の全バージョンに対して、すでにパッチがリリースされている。開発者およびシステム管理者に強く推奨されるのは、パッチを適用した最新バージョンへと、直ちにアップグレードすることだ:

Npgsql を使用している場合は、このアップデートを優先し、システムが危険にさらされていないことを確認するために、徹底的なセキュリティ監査を行うべきだ。