[#26430] compile error of missing/*.c — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26443] cvs [diff aborted]: cannot open file .cvsignore for comparing: No such file or directory — Tanaka Akira <akr@...17n.org>
最近、cvs diff に -k option を付けると、エラーになる (ことがある) ので
[#26463] String#each_byte and String#each_char — "NARUSE, Yui" <naruse@...>
成瀬です。
[#26468] $SAFE=1 の open-uri で redirect 時にエラー — Kazuhiko <kazuhiko@...>
かずひこです。
In article <m3zmsylimn.wl%kazuhiko@fdiary.net>,
まつもと ゆきひろです
In article <1120754832.716261.15867.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120762886.189058.18880.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
In article <1120810939.815280.27104.nullmailer@x31.priv.netlab.jp>,
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
In article <42CF1918.5000603@ruby-lang.org>,
前田です。
In article <42D7C230.7030509@ruby-lang.org>,
In article <42DDBA82.7030307@ruby-lang.org>,
[#26493] can't handle \c\ — KIMURA Koichi <kbk@...>
木村です。
卜部でございます。
木村です。
[#26508] rmdir(2) on windows doesn't set ENOTDIR — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
まつもと ゆきひろです
山本です。
山本です。
[#26530] removing static variables in parse.y — nobuyoshi nakada <nobuyoshi.nakada@...>
なかだです。
[#26566] cannot compile io.c on windows — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
山本です。
[#26574] SystemCallError.new("abc") => #<SystemCallError: unknown error - ab> — Tanaka Akira <akr@...17n.org>
次のように、メッセージの最後が切れます。
まつもと ゆきひろです
なかだです。
山本です。
まつもと ゆきひろです
なかだです。
山本です。
なかだです。
山本です。
なかだです。
なかだです。
まつもと ゆきひろです
山本です。
この変更があってからだと思うのですが、リンカが以下のように警告を発するよ
卜部です。自己レス
At Sat, 30 Jul 2005 02:32:38 +0900,
[#26594] test_s_open_lock failed on Solaris — Tanaka Akira <akr@...17n.org>
次のように、Solaris で test_s_open_lock が失敗します。
[#26618] Re: [ruby-cvs] ruby/ext/socket, ruby, ruby: * ext/socket/socket.c (ruby_connect): break immediately if a — Tanaka Akira <akr@...17n.org>
In article <20050728015209.0F30DC6734@lithium.ruby-lang.org>,
In article <1122518643.429222.1408.nullmailer@x31.priv.netlab.jp>,
[#26623] Ruby2.0BlockParameterNotation — SASADA Koichi <ko1@...>
ささだです。
まつもと ゆきひろです
[#26628] show information of '--enable-pthread' — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
わたなべです。
こんにちは、なかむら(う)です。
永井@知能.九工大です.
永井@知能.九工大です.
In message <20050731.094203.74726476.nagai@ai.kyutech.ac.jp>
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
まつもと ゆきひろです
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
永井@知能.九工大です.
こんにちは、なかむら(う)です。
永井@知能.九工大です.
こんにちは、なかむら(う)です。
こんにちは、なかむら(う)です。
[#26639] SEGV at zsuper with anonymous rest args. — nobu@...
なかだです。
まつもと ゆきひろです
山本です。
なかだです。
[ruby-dev:26570] Re: $SAFE=1 の open-uri で redirect 時にエラー
前田です。
Tanaka Akira wrote:
>>それでは、逆に安全だと判断したケース(たとえばschemeがhttpでGET/HEADのみ)
>>だけuntaintするようにすればよいのではないでしょうか。
>
>
> なぜ「schemeがhttpでGET/HEADのみ」というのを安全と判断するのでしょう?
>
> 前田さんが [ruby-dev:26484] で示唆したように、その場合でも情報漏洩の危
> 険性はありますよね。
たしかにそうですね。
「安全だと判断したケース」というのは適切ではありませんでした。
ユーザがそういう条件でredirectが起きることを理解して使うかぎりにおいて
安全ということなので、話が逆ですね。
> たとえば、perlsec の最初のほうに
>
> You may not use data derived from outside your program to affect some-
> thing else outside your program--at least, not by accident.
>
> という記述で始まるパラグラフがあります。これは perl の taint 機構が何
> を禁止するかという方針を (未定義な安全性とか危険性という言葉を使わずに)
> 表現しています。たとえば、read mode な open はファイル名が taint であっ
> ても許されるというのはこの説明から理解できます。また、perl は秘密情報
> を読み込むことは禁止しておらず、taint 機構が有効だからといって情報漏洩
> はとくに防がれないということもわかります。
>
> それに対して、Ruby の taint 機構には (少なくとも私は) そのような明示的
> な説明を見た覚えがありません。マニュアルには
(snip)
> しかたがないので、危険な操作のリストから ruby の方針を推測すると、read
> mode の open とか 1.9 で ENV[] が禁止されているところからみて、ruby で
> は秘密情報を内部に取り込むことによる情報漏洩の可能性も危険性として考え
> ているのではないだろうかと感じられます。
私もそう感じます。
perlsecの表現にならうと、現在のRubyのtaint機構の原則は、
You may not use data derived from outside your program to access some-
thing else outside your program--at least, not by accident.
という形で表現できるのではないかと思います。
> そうすると、open-uri で redirect を行うというのは、秘密情報を取り込ん
> でしまう可能性を生むわけですから、禁止するのは妥当かもしれないとも思う
> わけです。
デフォルトで禁止すること自体は妥当かもしれません。
ただ、たとえばfilename.tainted?がtrueだとしても
File.read(filename.dup.untaint)とすることができるわけですが、
現状のopen-uriでは(ユーザがライブラリ内部で取得されたデータをuntaint
することはできないため)そのように強制的に処理を行わせることができない
の点には不便さを感じます。
先の例のようにredirect先のURIを含む例外を発生させるとか、open時の
フラグか何かでredirectを強制させることができるようにするとかいった
処置はあった方がよいのではないでしょうか。
GET/HEADの場合に自動的にredirectをするというのは割と自然な挙動
(なのでプログラマもそれを期待したプログラムを書く)と思うので、
個人的には(ユーザが最初にopen-uriに渡したURIをuntaint
したことをもって)、redirectを許可してもよいのではないかなという
気もします。
File.open(filename)でfilenameがsymlinkだった時と似てますね。
# やっぱり、open-uriについても、デフォルトがどちらであれ、
# O_NOFOLLOWみたいなフラグがあった方がいいような気がします。
あと、taint機構が保護すべき操作の定義も問題なのですが、ライブラリ
が内部で取得したデータをどのように扱うべきかも問題な気がします。
「汚染されたデータによって外部の資源にアクセスできない」という原則を
そのままライブラリにも適用すると、今回のように動かないケースが出て
来ますよね。Cで書いてあるコードや、File.openのようにシステムコールの
中で外部からの入力を受け取っているケースなども考えると、(厳密に原則
を適用しようとすれば)問題となるようなケースはもっと多いかもしれません。
ライブラリに関しては、割り切って、
(1) 外部の資源にアクセスするメソッドについては、引数がtainted?ならば
例外を発生させる(明示的に発生させなくても他のメソッドの呼びだしで
発生すればOK)。
(2) 引数がtainted?でなければ、内部で取得したデータは必要に応じて勝手に
untaintしてもよい。
という方針でもいいのかなとも思うのですが、乱暴すぎるでしょうか。
--
前田 修吾