永井@知能.九工大です.

引用順序が前後しますので,もし意図に反していたらごめんなさい.

From: TADA Tadashi <sho / spc.gr.jp>
Subject: [ruby-dev:21666] Re: access ENV on $SAFE==4
Date: Tue, 21 Oct 2003 20:47:57 +0900
Message-ID: <20031021203303.74D8.SHO / spc.gr.jp>
> ライブラリが「何が必要か」を本当に判断できるのかどうか、そこに不安を感じ
> ています。といっても、実際に問題になりそうな具体例はまだ思いつかないので、
> おそらく杞憂だとは思うのですが。

この不安についてはわからなくはないです.
しかし,

> Hidetoshi NAGAI <nagai / ai.kyutech.ac.jp> wrote:
> >であるならなおのこと,$SAFE>=4 で自由に読ませるのは危険な気がします.
> えぇ、そこに反論はないです。

ということですから,現状のままでは不安があるので
何とかした方がよいという合意は成立したという前提でいくと,

>    (2) 基本的に禁止して、問題のないものだけ許可
>    (3) 基本的に許可して、問題のあるものだけ禁止

これらのいずれかの処置は必要であるということになります.
で,

> #(3)は事実上不可能なので、論点は「(2)をするか否か」ですね。

というように (3) が事実上不可能と判断するなら,
「(2) の対策によって何とかすべきである」ということになります.
つまり,「ライブラリ側は,自分が $SAFE >= 4 で動作するのに
環境変数が必要なら,それをライブラリ内で宣言する必要がある」
ということになります.

いくらなんでも自らの動作に必要な環境変数は,ライブラリ自身が
掌握しているはずですよね.

もしライブラリのユーザから「どうしてもこれこれの環境変数への
アクセスが必要である」との要望がなされたなら,それに対応するも
しないもライブラリの裁量に任されるでしょう.
その際には,本当に環境変数でなければならないのか,
ライブラリ上で何らかの変数に入れて渡してやることはできないのかも
検討することになるでしょう.

さて,こうして論述してきた主張に対して有効な反論は,
「そもそも環境変数を参照できなくしたところで
セキュリティには何ら影響しない」というように,
議論の根幹となっている部分を否定するものであると思います.
この点,最初の問題提起時に「私にはこれらの情報の読み出しまで
禁止することでどの程度セキュリティに貢献するのかは良くわから
ないのですが」と書いていたように,また,

> ただ、どんな危険があるのか具体例がまだないよ
> うですから、下記のいずれの策をとるか判断がつきかねるな、と思うんです。

とおっしゃられているように,あっさりと否定するだけの
論拠の持ち合わせはありません.
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp