From: Shugo Maeda Date: 2009-07-23T22:09:36+09:00 Subject: [ruby-dev:38890] Re: セキュリティモデルのドキュメント 前田です。 2009/07/23 1:09 に Kazuhiro NISHIYAMA さんは書きました: > untrusted はフラグとして設定されたりされなかったりするだけで、 > フラグが設定されているかどうかによって何らかの動作に影響する > ものではない、ということなのでしょうか? 違います。 「セーフレベル4」の「禁止される操作」に挙げている以下の操作のチェックに 利用されます。 # 抜けがあるかもしれません。 * 信頼されたクラスやモジュールの定義の変更 およびクラス変数の変更 * 信頼されたオブジェクトの状態の変更 * 信頼されたIOやFileを使用する処理 基本的にセーフレベル4では信頼されていないオブジェクト(untrustedフラグ が設定されたオブジェクト)しか変更できません。 以前はこれがtaintedフラグによってチェックされていたので、サンドボックス 外で生成されたオブジェクトがたまたまtaintedだった場合に、それを書き変 えることにより、セーフレベル4で禁止された操作を実行させることができる 脆弱性がいくつも報告されました。 当初は一つずつfreezeする対策が取られましたが、きりがないので、 taintedとは別のフラグとしてuntrustedを用意する変更を私が行いました。 -- Shugo Maeda