まつもと ゆきひろです

In message "Re: [ruby-dev:35298] Re: $SAFEの今後"
    on Wed, 2 Jul 2008 00:03:51 +0900, Urabe Shyouhei <shyouhei / ruby-lang.org> writes:

|確認したいのですがまつもとさんの中では開発と保守ってのは渾然一体なのですね?
|俺(や、おそらく多くの職業プログラマはそうだと思いますが)はその二つは一応
|線を引いて考えているので。

わりとそういう傾向はあります。で、「線を引いて考える人」にとっ
て、こういう場合の保守ってのはどういうアクションを意味するん
でしょうね。

|trunkでセーフレベルを考え直すとか言ってたのはもっとがらっと変えるんだと
|思ってたんですが、セーフレベルの本質に踏み込んだ改善はなされないつもりな
|んですか。だとしたらあんまり意味ないなあ。

前回のメール[ruby-dev:35293]ではtrunkについてなにも語っていま
せん。念頭にあったのは1.8に今あるものにどう対処するか、です。

|なぜ、俺の提案した「trunkからは削る/1.8.7までは残す」ってのは選択肢にす
|ら登ってないんですか?

前述のようにtrunkについて語っていないので、「trunkから削る」
ことについては中立です。反対もしません。(まだ)積極的に賛成と
いうわけではないですけど。「1.8.7までは残す」というのは
「1.8.8では削る」という意味ですから「1.8からも削っちゃう」に
含まれると思います。タイミングはともかく。

で、この件について安全性を重視する(ので、情報を公開することさ
えしたくない)人にとって、1.8.8が普及するまでの(結構長い)間、
セーフレベル4を放置すると言うのは「我々が背負った業のようなも
のなので、付き合い続けるしかありません」のヒトコトで納得でき
ちゃう程度の危険性なんですかね。その程度なら「絶対非公開にす
べき」とか過剰反応する必要もなさそうな気がするのですが。

いずれにしても、可能なアクションは、前に進む(穴を塞いでマシに
する)か、後ろに下がる(セーフレベル4を削る)のどちらかではない
かと思います。開発で対応するか、運用で対応するかと言い換えて
もいいです。

前に進むなら、なんらかの開発が必要です。手順としては、非公開
で開発するか、いつも通り公開で開発するかどちらかで、私はRuby
の開発で非公開でうまくいった経験がないので公開で議論/開発した
いと思っています。

後ろに下がるなら、それはいつまでにどのような手順で削るかとい
う問題になると思います。機能がなくなることの混乱と安全性を天
秤にかけることになるでしょう。

で、trunkでセーフレベル4とは別のサンドボックス機能を開発する
かどうかはこれらとは独立の話です。今のセーフレベル4をマシにで
きるならそれでもよいですし、それは無理だということであれば、
別の仕組みを考える必要があるかもしれませんし、そもそもそのよ
うな仕組みを今後導入しないと言う判断もありえるでしょう。

で、ユーザの都合とか負担とかまったく考慮しないで、安全性を最
重視するならば、アクションは「ただちに削る」しかありえないで
しょう。

なんらかの判断で「そこまで緊急性はない」ということであれば、
少々時間がかけられるので、ユーザの利便性も考えた手について検
討できると思います。

削るってことは「ほとんど使われてないとか言うにはあまりに使わ
れている」コードすべてに書き直しが必要になることを意味するの
で、ユーザの利便性を考えると、可能であるならば、削らないでセー
フレベル4を残すのが良いと思います。

が、もっと議論を深めないと、どの程度まで安全性が実現できるの
かということは明らかにならないと思います。で、「そこまで緊急
性はない」のであれば議論は公開で行いたい。限られた参加者では
議論が深まらないと思うからです。議論が深まった結果、セーフレ
ベル4という仕組みそのものが根源的な欠陥があり、まったく使用
に耐えないので削らざるをえない、という結論が出るかもしれませ
ん。あるいは限界を知れば役に立つこともあるという結論かもしれ
ません。

卜部さんの提案「1.8.8で削る」というのは、当面放置することから
「そこまで緊急性がない」ということであり、その割に将来コード
書き換えを強制するのでユーザに対して優しくないということで、
可能であれば避けたい手なんじゃないかと思います。

|まず、あまり使われてないってのは事実と反するので、全部公開して保守するの
|だけは絶対反対です。そこは引けません。

OK。卜部さんは、1.8にあるセーフレベル4の機能を全部公開して保
守することには絶対反対と。その主張は認識しました。

で、そうだとすると、それによって達成したい安全性ってのはどの
ようなもんなんですかね。ただちにセーフレベル4を削るわけでない
以上、穴は(きっと)あるわけで、この部分を使って攻撃したいと思
う人がいるなら、別にruby-devやChangeLogから情報を得なくても、
ソースコードを研究して攻撃手段を入手するのは(技術力さえあれ
ば)さほど困難ではないように思います。逆に開発が公開されていて
も、(議論に注意すれば) 技術力のないカジュアルな攻撃者に攻撃ツー
ルを渡さない程度のことは十分できるでしょう。セーフレベル4が
1.8に残っている以上、開発が公開されていてもいなくても、技術
力のある人にとっては攻撃は可能であり、技術力のない人には攻撃
は難しい。これはさほど変わりません。

ですから、秘密にするということによって得られる「安全の増加」
というのはわずかで、開発が面倒になる/結果の品質が低くなるデメ
リットの方が大きいように思えるのですが。

あ、あくまでもこの件に関してね。

                                まつもと ゆきひろ /:|)