|
Message-id: <6C1F1FB3-1345-48F9-AFA6-860AC3010464@me.com> Date: Mon, 10 Mar 2014 16:33:12 -0400 From: "Larry W. Cashdollar" <larry0@...com> To: Open Source Security <oss-security@...ts.openwall.com> Subject: Remote Command Injection in Arabic Prawn 0.0.1 Ruby Gem Title: Remote Command Injection in Arabic Prawn 0.0.1 Ruby Gem Author: Larry W. Cashdollar, @_larry0 Download Site: http://rubygems.org/gems/Arabic-Prawn Date: 12/17/2013 CVE: Please assign. Vendor Notified: 3/3/2014 In Arabic-Prawn-0.0.1/lib/string_utf_support.rb, the following lines pass unsanitized input to the shell. 426 var = %x{ /usr/bin/curl -I -L --fail --silent --connect-timeout #{seconds} --max-time #{seconds+10} # {url}; /bin/echo -n $? }.to_i 427 428 #return false unless var == 0 429 raise "Failed to create connection to web site: #{url} -- curl error code: #{var} -- " unless var == 0 430 431 str = %x{ /usr/bin/curl -L --fail --silent --connect-timeout #{seconds} --max-time #{seconds+10} #{ur l} | \ 432 /usr/bin/grep -Eo -m 1 \"(charset|encoding)=[\\"']?[^\\"'>]+\" | /usr/bin/grep -Eo \"[^=\\" '>]+$\" } 443 %x{ /usr/bin/touch #{downloaded_file} 2>/dev/null } 444 raise "No valid HTML download file (path) specified!" unless File.file?(downloaded_file) 445 %x{ /usr/bin/curl -L --fail --silent --connect-timeout #{seconds} --max-time #{seconds+10} -o #{downl oaded_file} #{url} } 446 447 simple_test = %x{ /usr/bin/file -ik #{downloaded_file} } # cf. man file If the downloaded file name #{downloaded_file} or #{url} contains any shell meta characters like ';' a malicious user can inject shell commands. PoC myfile;id;.txt id would be passed to the command line and executed. Advisory: http://www.vapid.dhs.org/advisories/arabic-ruby-gem.html
Powered by blists - more mailing lists
Please check out the Open Source Software Security Wiki, which is counterpart to this mailing list.
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.