by Hiroshi SHIBATA

Today we’re disclosing several vulnerablities to RubyGems. They have all been reported via hackerone.

We strongly recommend to upgrade the latest stable version of RubyGems 3.0.3 or 2.7.8. If you can’t upgrade RubyGems 2.7 or 3.0, please use this patch for RubyGems 2.6.

CVE-2019-8320: Delete directory using symlink when decompressing tar

Description

A Directory Traversal issue was discovered in RubyGems 2.7.6 and later through 3.0.2. Before making new directories or touching files (which now include path-checking code for symlinks), it would delete the target destination. If that destination was hidden behind a symlink, a malicious gem could delete arbitrary files on the user’s machine, presuming the attacker could guess at paths. Given how frequently gem is run as sudo, and how predictable paths are on modern systems ( /tmp , /usr , etc.), this could likely lead to data loss or an unusable system.

Reporter

ooooooo_q

CVE-2019-8321: Escape sequence injection vulnerability in verbose

Description

An issue was discovered in RubyGems 2.6 and later through 3.0.2. Since Gem::UserInteraction#verbose calls say without escaping, escape sequence injection is possible.

Reporter

ooooooo_q

CVE-2019-8322: Escape sequence injection vulnerability in gem owner

Description

An issue was discovered in RubyGems 2.6 and later through 3.0.2. The gem owner command outputs the contents of the API response directly to stdout. Therefore, if the response is crafted, escape sequence injection may occur.

Reporter

ooooooo_q

CVE-2019-8323: Escape sequence injection vulnerability in API response handling

Description

An issue was discovered in RubyGems 2.6 and later through 3.0.2. Gem::GemcutterUtilities#with_response may output the API response to stdout as it is. Therefore, if the API side modifies the response, escape sequence injection may occur.

Reporter

ooooooo_q

CVE-2019-8324: Installing a malicious gem may lead to arbitrary code execution

Description

An issue was discovered in RubyGems 2.6 and later through 3.0.2. A crafted gem with a multi-line name is not handled correctly. Therefore, an attacker could inject arbitrary code to the stub line of gemspec, which is eval -ed by code in ensure_loadable_spec during the preinstall check.

Reporter

nyangawa of Chaitin Tech

CVE-2019-8325: Escape sequence injection vulnerability in errors

Description

An issue was discovered in RubyGems 2.6 and later through 3.0.2. Since Gem::CommandManager#run calls alert_error without escaping, escape sequence injection is possible. (There are many ways to cause an error.)

Reporter

ooooooo_q