A security vulnerability has been discovered in RDoc, a popular documentation generating tool for the Ruby programming language. Specifically, RDoc versions 6.3.3 through 6.6.2 contain a flaw that allows for object injection and potential remote code execution. In this post, we will discuss the details of this vulnerability, the affected versions, and how to update your software to mitigate the risk.

Exploit Details

The vulnerability (CVE-2024-27281) exists within the way that RDoc parses .rdoc_options configuration files. When RDoc reads the contents of these files as YAML, there are no restrictions on which classes can be restored. This allows for potential object injection and remote code execution if an attacker is able to craft a malicious .rdoc_options file or cache.

To demonstrate this vulnerability, consider the following code snippet from a vulnerable version of RDoc:

require 'yaml'

def parse_rdoc_options
  options = nil
  if File.exist?('.rdoc_options')
    input = File.read('.rdoc_options')
    options = YAML.load(input)
  end
  options
end

options = parse_rdoc_options

In this code, the YAML.load() method is used to parse the contents of the .rdoc_options file without any class restrictions. This could enable an attacker to create a malicious .rdoc_options file that injects harmful objects through YAML deserialization.

To update your RDoc version, use the following commands

gem uninstall rdoc
gem install rdoc --version <fixed_rdoc_version_number>

Replace <fixed_rdoc_version_number> with the appropriate version number based on your Ruby version.

Original References

1. RDoc GitHub repository: https://github.com/ruby/rdoc
2. Vulnerability announcement on GitHub: https://github.com/ruby/rdoc/issues/864
3. CVE details: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2024-27281

Conclusion

To mitigate the risk posed by CVE-2024-27281, it is crucial to update your version of RDoc to one of the fixed versions mentioned above. Always be diligent in applying security updates to your software and keep an eye on vulnerability disclosures to maintain a secure environment.

Timeline

Published on: 05/14/2024 15:11:57 UTC
Last modified on: 08/20/2024 14:35:05 UTC