PostgreSQL 7.3.21 に関する技術情報

このリリースは 7.3.20 からの修正リリース(2008/01/07リリース)です。
本ドキュメントは PostgreSQL のリリースノートを基に作成しています。
7.3.x からのアップデートではダンプ、リストアは不要です。
ただし、7.3.13 より前のバージョンからのアップデートの場合には 7.3.13 のリリース情報も確認してください。

これが 7.3.X 系の最後の PostgreSQL リリースです。新しいメジャーバージョンへの移行が推奨されています。

PostgreSQL 7.3.20 から 7.3.20 への変更点


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