[#37679] [FEATURE:trunk] EncDet again — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

23 messages 2009/01/03

[#37748] $LOAD_PATHとバージョンの運用の関係 — akira yamada / やまだあきら <akira@...>

1.9系でのバージョンの運用と$LOAD_PATHの値について質問です。

12 messages 2009/01/09
[#37758] Re: $LOAD_PATHとバージョンの運用の関係 — "NARUSE, Yui" <naruse@...> 2009/01/11

成瀬です。

[ruby-dev:37850] Re: $SAFE=1でのrequireがSecurityErrorになる条件

From: TADA Tadashi <t@...>
Date: 2009-01-28 13:23:45 UTC
List: ruby-dev #37850
ただただしです。

2009/1/28  <ds14050@vvvvvv.sakura.ne.jp>:
> こちらで一応調べてみた結果が日記に書いてあります。
> 若干まとまりがありませんが何かの足しにしてください。
>
> http://vvvvvv.sakura.ne.jp/ds14050/diary/20090113.html#p01 事の起こり
> http://vvvvvv.sakura.ne.jp/ds14050/diary/20090114.html#p01 事の起こり
> http://vvvvvv.sakura.ne.jp/ds14050/diary/20090116.html#p01 問題1
> http://vvvvvv.sakura.ne.jp/ds14050/diary/20090117.html#p01 問題2,まとめ
> http://vvvvvv.sakura.ne.jp/ds14050/diary/20090119.html#p01

情報ありがとうございます。読んでなかった!

ds14050さんのおっしゃるように、あとから追加したパスをuntaintしたら
requireでのエラーは消えました。#でもそのあとのwriteでまたエラー orz

西山さんや黒田さんの情報も確認しました。まとめると$SAFE=1では以下
のような問題が発生するようです。CGIを$SAFE=1で動かすのはよく使わ
れている手法で、mod_rubyも同様な環境なので、これはまずいんじゃない
かと思います:

1. $LOAD_PATHの中に汚染されたパスが混じっていると、そこに含まれな
  いパスからのrequireも問答無用でSecurityErrorになる

  汚染されたパスでファイルを見つけたときにだけエラーになって欲しい。
  もしくは、もうちょっと詳細なメッセージが欲しい。現状のSecurityError
  は、エラー情報が丸め込まれてしまっている印象。

2. 拡張ライブラリが$SAFE=1のもとでrequireできない

  回避策がないような? stringioを内部でrequireしているopen-uriなどがいっ
  さい使えなくなります。バグだと思うのですが。

3. gemも$SAFE=1のもとでは使えない

  1.と同根だと思いますが、実行時に動的に追加されたパスがすべて汚染さ
  れているので、$SAFEではgemがrequireできなくなっています。


#まだ他にもあるヨカン……

-- 
♪ツッコミは、短く鋭く愛を込めて。
ただただし <http://tdtds.jp/>
※メールアドレスが変わりました※

In This Thread

Prev Next