リリース日: 2006-05-23
このリリースは7.4.12の各種不具合を修正したもので、非常に深刻なセキュリティ問題を解消するパッチを含みます。 7.4メジャーリリースにおける新機能については項E.83を参照してください。
7.4.Xからの移行ではダンプ/リストアは不要です。 しかし、7.4.11より前のバージョンからアップグレードする場合は、7.4.11のリリースノートを参照してください。
CVE-2006-2313およびCVE-2006-2314に示されたSQLインジェクション攻撃を完全に防ぐためには、アプリケーション側のコードの変更が必要となる場合があります。
SQLコマンド内に信頼できない文字列を埋め込むアプリケーションでは、できる限り早く、その文字列が推奨するエスケープ技法を使用していることを確実に検証しなければなりません。
ほとんどの場合、アプリケーションは文字列のエスケープ処理に、その場しのぎのコードではなく、ライブラリやドライバが提供する(libpqのPQescapeStringConn()
のような)関数を使用しなければなりません。
すべての場合において、符号化が無効なマルチバイト文字を拒絶するようにサーバを変更しました。 (Tatsuo, Tom)
PostgreSQLは少し前からこのような方向に移行していましたが、この検査がすべての符号化方式とすべてのテキスト入力に対して統一的に適用されるようになりました。 さらに、単なる警告ではなく常にエラーとなるようになりました。 この変更はCVE-2006-2313で示されるような種類のSQLインジェクション攻撃から保護します。
文字列リテラル内の\'の安全ではない使用を拒絶します。
CVE-2006-2314で示されるような種類のSQLインジェクション攻撃からのサーバ側の保護として、 サーバは、SQL文字列リテラル内のASCII単一引用符の表現として、''のみを受付け、\'を受付けないようになりました。 デフォルトでは、SQLインジェクションが可能となる状況である、client_encodingがクライアント側のみの符号化方式(SJIS、BIG5、GBK、GB18030、UHC)に設定された場合にのみ\'は拒絶されます。 新しい設定パラメータbackslash_quoteにより、必要な場合にこの動作を調整できます。 CVE-2006-2314に対して完全に保護するには、クライアント側を変更する必要があるかもしれないことに注意してください。 安全ではないクライアントを安全ではないものとして明らかにすることが、backslash_quoteの目的の一つです。
libpqの文字列エスケープルーチンを、符号化方式とstandard_conforming_stringsを考慮するように変更しました。
これは、CVE-2006-2313およびCVE-2006-2314で示されるセキュリティ問題に対し、libpqを使用したアプリケーションを修正します。
また、将来予定されるSQL標準文字列リテラル構文への移行に対しても保護しています。
同時に複数のPostgreSQL接続を使用するアプリケーションは、各データベース接続において使用される設定に合わせてエスケープ処理が正しく行われるように、PQescapeStringConn()
とPQescapeByteaConn()
に移行しなければなりません。
"独自に"文字列エスケープ処理を行うアプリケーションはライブラリルーチンを使用するように変更しなければなりません。
一部の不正な符号化方式変換関数を修正しました。
win1251_to_iso
、win866_to_iso
、euc_tw_to_big5
、euc_tw_to_mic
、mic_to_euc_tw
はすべて可変拡張に関して正しくありませんでした。
文字列における偶然残る\'の使用を整理しました。 (Bruce, Jan)
インデックススキャンの論理和が本来返すべき行を失う場合がある不具合を修正しました。
Btreeインデックスが消去された場合のWAL再生を修正しました。
|を含むパターンに対するSIMILAR TOを修正しました。(Tom)
独自のDH SSLパラメータを正しく使用するようにサーバを修正しました。(Michael Fuhr)
Intel MacでのBonjourを修正しました。(Ashley Clark)
さまざまな小規模のメモリリークを修正しました。