Debian セキュリティ勧告

DSA-2864-1 postgresql-8.4 -- 複数の脆弱性

報告日時:
2014-02-20
影響を受けるパッケージ:
postgresql-8.4
危険性:
あり
参考セキュリティデータベース:
Mitre の CVE 辞書: CVE-2014-0060, CVE-2014-0061, CVE-2014-0062, CVE-2014-0063, CVE-2014-0064, CVE-2014-0065, CVE-2014-0066, CVE-2014-0067.
詳細:

様々な脆弱性が PostgreSQL に発見されています:

  • CVE-2014-0060 GRANT ... WITH ADMIN OPTION 制限の強化 (Noah Misch)

    ADMIN オプションを使わないロール権限付与では、 付与されるメンバーは付与されたロール権限の付与や剥奪はできないことになっていますが、 この制限は最初に SET ROLE することで簡単に迂回できます。 セキュリティ面での影響はロール権限を認めた者の意図とは裏腹に、 あるロールのメンバーが他者のアクセス権限を剥奪できるということが主なものとなります。 認められていないロールのメンバー追加については、 非協力的なロールのメンバーがビュー作成や SECURITY DEFINER 関数によりメンバーを追加しなくてもその権限のほとんどを他者に提供できるため、 懸念としては低くなります。

  • CVE-2014-0061 PL validator 関数を明示的に呼び出すことによる特権の昇格 (Andres Freund)

    PL (手続き型言語、procedural language) validator 関数の元々の役割は CREATE FUNCTION により暗黙のうちに呼び出されるものですが、 これはユーザが明示的に呼び出せる通常の SQL 関数でもあります。 実際に他の言語で書かれた関数での validator 呼び出しではチェックを行わないものがあり、権限昇格の目的で悪用が可能でした。 この修正では権限を確認する関数の呼び出しを各 validator 関数に追加しています。コア外の手続き型言語でも validator 関数を利用している場合にはこの種の変更が必要となります。

  • CVE-2014-0062 テーブルと索引の DDL での複数の名前の照合 (Robert Haas, Andres Freund)

    同時に操作することにより名前の照合が別のものになった場合、DDL の一部を他とは異なるテーブルに対して実行する可能性があります。少なくとも CREATE INDEX の場合はそれを利用して索引を作成するのとは異なるテーブルに対して権限を確認させ、 特権が昇格する攻撃を許します。

  • CVE-2014-0063 長い datetime 文字列でのバッファオーバーラン (Noah Misch)

    MAXDATELEN 定数が interval 型の取り得る最長値から見て小さすぎるために interval_out() でのバッファオーバーランを許します。datetime 入力関数はバッファオーバーランを避けるようにもっと注意を払っていましたが、 制限が低かったために非常に長いタイムゾーンの名前を含めた入力等、 有効な入力を拒否することがありました。ecpg ライブラリには独自のものに加えてこの脆弱性もありました。

  • CVE-2014-0064 サイズ計算での整数オーバーフローによるバッファオーバーラン (Noah Misch, Heikki Linnakangas)

    主に型入力の複数の関数でオーバーフローを確認せずに割り当てサイズを計算していました。 オーバーフローが発生した場合には小さすぎるバッファを割り当ててから書き込んでいました。

  • CVE-2014-0065 固定サイズのバッファのオーバーラン (Peter Eisentraut, Jozef Mlich)

    strlcpy() や関連の関数を利用することで固定サイズのバッファが超過していないことを明確に保証します。 前述の項目とは異なり、 ほとんどの場合入力文字列サイズについては前の制約を受けているようなので、 この場合実際に今起きている問題を示しているかどうかは不明です。にもかかわらず Coverity のこの種の警告を全て出ないようにすることには慎重なようです。

  • CVE-2014-0066 crypt() が NULL を返した場合にクラッシュ (Honza Horak, Bruce Momjian)

    比較的起こりにくい問題ですが crypt() が NULL を返すことがあり、その場合 contrib/chkpass はクラッシュします。これが問題となる可能性がある現実的な状況としては libc が認められていないハッシュアルゴリズムの実行を拒否するように設定されている (例えば FIPS モード) 場合があります。

  • CVE-2014-0067 リグレッションテストの指示で make check を行うことの危険に言及 (Noah Misch, Tom Lane)

    make check により起動される一時サーバは trust 認証を利用するので 同一のマシン上の別のユーザがデータベースのスーパーユーザとして接続できるため、 そのオペレーティングシステムでテストを開始したユーザの権限を潜在的に悪用できます。 将来のリリースでは恐らくこの危険を避けるようにテスト手順に変更が盛り込まれることになりますが、 その前に公開議論が必要となるでしょう。 そのため現時点では同一のマシンに信頼できないユーザがいる場合に make check を行うことに対しての注意喚起に留めます。

旧安定版 (oldstable) ディストリビューション (squeeze) では、この問題はバージョン 8.4.20-0squeeze1 で修正されています。

不安定版 (unstable) ディストリビューション (sid) では、この問題は postgresql-9.3 パッケージのバージョン 9.3.3-1 で修正されています。

直ちに postgresql-8.4 パッケージをアップグレードすることを勧めます。