PostgreSQL 7.4.19 に関する技術情報

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

PostgreSQL 7.4.18 から 7.4.19 への変更点


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