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

Ruby/Tk 周りでいろいろいじっている際に気付いたのですが,
Tcl/Tk では Safe インタープリタを生成する際に,
マシン環境に関する情報のいくつかを参照できなくしています.
潰しているのは

  env
  tcl_platform(os), tcl_platform(osVersion), 
       tcl_platform(machine), tcl_platform(user)
  tclDefaultLibrary
  tcl_library
  tcl_pkgPath

で,Ruby に対応させるなら

  ENV
  RUBY_PLATFORM  (PLATFORM)
  $LOAD_PATH     ($:, $-I)

になるかと思います.
Ruby では $SAFE==4 で ENV の書き換えは禁止されていますが,
情報の読み出しは禁止されていません(ですよね?).
私にはこれらの情報の読み出しまで禁止することで
どの程度セキュリティに貢献するのかは良くわからないのですが,
Tcl/Tk でわざわざ禁止しているところを見ると,
それなりの意味があるのかもしれません.

そこでみなさんにお尋ねしたいのですが,

「$SAFE == 4 においてこれらへのアクセスを禁止することを
  どう思われますでしょうか?」

私自身は,これらへのアクセスを禁止しても問題がなさそうなので
少しでも危険性があるのなら禁止してしまうべきかと考えています.
ですが,私が思い付かないだけで「禁止されては困る」というケースも
あるかもしれません.
ぜひ意見をお聞かせ下さい.
-- 
                                         永井 秀利 (九工大 知能情報)
                                             nagai / ai.kyutech.ac.jp