[Full-disclosure] RubyGems 0.9.0 and earlier installation exploit

Eric Hodel drbrain at segment7.net
Sun Jan 21 09:09:39 GMT 2007


Background:

RubyGems is the typical packaging tool for ruby packages.

RubyGems home page:

http://rubygems.org/

Ruby home page:

http://ruby-lang.org

Problem Description:

RubyGems does not check installation paths for gems before writing  
files.

Impact:

Since RubyGems packages are typically installed using root  
permissions, arbitrary files may be overwritten on-disk.  This may  
lead to denial of service, privilege escalation or remote compromise.

Workaround:

No known workarounds

Solution:

a) Upgrade to RubyGems 0.9.1

b) Apply one of the following patches

For RubyGems 0.9.0:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: installer.rb.extract_files.REL_0_9_0.patch
Type: application/octet-stream
Size: 1234 bytes
Desc: not available
Url : http://lists.grok.org.uk/pipermail/full-disclosure/attachments/20070121/24962ca3/attachment.obj 
-------------- next part --------------

For RubyGems 0.8.11:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: installer.rb.extract_files.REL_0_8_11.patch
Type: application/octet-stream
Size: 1397 bytes
Desc: not available
Url : http://lists.grok.org.uk/pipermail/full-disclosure/attachments/20070121/24962ca3/attachment-0001.obj 
-------------- next part --------------

MD5 (installer.rb.extract_files.REL_0_8_11.patch) =  
31e3bacd1821de0272864c153b7c0dca
MD5 (installer.rb.extract_files.REL_0_9_0.patch) =  
bed4fcdd438a7d8b81cf72e1ffe48a7d

Patches may also be downloaded here:

http://rubyforge.org/frs/shownotes.php?group_id=126&release_id=9074

Note:

Remote installations via Rubyforge will be disabled in the near  
future for versions of RubyGems earlier than 0.9.1, even for patched  
versions of RubyGems.  Local installations will continue to work,  
however.

Thanks to Gavin Sinclair for finding and reporting this problem.

Testing your updated RubyGems:

Installing rspec-0.7.5 will give an InstallError on a patched version  
of RubyGems:

$ gem install rspec --version 0.7.5
ERROR:  While executing gem ... (Gem::InstallError)
     attempt to install file into "../web_spec/ 
web_test_html_formatter.rb"

An updated rspec (0.7.5.1) has already been released.

-- 
Eric Hodel - drbrain at segment7.net - http://blog.segment7.net

I LIT YOUR GEM ON FIRE!



Full-Disclosure is hosted and sponsored by Secunia.