GitHub Advisoryadvisory · RubyGems
GHSA-cxf7-qrc5-9446 Remote shell execution vulnerability in image_processing
CRITICAL
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
References
- https://github.com/janko/image_processing/security/advisories/GHSA-cxf7-qrc5-9446 web
- https://nvd.nist.gov/vuln/detail/CVE-2022-24720 advisory
- https://github.com/janko/image_processing/commit/038e4574e8f4f4b636a62394e09983c71980dada web
- https://github.com/janko/image_processing package
- https://github.com/rubysec/ruby-advisory-db/blob/master/gems/image_processing/CVE-2022-24720.yml web
- https://www.debian.org/security/2022/dsa-5310 web