GHSA-cxf7-qrc5-9446CriticalCVSS 9.8

Remote shell execution vulnerability in image_processing

Published
March 1, 2022
Last Modified
May 4, 2023

🔗 CVE IDs covered (1)

📋 Description

Impact

When using the #apply method from image_processing to apply a series of operations that are coming from unsanitized user input, this allows the attacker to execute shell commands:

ImageProcessing::Vips.apply({ system: "echo EXECUTED" })
#>> EXECUTED

This method is called internally by Active Storage variants, so Active Storage is vulnerable as well.

Patches

The vulnerability has been fixed in version 1.12.2 of image_processing.

Workarounds

If you're processing based on user input, it's highly recommended that you always sanitize the user input, by allowing only a constrained set of operations. For example:

operations = params[:operations]
  .map { |operation| [operation[:name], *operation[:value]] }
  .select { |name, *| name.to_s.include? %w[resize_to_limit strip ...] } # sanitization

ImageProcessing::Vips.apply(operations)

🎯 Affected products1

  • rubygems/image_processing:< 1.12.2

🔗 References (6)