2008-01-07
このリリースは、重大なセキュリティ問題の修正を含む、7.3.20の各種不具合を修正したものです。
これが7.3.X系の最後のPostgreSQLリリースとなる予定です。 ユーザはより新しいリリースブランチに早めの更新を行うことが推奨されています。
7.3.Xからの移行ではダンプ/リストアは不要です。 しかし、7.3.13より前のバージョンからアップグレードする場合は、E.259. リリース7.3.13を参照してください。
インデックス内の関数がVACUUM
、ANALYZE
などを実行するユーザの権限で実行されることを防止します。(Tom)
インデックス式内で使用される関数および部分インデックスの述語は、新しいテーブル項目が作成されると評価されます。
これが、もし信頼できないユーザが所有するテーブルを変更したとすると、トロイの木馬となるコードの実行という危険性を引き起こすことは以前から解っていました。
(トリガ、デフォルト、検査制約なども同種の危険性を引き起こします。)
しかしインデックス内の関数は、VACUUM FULL
などの日常の保守作業で実行される可能性があるため、さらに危険です。
こうした保守作業は通常自動的にスーパーユーザ権限で行われます。
例えば、極悪なユーザがトロイの木馬となるインデックス定義を設定し、次回の日常のバキューム処理を待つことで、スーパーユーザ権限でコードを実行することが可能です。
この修正は、SECURITY DEFINER
関数で使用されていた権限変更機構を使用して、標準的な保守作業(VACUUM
、ANALYZE
、REINDEX
、CLUSTER
を含む)が呼び出したユーザではなくテーブル所有者として実行するように調整しました。
こうしたセキュリティ制限の迂回を防ぐために、SET SESSION AUTHORIZATION
およびSET ROLE
がSECURITY DEFINER
コンテキストで禁止されるようになりました。(CVE-2007-6600)
/contrib/dblink
を使用する非スーパーユーザは、パスワード認証のみをセキュリティ制限として使用しなければなりません。(Joe)
7.3.20で行った修正は不十分で、一部のdblink
関数に対してのみ問題を解消していました。(CVE-2007-6601,CVE-2007-3278)
マルチバイトデータベース符号化方式を使用している時に潜在する、translate()
のクラッシュを修正しました。(Tom)
contrib/tablefunc
のcrosstab()
が、クラッシュするのではなく、独自の意味でカテゴリとしてNULL行識別子を扱うようにしました。(Joe)
configure
スクリプトを再生成する場合、特定のバージョンのAutoconfを使用することが必要になりました。(Peter)
これは開発者とパッケージ作成者のみに影響します。 この変更は、AutoconfとPostgreSQLの未確認のバージョンの組み合わせを使用する事故を防ぐためになされました。 その結果がうまくいくかどうかについて責任を負う限り、異なるバージョンのAutoconfを本当に使用したい場合は、このバージョン検査を取り除くことができます。