From: matz@... (Yukihiro Matsumoto) Date: 2003-10-21T08:04:29+09:00 Subject: [ruby-dev:21658] Re: access ENV on $SAFE==4 まつもと ゆきひろです In message "[ruby-dev:21656] Re: access ENV on $SAFE==4" on 03/10/21, Hidetoshi NAGAI writes: |ということは,RUBY_PLATFORM, $LOAD_PATH については |つぶすのに賛成ということですね. |ENV については一切アクセス不可は困るが, |必要以外の情報についてはつぶすのに賛成と理解しました. |そうしますと,次の方針が考えられると思います. | | (1) アクセス可能なものをあらかじめ指定しておく. | ライブラリで必要とされる最低限に絞れる代りに,必要な物が増える | 度に対応しなければならないのが問題.ライブラリの問題に core が | 引き摺られる恐れが大きい. | | (2) $SAFE < 4 において指定された情報にのみアクセスが許可される. | 最も妥当な線か? ただしライブラリ側の対応が必要となるため,マイ | ナーバージョンアップのレベルで導入するには大きすぎる変更かも. | | (3) マシン環境に関する情報を含むものをリストアップしてそれらをつぶし | た上で,ENV.keys の実行を禁止する. | ライブラリ側の対応が不要であるので導入は容易.ただし,危険な情 | 報をつぶしきれているかの不安を消せないのが問題.もしかすると, | こちらが把握していないアプリケーションの環境変数をスキャンされ | て,そこから探りを入れられてしまうかも. | |多分 (1) は無茶なので,私としては (2) が望ましいと思うのですが, |とりあえず (3) とした上で将来の (2) を予告し,1.9 などで移行と |いう戦略もありでしょう. このリストを見て、どこまでをどう潰すかってのは意外に難しいの だなあと感じました。$LOAD_PATHはglobal variableですからhook をかけるだけで対応できそうですが、RUBY_PLATFORMを$SAFE>=4で だけ見せないようにする方法とかすぐには思いつきません。 環境変数についても、もうちょっと議論する必要がありますね。 1.8.1には間に合わないかも。まあ、間に合わないなら間に合わな いで構わないのですが。 まつもと ゆきひろ /:|)