PostgreSQL 8.2.6 に関する技術情報

このリリースは 8.2.5 からの修正リリース(2008/01/07リリース)です。
本ドキュメントは PostgreSQL のリリースノートを基に作成しています。
8.2.x からのアップデートではダンプ、リストアは不要です。

PostgreSQL 8.2.5 から 8.2.6 への変更点


  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)8.2.5 で行なわれた修正は不十分で、問題が解消されていたのは 一部の dblink 関数に対してのみでした。(CVE-2007-6601, CVE-2007-3278)
  4. GIN インデックスに対する WAL 再生の不具合をが修正されました。(Teodor)
  5. maintenance_work_mem が 4GB 以上のときに、GIN インデックスの構築が適切に動作するように修正されました。(Tom)
  6. 時間帯ファイル が tzdata のリリース 2007k に更新されました。(具体的には最近のアルゼンチンの変更)。(Tom)
  7. C(common)ロケールでないロケールにおける、プランナの LIKE/正規表現 の推定が改良されました。(Tom)
  8. 深い階層の外部結合の計画を行なう速度と、非効率な結合順序を選択する可能性が修正されました。(Tom)
  9. 一部の WHERE false AND var IN (SELECT …) におけるプランナの失敗が修正されました。 (Tom)
  10. CREATE TABLE … SERIAL と ALTER SEQUENCE … OWNED BY が、シーケンスの currval() 状態を変更しないようになりました。(Tom)
  11. ALTER TABLE … ALTER COLUMN TYPE を実行した際に、再構築されるインデックスのテーブルスペースと格納パラメータを保持するようになりました。(Tom)
  12. アーカイブリカバリが、リカバリの停止時間が使用された時だけではなく、常に新しい WAL 時系列から始まるようになりました。(Simon)

    最後の WALセグメントのアーカイブされた既存のコピーを上書きしようとする危険がまれに発生しましたが、これを防止します。
    また元の定義より単純、明確になったと考えられます。

  13. テーブルが小さすぎる場合は有用でないので、VACUUM がすべての maintenance_work_mem を使用しないようにしました。(Alvaro)
  14. マルチバイトエンコーディングのデータベースを使用するときに潜在していた、translate() のクラッシュが修正されました。(Tom)
  15. corr() が負の相関値に対して正しい結果を返すようになりました。(Neil)
  16. 68 年を超える間隔での extract(epoch from interval) でオーバーフローすることが修正されました。(Tom)
  17. 信頼された関数内で UTF-8 正規表現が使用された場合に、PL/Perl が失敗しないように修正されました。(Andrew)
  18. プラットフォームの Perl が、bool 型を char ではなく int として定義した場合に対応するように、PL/Perl が修正されました。(Tom)

    これは理論上どこでも発生する可能性がありましたが、標準的に構築された Perl では問題ありませんでした。Mac OS X 10.5 までは…。

  19. PL/Python が 64 ビットマシン上の Python 2.5 で正常に動作するように、修正されました。(Marko Kreen)
  20. 長い例外メッセージでクラッシュしないように PL/Python が修正されました。(Alvaro)
  21. PGPASSFILE が普通のファイル以外のファイルを参照するときに、libpq がクラッシュすることが修正されました。(Martin Pitt)
  22. 継承を利用した子テーブルが親テーブルと異なるデフォルト式を持っている場合も、正しく扱うように pg_dump が修正されました。(Tom)
  23. ecpg パーサが修正されました。(Michael)
  24. 128 ビットより長いキーで失敗する OpenSSL ライブラリに対して、contrib/pgcrypto が防衛するようになりました。
    これは、少なくとも一部のバージョンの Solaris で発生します。(Marko Kreen)
  25. contrib/tablefunc の crosstab() が、クラッシュするのではなく、独自の意味でカテゴリとして NULL 行識別子を扱うようになりました。(Joe)
  26. tsvector および tsquery 出力関数が、正しくバックスラッシュをエスケープするように修正されました。(Teodor, Bruce)
  27. 入力文字列が大きな場合に to_tsvector() がクラッシュすることが、修正されました。(Teodor)
  28. configure スクリプトを再生成する場合、特定のバージョンの Autoconf が必要になりました。(Peter)

    これは、開発者とパッケージ作成者のみに影響するものです。
    Autoconf と PostgreSQL のバージョンの未確認の組み合わせで使用されるのを防ぎます。
    その結果がうまくいくかどうかについて責任を負えるのであれば、異なるバージョンの Autoconf を本当に使いたい場合に、このバージョン検査を排除することができます。

  29. PostgreSQL を MinGW の新しいバージョンで構築できるように、gettimeofday の構築用検査が更新されました。 (Magnus)