From: matz@... (Yukihiro Matsumoto) Date: 2003-09-03T11:45:02+09:00 Subject: [ruby-dev:21306] Re: 大量メモリ消費攻撃に対する対応 まつもと ゆきひろです In message "[ruby-dev:21288] Re: 大量メモリ消費攻撃に対する対応" on 03/08/29, Hidetoshi NAGAI writes: |> * $SAFE=4ではmalloc(3)の失敗に対してNoMemoryErrorを発生さ |> せ、そのスレッドを終了させる。 | |「信用できないスクリプトは $SAFE=4 で」というのは |確かに本来はそうあるべきなのだとは思うのですが, |外部から持ちこんだスクリプトを丸々 $SAFE=4 で実行しようとした場合, |制約が厳しすぎて何もできないのと同意ですので, |$SAFE=3 での実行を考えていました. | |# 例えば現在の Ruby/Tk は $SAFE=4 では全く動かせません. $SAFE=3というのは「$SAFE=4にいたる中間の状態」程度の意味で実 用になるかは検証されていません。特に信頼できないプログラムに 対しては。$SAFE=4でも動く回避策はないか模索するべきではない でしょうか。 memory attackに対するもっとマシな防御策が欲しいということは 変わりませんけどね。 |malloc に失敗する状態まで確保させてしまうのは危険に感じます. |その状態ですとすでにシステム負荷は非常に大きくなってしまっている |と思いますので,そうなる前になんとか食い止めたいところですね. 同感です。 |実は「制約値を自動的に」というのはあまり考えていませんでした. |信頼できるスレッド (メインスレッド) から信頼できないスレッドを |起動する際に適当に制約を与えるというようなことを思っていました. |えいやぁでサンプル的な値を決めておいて,後は任せるというのでは |だめですかね.(^_^; メモリの上限とは必要量というのは環境によって相当異なるのを無 視してよいのかというと私にはよくわかりません。「ないよりはマ シ」という主張は理解できますが。 In message "[ruby-dev:21289] Re: 大量メモリ消費攻撃に対する対応" on 03/08/29, Hidetoshi NAGAI writes: |上の状態でメインスレッドはメモリ制約なしに動いてますから, |「スレッド(信頼できるスレッド;メインスレッドに限る?)は, |自らの制約値までは他のスレッドの制約値を緩めることができる」 |として,信頼できるスレッドからのメッセージに応じて利用者が |許可を出せるようにするというのは難しいですかね? 「自らの制約値までは他のスレッドの制約値を緩めることができる」 というのは分かりますし、ありえる解だと思うのですが、「信頼で きるスレッドからのメッセージに応じて利用者が許可を出せるよう にする」というのは具体的にどういうことかイメージがつかめませ んでした。 まつもと ゆきひろ /:|)