Re: untaint'ing doesn't seem to work

Juha-Jarmo Heinonen <[email protected]>
Newsgroups gmane.comp.apache.mod-ruby
Message-ID <[email protected]>
Hi, you have to untaint files too.

On 10.5.2004, at 10:30, Jeffrey Dik wrote:

> Hi,
>
> I'm really new to all this mod_ruby/CGI stuff so I'm guessing the
> problems are solely due to my ignorance, but I can't find anything in
> the docs or examples to help me out.
>
> Here's what I'm using: mod_ruby 1.1.3, Apache 2.0.49, Ruby 1.8.1
>
> I'm trying to learning about tainting/untainting so I wrote this short
> script to "cat" a file.
>
>          require 'cgi'
>
>          query = CGI.new
>          filename = query["filename"].dup
>          filename.untaint
>          File.open(filename) { |f|
>            f.each_line { |l|
>                    print l
>            }
>          }
>
> This works fine if I throw a "RubySafeLevel 0" in the Apache config
> file, but a safe level of 1 prints this error in the Apache log:
> [Mon May 10 00:22:18 2004] [error] mod_ruby: error in 
> ruby\n/var/www/localhost/htdocs/tmp/cat.rbx:7:in `initialize': 
> Insecure operation - initialize (SecurityError)\n\tfrom 
> /var/www/localhost/htdocs/tmp/cat.rbx:7:in `open'\n\tfrom 
> /var/www/localhost/htdocs/tmp/cat.rbx:7\n\tfrom 
> /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'\n\tfrom 
> /usr/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'\n
>
> I thought that untaint was supposed to stop the SecurityError from 
> being
> thrown.  When I added the line
>         puts query["filename"].tainted?
> it prints "false".
>
> Any ideas?
> Jeff
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.