リリース日: 2008-01-07
このリリースは、重大なセキュリティ問題の修正を含む、8.2.5の各種不具合を修正したものです。 8.2メジャーリリースにおける新機能についてはE.222を参照してください。
8.2.Xからの移行ではダンプ/リストアは不要です。
インデックス内の関数がVACUUM
、ANALYZE
などを実行するユーザの権限で実行されることを防止します。(Tom)
インデックス式内で使用される関数および部分インデックスの述語は、新しいテーブル項目が作成されると評価されます。
これが、もし信頼できないユーザが所有するテーブルを変更したとすると、トロイの木馬となるコードの実行という危険性を引き起こすことは以前から解っていました。
(トリガ、デフォルト、検査制約なども同種の危険性を引き起こします。)
しかしインデックス内の関数は、VACUUM FULL
などの日常の保守作業で実行される可能性があるため、さらに危険です。
こうした保守作業は通常自動的にスーパーユーザ権限で行われます。
例えば、極悪なユーザがトロイの木馬となるインデックス定義を設定し、次回の日常のバキューム処理を待つことで、スーパーユーザ権限でコードを実行することが可能です。
この修正は、SECURITY DEFINER
関数で使用されていた権限変更機構を使用して、標準的な保守作業(VACUUM
、ANALYZE
、REINDEX
、CLUSTER
を含む)が呼び出したユーザではなくテーブル所有者として実行するように調整しました。
こうしたセキュリティ制限の迂回を防ぐために、SET SESSION AUTHORIZATION
およびSET ROLE
がSECURITY DEFINER
コンテキストで禁止されるようになりました。(CVE-2007-6600)
正規表現パッケージ内のさまざまな不具合を修正しました。(Tom, Will Drewry)
より巧妙な正規表現パターンにより、信頼できないソースから正規表現検索パターンを受け付けるアプリケーションでは、クラッシュ、無限または無限に近いループ、大量のメモリの浪費、DoS攻撃を引き起こすすべてが発生する可能性がありました。(CVE-2007-4769、CVE-2007-4772、CVE-2007-6067)
/contrib/dblink
を使用する非スーパーユーザは、パスワード認証のみをセキュリティ制限として使用しなければなりません。(Joe)
8.2.5で行った修正は不十分で、一部のdblink
関数に対してのみ問題を解消していました。(CVE-2007-6601,CVE-2007-3278)
GINインデックスに対するWAL再生における不具合を修正しました。(Teodor)
maintenance_work_mem
が4GB以上の場合にGINインデックスの構築が適切に動作するように修正しました。(Tom)
時間帯ファイルをtzdataリリース2007kに更新しました(具体的には最近のアルゼンチンの変更)。(Tom)
非CロケールにおけるプランナのLIKE/正規表現の推定を改良しました。(Tom)
深い階層の外部結合における計画処理速度を修正しました。 同様に結合順の非効率な選択を行う可能性も修正しました。(Tom)
一部のWHERE false AND var IN (SELECT ...)
におけるプランナの失敗を修正しました。 (Tom)
CREATE TABLE ... SERIAL
とALTER SEQUENCE ... OWNED BY
がシーケンスのcurrval()
状態を変更しないようにしました。(Tom)
ALTER TABLE ... ALTER COLUMN TYPE
で再構築されるインデックスのテーブル空間と格納パラメータを保持します。(Tom)
アーカイブリカバリが、リカバリの停止時間が使用された時だけではなく、常に新しいWAL時系列から始まるようにしました。
これは、まれに起こる可能性のある既存の最後のWALセグメントのアーカイブされたコピーを上書きしようとする危険を防止します。 また元の定義より単純、明確になったと考えられます。
テーブルが小さすぎて有用でない場合、VACUUM
がすべてのmaintenance_work_mem
を使用しないようにしました。(Alvaro)
マルチバイトデータベース符号化方式を使用している時に潜在する、translate()
のクラッシュを修正しました。
corr()
が負の相関値に対して正しい結果を返すようにしました。(Neil)
68年を超える間隔でextract(epoch from interval)
がオーバーフローすることを修正しました。(Tom)
信頼された関数内でUTF-8正規表現が使用された場合にPL/Perlが失敗しないように修正しました。(Andrew)
プラットフォームのPerlがbool
型をchar
ではなくint
として定義した場合に対応するようにPL/Perlを修正しました。(Tom)
これは理論上どこでも発生する可能性がありましたが、標準的に構築されたPerlではこうなりませんでした。macOS 10.5までは…。
64ビットマシン上のPython 2.5で正常に動作するようPL/Pythonを修正しました。(Marko Kreen)
長い例外メッセージでクラッシュしないようPL/Pythonを修正しました。(Alvaro)
親テーブルと異なるデフォルト式を持つ、継承子テーブルを正しく扱うようpg_dumpを修正しました。(Tom)
PGPASSFILE
が普通のファイル以外のファイルを参照する場合にlibpqがクラッシュすることを修正しました。
ecpgパーサを修正しました。(Michael)
128ビットより長いキーで失敗するOpenSSLライブラリに対してcontrib/pgcrypto
が防衛するようにしました。
これは少なくとも一部のバージョンのSolarisで発生します。(Marko Kreen)
contrib/tablefunc
のcrosstab()
が、クラッシュするのではなく、独自の意味でカテゴリとしてNULL行識別子を扱うようにしました。(Joe)
tsvector
およびtsquery
出力関数が正しくバックスラッシュをエスケープするように修正しました。(Teodor, Bruce)
入力文字列が大きな場合にto_tsvector()
がクラッシュすることを修正しました。(Teodor)
configure
スクリプトを再生成する場合、特定のバージョンのAutoconfを使用することが必要になりました。(Peter)
これは開発者とパッケージ作成者のみに影響します。 この変更は、AutoconfとPostgreSQLの未確認のバージョンの組み合わせを使用する事故を防ぐためになされました。 その結果がうまくいくかどうかについて責任を負う限り、異なるバージョンのAutoconfを本当に使用したい場合は、このバージョン検査を取り除くことができます。
PostgreSQLがMinGWの新しいバージョンで構築できるようにgettimeofday
の構築用検査を更新しました。