かずひこです。

$SAFE=1 の時に open-uri でアクセスした URI が redirect されたときに、
untaint が伝播せずに security error になります。

例えば、http://www.ruby-lang.org/ -> http://www.ruby-lang.org/en/ の時に、
こんな感じになります。

$ ruby-1.8 -v -r open-uri -e '$SAFE=1; open( "http://www.ruby-lang.org/".untaint)'
ruby 1.8.3 (2005-07-05) [i686-linux]
/usr/lib/ruby/1.8/net/protocol.rb:83:in `initialize': Insecure operation - initialize (SecurityError)
        from /usr/lib/ruby/1.8/net/protocol.rb:83:in `connect'
        from /usr/lib/ruby/1.8/net/protocol.rb:82:in `timeout'
        from /usr/lib/ruby/1.8/timeout.rb:62:in `timeout'
        from /usr/lib/ruby/1.8/net/protocol.rb:82:in `connect'
        from /usr/lib/ruby/1.8/net/protocol.rb:64:in `initialize'
        from /usr/lib/ruby/1.8/net/http.rb:429:in `do_start'
        from /usr/lib/ruby/1.8/net/http.rb:418:in `start'
        from /usr/lib/ruby/1.8/open-uri.rb:245:in `open_http'
        from /usr/lib/ruby/1.8/open-uri.rb:629:in `buffer_open'
        from /usr/lib/ruby/1.8/open-uri.rb:167:in `open_loop'
        from /usr/lib/ruby/1.8/open-uri.rb:165:in `catch'
        from /usr/lib/ruby/1.8/open-uri.rb:165:in `open_loop'
        from /usr/lib/ruby/1.8/open-uri.rb:135:in `open_uri'
        from /usr/lib/ruby/1.8/open-uri.rb:531:in `open'
        from /usr/lib/ruby/1.8/open-uri.rb:86:in `open'
        from -e:1

redirect された二回目に open-uri.rb:221 に来た時点で、

221:      target_host = target.host

target.tainted? => false
target.host.tainted? => true

になっているようです。報告だけですみませんが、よろしくお願いします。
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  「恋とハックはアジャイルが命!」