
2025年6月、PostgreSQLのJava用ドライバ「PgJDBC」に、セキュアな設定にもかかわらず、意図しない認証方法を許してしまう脆弱性(CVE-2025-49146)が見つかりました。これにより、攻撃者が中間者(MITM)として通信内容を盗み見るリスクがあることが明らかになっています。
問題の背景─設定はしていたのに守られていない?
今回の問題は、「チャネルバインディング」というセキュリティ機能に関するものです。本来この機能は、SSL/TLSでの暗号化通信と認証を結びつけ、なりすましや盗聴を防ぐための重要な仕組みです。
しかし、PgJDBCドライバで channelBinding=require
と設定していたにもかかわらず、古い認証方式(passwordやMD5、GSS、SSPIなど)を使った接続を許してしまうケースがあることが判明しました。つまり、ユーザーが「この接続は安全なはず」と信じていたとしても、実際にはセキュリティが不完全な状態で通信が行われていた可能性があるのです。
脆弱性の対象バージョン
この認証バイパスの脆弱性(CVE-2025-49146)の影響を受けるのは、PostgreSQL JDBCドライバのバージョン42.7.4、42.7.5、および42.7.6です。
これらのバージョンでは channelBinding=require
設定があっても、非対応の認証方式を許容するという実装上の問題がありました。
この影響により、本来であれば接続が拒否されるべきケースでも、ユーザーは“セキュアな通信”が確立されたと誤認する可能性があります。特にパスワード認証やMD5認証を使用している環境では、チャネルバインディングの保護を期待できず、MITM攻撃のリスクが現実のものとなります。
修正されたのはどのバージョン?対処方法は?
この問題は、2025年6月にリリースされたPgJDBCバージョン42.7.7で修正されました。以降のバージョンでは、channelBinding=requireが設定されている場合に、対応していない認証方法を使おうとすると接続が拒否されるようになっています。
また、認証がSASL方式で正しく行われなかった場合も接続が成立しないようになり、セキュリティが大幅に強化されました。この修正により、チャネルバインディングが「設定しただけで無効だった」という事態は避けられるようになっています。
もし今すぐアップデートが難しいという場合は、暫定的な対策として sslMode=verify-full
の設定を行うことで、MITM攻撃に対する一定の防御が可能です。この設定では、サーバーの証明書とホスト名をしっかり確認するため、通信の信頼性を確保できます。
なお、この脆弱性のCVSSスコアは8.2と非常に高い評価を受けています。これは、影響の大きさと悪用される可能性の高さを反映したものです。JavaアプリケーションでPostgreSQLを扱う多くのシステムにとって、無視できない問題といえるでしょう。