Versions Affected: All versions < 1.7.0
Not Affected: Any Gemfile with one or zero sources
Fixed Versions: 1.7.0
Releases: 1.7.0
Bundler 1.7 is a security-only release to address CVE-2013-0334, a vulnerability where a gem might be installed from an unintended source server, particularly while using both rubygems.org and gems.github.com.
Any Gemfile with multiple top-level source
lines cannot reliably control the gem server that a particular gem is fetched from. As a result, Bundler might install the wrong gem if more than one source provides a gem with the same name.
This is especially possible in the case of Github’s legacy gem server, hosted at gems.github.com. An attacker might create a malicious gem on RubyGems.org with the same name as a commonly-used Github gem. From that point forward, running bundle install
might result in the malicious gem being used instead of the expected gem.
To mitigate this, the Bundler and RubyGems.org teams worked together to copy almost every gem hosted on gems.github.com to rubygems.org, reducing the number of gems that can be used for such an attack.
To resolve this issue, upgrade to Bundler 1.7 by running gem install bundler
. The next time you run bundle install
for any Gemfile that contains multiple sources, each gem available from multiple sources will print a warning.
For every warning printed, edit the Gemfile to either specify a :source
option for that gem, or move the gem
line into a block that is passed to a source
method call.
For detailed information about the changes to how sources are handled in Bundler version 1.7, see the release announcement.
If you are unable to upgrade to Bundler 1.7, it is possible to work around the issue by removing all but one source
line from your Gemfile. Gems from other sources must be installed via the :git
option, which is not susceptible to this issue, or unpacked into the application repository and used via the :path
option.
Unfortunately, backporting a fix for this issue proved impractical, as previous versions of Bundler lacked the ability to distinguish between gem servers.
Thanks to Andreas Loupasakis and Fotos Georgiadis for reporting this issue, James Tucker, Tony Arcieri, Eric Hodel, Michael Koziarski, and Kurt Seifried for assistance with the eventual solution, and David Radcliffe for importing legacy Github gems into RubyGems.org.