[#30549] [ANN] Ruby 1.8.6 has been released — "Akinori MUSHA" <knu@...>

 Ruby 1.8.6 をリリースしました。

14 messages 2007/03/12

[#30553] help: lib/shell for ruby 1.9 — keiju@... (Keiju ISHITSUKA)

けいじゅ@いしつかです.

13 messages 2007/03/13
[#30585] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[#30587] Re: help: lib/shell for ruby 1.9 — keiju@... (石塚圭樹) 2007/03/15

けいじゅ@いしつかです.

[#30588] Re: help: lib/shell for ruby 1.9 — Yukihiro Matsumoto <matz@...> 2007/03/15

まつもと ゆきひろです

[ruby-dev:30575] RSS::Parser.parseでSecurityError

From: Kazuhiro NISHIYAMA <zn@...>
Date: 2007-03-14 06:11:40 UTC
List: ruby-dev #30575
西山和広です。

http://lists.sourceforge.jp/mailman/archives/hiki-dev/2007-March/001150.html
[Hiki-dev:01151] Ruby 1.8.6でrss-showをうごかすとsecurityエラー

というのを調べていて気がついたのですが、

#!/usr/bin/ruby
require 'rss'
rss = RSS::Maker.make("1.0") do |maker|
  maker.channel.about = "http://example.com/index.rdf"
  maker.channel.title = "Example"
  maker.channel.description = "Example Site"
  maker.channel.link = "http://example.com/"
end.to_s
rss.taint
$SAFE = 1
RSS::Parser.parse(rss, false)

のように$SAFEが1か2のときに、taintedなStringをRSS::Parser.parseに渡すと
.../rss/parser.rb:314:in `respond_to?': Insecure: can't intern tainted string (SecurityError)
になります。
($SAFEが3と4のときはそれぞれ別のところで SecurityError になるけど、
それはたぶん問題はないはず。)


原因として、以下のように対応する Symbol がない String を
引数として respond_to? を呼び出すと SecurityError に
なっているようです。

このとき、SecurityError になるならrespond_to? は false に
なるはず、と予測できてしまうので SecurityError ではなく
false を返してもセキュリティの問題はないと思うのですが、
どうでしょうか?

% ruby18 -ve '$SAFE=1; respond_to? "to_a".taint'
ruby 1.8.6 (2007-03-13 patchlevel 5000) [i686-linux]
% ruby18 -ve '$SAFE=1; respond_to? "hoge".taint'
ruby 1.8.6 (2007-03-13 patchlevel 5000) [i686-linux]
-e:1:in `respond_to?': Insecure: can't intern tainted string (SecurityError)
        from -e:1
% ruby18 -ve 'def hoge; end; $SAFE=1; respond_to? "hoge".taint'
ruby 1.8.6 (2007-03-13 patchlevel 5000) [i686-linux]
% ruby18 -ve ':hoge; $SAFE=1; respond_to? "hoge".taint' 
ruby 1.8.6 (2007-03-13 patchlevel 5000) [i686-linux]
-e:1: warning: unused literal ignored
%


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)

In This Thread

Prev Next