PostgreSQL 8.0.15 に関する技術情報

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

8.0.x の Windows 用のバイナリパッケージは、この 8.0.15 が最終です。8.2 にて Windows 固有の修正が行なわれているため、Windows ユーザは 8.2 以降のメジャーバージョンへの移行が推奨されています。

PostgreSQL 8.0.14 から 8.0.15 への変更点


  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.0.14 で行なわれた修正は不十分で、問題が解消されていたのは 一部の dblink 関数に対してのみでした。(CVE-2007-6601,CVE-2007-3278)

  4. 時間帯ファイル が tzdata のリリース 2007k に更新されました。(具体的には最近のアルゼンチンの変更)。(Tom)
  5. 一部の WHERE false AND var IN (SELECT …) におけるプランナの失敗が修正されました。 (Tom)
  6. ALTER TABLE … ALTER COLUMN TYPE を実行した際に、再構築されるインデックスのテーブルスペースと格納パラメータを保持するようになりました。(Tom)
  7. アーカイブリカバリが、リカバリの停止時間が使用された時だけではなく、常に新しい WAL 時系列から始まるようになりました。(Simon)

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

  8. テーブルが小さすぎる場合は有用でないので、VACUUM がすべての maintenance_work_mem を使用しないようにしました。(Alvaro)
  9. マルチバイトエンコーディングのデータベースを使用するときに潜在していた、translate() のクラッシュが修正されました。(Tom)
  10. プラットフォームの Perl が、bool 型を char ではなく int として定義した場合に対応するように、PL/Perl が修正されました。(Tom)

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

  11. 長い例外メッセージでクラッシュしないように PL/Python が修正されました。(Alvaro)
  12. 継承を利用した子テーブルが親テーブルと異なるデフォルト式を持っている場合も、正しく扱うように pg_dump が修正されました。(Tom)
  13. ecpg パーサが修正されました。(Michael)
  14. contrib/tablefunc の crosstab() が、クラッシュするのではなく、独自の意味でカテゴリとして NULL 行識別子を扱うようになりました。(Joe)
  15. tsvector および tsquery 出力関数が、正しくバックスラッシュをエスケープするように修正されました。(Teodor, Bruce)
  16. 入力文字列が大きな場合に to_tsvector() がクラッシュすることが、修正されました。(Teodor)
  17. configure スクリプトを再生成する場合、特定のバージョンの Autoconf が必要になりました。(Peter)

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