リリース日: 2008-01-07
このリリースは、重大なセキュリティ問題の修正を含む、7.4.18の各種不具合を修正したものです。 7.4メジャーリリースにおける新機能については項E.83を参照してください。
7.4.Xからの移行ではダンプ/リストアは不要です。 しかし、7.4.11より前のバージョンからアップグレードする場合は、7.4.11のリリースノートを参照してください。
インデックス内の関数が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を使用して、パスワード認証のみをセキュリティ制限として使用するには非スーパーユーザでなければなりません。
7.4.18で行った修正は不十分で、一部のdblink関数に対してのみ問題を解消していました。(CVE-2007-6601,CVE-2007-3278)
一部のWHERE false AND var IN (SELECT ...)におけるプランナの失敗を修正しました。 (Tom)
マルチバイトデータベース符号化方式を使用している時に潜在する、translate()
のクラッシュを修正しました。
長い例外メッセージでクラッシュしないようPL/Pythonを修正しました。(Alvaro)
ecpgパーサを修正しました。(Michael)
contrib/tablefuncのcrosstab()
が、クラッシュするのではなく、独自の意味でカテゴリとしてNULL行識別子を扱うようにしました。(Joe)
tsvectorおよびtsquery出力関数が正しくバックスラッシュをエスケープするように修正しました。(Teodor, Bruce)
入力文字列が大きな場合にto_tsvector()
がクラッシュすることを修正しました。(Teodor)
configureスクリプトを再生成する場合、特定のバージョンのAutoconfを使用することが必要になりました。(Peter)
これは開発者とパッケージ作成者のみに影響します。 この変更は、AutoconfとPostgreSQLの未確認のバージョンの組み合わせを使用する事故を防ぐためになされました。 その結果がうまくいくかどうかについて責任を負う限り、異なるバージョンのAutoconfを本当に使用したい場合は、このバージョン検査を取り除くことができます。