
このリリースは 8.1.10 からの修正リリース(2008/01/07リリース)です。
本ドキュメントは PostgreSQL のリリースノートを基に作成しています。
8.1.x からのアップデートではダンプ、リストアは不要です。
ただし、8.1.2 より前のバージョンからのアップデートの場合には 8.1.2 のリリース情報も確認してください。
8.1.x の Windows 用のバイナリパッケージは、この 8.1.11 が最終です。8.2 にて Windows 固有の修正が行なわれているため、Windows ユーザは 8.2 以降のメジャーバージョンへの移行が推奨されています。
PostgreSQL 8.1.10 から 8.1.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 を使用して、パスワード認証のみをセキュリティ制限として使用するには非スーパーユーザでなければならなくなりました。(Joe)
8.1.10 で行なわれた修正は不十分で、問題が解消されていたのは 一部の dblink 関数に対してのみでした。(CVE-2007-6601,CVE-2007-3278)
- C(common)ロケールでないロケールにおける、プランナの LIKE/正規表現 の推定が改良されました。(Tom)
- 時間帯ファイル が tzdata のリリース 2007k に更新されました。(具体的には最近のアルゼンチンの変更)。(Tom)
- 一部の WHERE false AND var IN (SELECT …) におけるプランナの失敗が修正されました。 (Tom)
- ALTER TABLE … ALTER COLUMN TYPE を実行した際に、再構築されるインデックスのテーブルスペースと格納パラメータを保持するようになりました。(Tom)
- アーカイブリカバリが、リカバリの停止時間が使用された時だけではなく、常に新しい WAL 時系列から始まるようになりました。(Simon)
最後の WALセグメントのアーカイブされた既存のコピーを上書きしようとする危険がまれに発生しましたが、これを防止します。また元の定義より単純、明確になったと考えられます。
- テーブルが小さすぎる場合は有用でないので、VACUUM がすべての maintenance_work_mem を使用しないようにしました。(Alvaro)
- マルチバイトエンコーディングのデータベースを使用するときに潜在していた、translate() のクラッシュが修正されました。(Tom)
- 68 年を超える間隔での extract(epoch from interval) でオーバーフローすることが修正されました。(Tom)
- 信頼された関数内で UTF-8 正規表現が使用された場合に、PL/Perl が失敗しないように修正されました。(Andrew)
- プラットフォームの Perl が、bool 型を char ではなく int として定義した場合に対応するように、PL/Perl が修正されました。(Tom)
これは理論上どこでも発生する可能性がありましたが、標準的に構築された Perl では問題ありませんでした。Mac OS X 10.5 までは…。
- 長い例外メッセージでクラッシュしないように PL/Python が修正されました。(Alvaro)
- PGPASSFILE が普通のファイル以外のファイルを参照するときに、libpq がクラッシュすることが修正されました。(Martin Pitt)
- 継承を利用した子テーブルが親テーブルと異なるデフォルト式を持っている場合も、正しく扱うように pg_dump が修正されました。(Tom)
- ecpg パーサが修正されました。(Michael)
- 128 ビットより長いキーで失敗する OpenSSL ライブラリに対して、contrib/pgcrypto が防衛するようになりました。
これは、少なくとも一部のバージョンの Solaris で発生します。(Marko Kreen) - contrib/tablefunc の crosstab() が、クラッシュするのではなく、独自の意味でカテゴリとして NULL 行識別子を扱うようになりました。(Joe)
- tsvector および tsquery 出力関数が、正しくバックスラッシュをエスケープするように修正されました。(Teodor, Bruce)
- 入力文字列が大きな場合に to_tsvector() がクラッシュすることが、修正されました。(Teodor)
- configure スクリプトを再生成する場合、特定のバージョンの Autoconf が必要になりました。(Peter)
これは、開発者とパッケージ作成者のみに影響するものです。Autoconf と PostgreSQL のバージョンの未確認の組み合わせで使用されるのを防ぎます。その結果がうまくいくかどうかについて責任を負えるのであれば、異なるバージョンの Autoconf を本当に使いたい場合に、このバージョン検査を排除することができます。