リリース8.0.15

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 付録 E. リリースノート | 早送り | 次のページ

# E.94. リリース8.0.15

> リリース日: 2008-01-07

このリリースは、重大なセキュリティ問題の修正を含む、8.0.14の各種不具合を修正したものです。 8.0メジャーリリースにおける新機能については項E.109を参照してください。

これが、PostgreSQLコミュニティがWindows用のバイナリパッケージを作成する、最後の8.0.Xリリースです。 8.2.Xでは、過去のバージョンに移植することが現実的ではない、Windows固有の修正が行われていますので、Windowsユーザは8.2.X以降への移行が推奨されています。 他のプラットフォームでは8.0.Xはまだサポートされます。

## E.94.1. バージョン8.0.15への移行

8.0.Xからの移行ではダンプ/リストアは不要です。 しかし、8.0.6より前のバージョンからアップグレードする場合は、8.0.6のリリースノートを参照してください。

## E.94.2. 変更点

- インデックス内の関数が`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`を使用して、パスワード認証のみをセキュリティ制限として使用するには非スーパーユーザでなければなりません。

  8.0.14で行った修正は不十分で、一部の`dblink`関数に対してのみ問題を解消していました。(CVE-2007-6601,CVE-2007-3278)

- 時間帯ファイルをtzdataリリース2007kに更新しました（具体的には最近のアルゼンチンの変更）。(Tom)

- 一部の`WHERE false AND var IN (SELECT ...)`におけるプランナの失敗を修正しました。 (Tom)

- `ALTER TABLE ... ALTER COLUMN TYPE`で再構築されるインデックスのテーブル空間と格納パラメータを保持します。(Tom)

- アーカイブリカバリが、リカバリの停止時間が使用された時だけではなく、常に新しいWAL時系列から始まるようにしました。

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

- テーブルが小さすぎて有用でない場合、`VACUUM`がすべての`maintenance_work_mem`を使用しないようにしました。

- マルチバイトデータベース符号化方式を使用している時に潜在する、`translate()`のクラッシュを修正しました。

- プラットフォームのPerlが`bool`型を`char`ではなく`int`として定義した場合に対応するようにPL/Perlを修正しました。(Tom)

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

- 長い例外メッセージでクラッシュしないようPL/Pythonを修正しました。(Alvaro)

- 親テーブルと異なるデフォルト式を持つ、継承子テーブルを正しく扱うようpg_dumpを修正しました。(Tom)

- ecpgパーサを修正しました。(Michael)

- `contrib/tablefunc`の`crosstab()`が、クラッシュするのではなく、独自の意味でカテゴリとしてNULL行識別子を扱うようにしました。(Joe)

- `tsvector`および`tsquery`出力関数が正しくバックスラッシュをエスケープするように修正しました。(Teodor, Bruce)

- 入力文字列が大きな場合に`to_tsvector()`がクラッシュすることを修正しました。(Teodor)

- `configure`スクリプトを再生成する場合、特定のバージョンのAutoconfを使用することが必要になりました。(Peter)

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

前のページ | ホーム | 次のページ
リリース8.0.16 | 上に戻る | リリース8.0.14