GitHub Advisoryadvisory · RubyGems

GHSA-cxf7-qrc5-9446 Remote shell execution vulnerability in image_processing

CRITICAL Published 2022-03-01 Modified 2022-03-10 Official page ↗
Aliases
CVE-2022-24720
Ecosystem
RubyGems
Packages
image_processing
Severity
Critical
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weaknesses
CWE-20, CWE-78
Reviewed
2022-03-01

Affected packages

• RubyGems image_processing: < 1.12.2 → fixed in 1.12.2

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: ```rb 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: ```rb 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) ```

Related

Alias · CVE (1)

  • CVE-2022-24720 image_processing is an image processing wrapper for libvips and ImageMagick/GraphicsMagick. vulnerability

Weakness · CWE (2)

  • CWE-20 Improper Input Validation weakness
  • CWE-78 Improper Neutralization of Special Elements used in an OS Command weakness

References