リリース日: 2006-05-23
このリリースは8.1.3の各種不具合を修正したもので、非常に深刻なセキュリティ問題を解消するパッチを含みます。 8.1メジャーリリースにおける新機能については項E.37を参照してください。
8.1.Xからの移行ではダンプ/リストアは不要です。 しかし、8.1.2より前のバージョンからアップグレードする場合は、8.1.2のリリースノートを参照してください。
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()
に移行しなければなりません。
"独自に"文字列エスケープ処理を行うアプリケーションはライブラリルーチンを使用するように変更しなければなりません。
pgcryptoのキー選択の弱さを修正しました。 (Marko Kreen)
偶発的なPRNGの種再作成ロジック内のエラーにより、pgp_sym_encrypt()
で選択されるセッションキーが予測可能になりました。
これはOpenSSLを使用せずに構築した場合にのみ影響します。
一部の不正な符号化方式変換関数を修正しました。
win1251_to_iso
、win866_to_iso
、euc_tw_to_big5
、euc_tw_to_mic
、mic_to_euc_tw
はすべて可変拡張に関して正しくありませんでした。
文字列における偶然残る\'の使用を整理しました。 (Bruce, Jan)
autovacuumをpg_stat_activityで確認できるようにしました。 (Alvaro)
full_page_writesを無効にしました。 (Tom)
full_page_writesを無効にするとクラッシュリカバリが失敗する特定の状況があります。 8.2で適切に修正する予定ですが、当面は単に無効にします。
プランナ、特にビットマップインデックススキャンとMIN/MAX最適化に関してさまざまな修正を行いました。 (Tom)
マージ結合における不正な最適化を修正しました。 (Tom)
外部結合で一致しなかった行の複数のコピーを省くことがありました。
同一トランザクション内でplpgsql関数を使用し、変更する場合のクラッシュを修正しました。
B-Treeインデックスが消去された場合のWAL再生を修正しました。
|を含むパターンに対するSIMILAR TOを修正しました。(Tom)
SELECT INTOおよびCREATE TABLE ASが基本ディレクトリではなくデフォルトのテーブル空間にテーブルを作成するように変更しました。(Kris Jurka)
独自のDH SSLパラメータを正しく使用するようにサーバを修正しました。(Michael Fuhr)
qsortの性能を向上しました。(Dann Corbit)
現時点ではSolarisでのみこのコードが使用されます。
Intel MacでのBonjourを修正しました。(Ashley Clark)
さまざまな小規模のメモリリークを修正しました。
一部のWin32システムにおけるパスワードプロンプトに関する問題を修正しました。(Robert Kinberg)
pg_dumpのドメインに関するデフォルト値の取り扱いを改良しました。
同一名称のユーザとグループを適切に扱うようpg_dumpallを修正しました。 (8.1より前のサーバからのダンプを行う場合のみです。) (Tom)
ユーザとグループはLOGIN権限を持つ一つのロールにまとめられます。 これまではまとめられたロールはLOGIN権限を持たなかったため、ユーザとして使用することができなくなっていました。
pg_restore -nが文書通りに動くよう修正しました。(Tom)