[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 メーリングリストの案内