[pgsql-jp: 38063] Re: Advisory on possibly insecure security definer functions

Hiroki Kataoka kataoka @ interwiz.jp
2007年 2月 21日 (水) 13:05:13 JST


片岡です。

 なるほど、演算子にまでは頭が行ってませんでした。これは面倒すぎます。
set search_pathによる対策にも若干の問題があるとすると、これは十分に
INSECUREな機能といえますね。

 SECURITY DEFINERという点ではVIEWなんかも似たような動きをしますが、あち
らは問題ないのでしょうか。いま思いついただけで全然深く考えていませんが。

Tatsuo Ishii wrote:
> 石井です.

> 実際にはオペレータ
> とか関数とかデータ型そのほかすべてスキーマ名.オブジェクト名に書き換え
> なければなりません.ですから,単純なWHERE句付きのSELECT:
> 
> SELECT * FROM t1 WHERE i  = 'abc'::TEXT AND j < 10;
> 
> でさえも,少なくともこんな感じになります.
> 
> SELECT * FROM public.t1 WHERE i operator(pg_catalog.=) 'abc'::TEXT AND
> j operator(pg_catalog.<) 10;
> 
> 本当は,型も危ないので,TEXT とかスキーマ修飾してあげないといけないの
> かもしれませんが,面倒なので省いています.
> 
> # というか,暗黙の型変換とかもあり,その場合は外からスキーマ修飾できな
> # いので,手のうちようがないのでは?あ,でも内部処理は動的にスキーマサー
> # チパスで制御できるからOK?うーん,調査の必要あり.
> 
> 実用的でない,と言う点に関してはコアメンバーも同様の意見のようです.
> 
> やはり石田さんの言うように,PL/pgSQLに書き直すのがもっとも早いと思いま
> す.

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



pgsql-jp メーリングリストの案内