リリース8.2.6

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

# E.52. リリース8.2.6

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

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

## E.52.1. バージョン8.2.6への移行

8.2.Xからの移行ではダンプ/リストアは不要です。

## E.52.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.2.5で行った修正は不十分で、一部の`dblink`関数に対してのみ問題を解消していました。(CVE-2007-6601,CVE-2007-3278)

- GINインデックスに対するWAL再生における不具合を修正しました。(Teodor)

- `maintenance_work_mem`が4GB以上の場合にGINインデックスの構築が適切に動作するように修正しました。(Tom)

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

- 非CロケールにおけるプランナのLIKE/正規表現の推定を改良しました。(Tom)

- 深い階層の外部結合における計画処理速度を修正しました。 同様に結合順の非効率な選択を行う可能性も修正しました。(Tom)

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

- `CREATE TABLE ... SERIAL`と`ALTER SEQUENCE ... OWNED BY`がシーケンスの`currval()`状態を変更しないようにしました。(Tom)

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

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

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

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

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

- `corr()`が負の相関値に対して正しい結果を返すようにしました。(Neil)

- 68年を超える間隔で`extract(epoch from interval)`がオーバーフローすることを修正しました。(Tom)

- 信頼された関数内でUTF-8正規表現が使用された場合にPL/Perlが失敗しないように修正しました。(Andrew)

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

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

- 64ビットマシン上のPython 2.5で正常に動作するようPL/Pythonを修正しました。(Marko Kreen)

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

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

- `PGPASSFILE`が普通のファイル以外のファイルを参照する場合にlibpqがクラッシュすることを修正しました。

- 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を本当に使用したい場合は、このバージョン検査を取り除くことができます。

- PostgreSQLがMinGWの新しいバージョンで構築できるように`gettimeofday`の構築用検査を更新しました。

前のページ | ホーム | 次のページ
リリース8.2.7 | 上に戻る | リリース8.2.5