9.8crit

CVE-2019-5477

Nokogiri Command Injection Vulnerability

Also known as GHSA-cr5j-953j-xw5p

Published 7 y ago · modified 4 mo ago · JSON

CVSS
9.8
v3.1 · NVD
CISA KEV
No
not known exploited
EPSS
5.9%
percentile 93%
Public exploits
0
none known

Summary

A command injection vulnerability in Nokogiri v1.10.3 and earlier allows commands to be executed in a subprocess via Ruby's `Kernel.open` method. Processes are vulnerable only if the undocumented method `Nokogiri::CSS::Tokenizer#load_file` is being called with unsafe user input as the filename. This vulnerability appears in code generated by the Rexical gem versions v1.0.6 and earlier. Rexical is used by Nokogiri to generate lexical scanner code for parsing CSS queries. The underlying vulnerability was addressed in Rexical v1.0.7 and Nokogiri upgraded to this version of Rexical in Nokogiri v1.10.4.

Exploit prediction (EPSS)

5.90% probability of exploitation in the next 30 days, higher than 93% of all scored CVEs.

CVSS scores

Assigned byVersionScoreVector
NVD3.19.8CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
NVD2.07.5AV:N/AC:L/Au:N/C:P/I:P/A:P
GitHub3.19.8CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Affected packages

EcosystemPackageAffectedFixed in
rubygemsnokogiri
<1.10.4
1.10.4
rubygemsrexical
<1.0.7
1.0.7

Affected products

  • n/a Nokogiri (ruby gem)

Classification

Weakness
  • CWE-78 Improper Neutralization of Special Elements used in an OS Command

References

  • hackerone.com /reports/650835 · x_transferred
  • github.com /tenderlove/rexical/blob/master/CHANGELOG.rdoc · x_transferred
  • github.com /sparklemotion/nokogiri/issues/1915 · x_transferred
  • lists.debian.org /debian-lts-announce/2019/09/msg00027.html · mailing-list, x_transferred
  • usn.ubuntu.com /4175-1/ · vendor-advisory, x_transferred
  • security.gentoo.org /glsa/202006-05 · vendor-advisory, x_transferred
  • lists.debian.org /debian-lts-announce/2022/10/msg00018.html · mailing-list, x_transferred
  • lists.debian.org /debian-lts-announce/2022/10/msg00019.html · mailing-list, x_transferred
  • nvd.nist.gov /vuln/detail/CVE-2019-5477 · advisory
  • github.com /sparklemotion/nokogiri/commit/5d30128343573a9428c86efc758ba2c66e9f12dc · web
  • github.com /tenderlove/rexical/commit/a652474dbc66be350055db3e8f9b3a7b3fd75926 · web
  • github.com /rubysec/ruby-advisory-db/blob/master/gems/nokogiri/CVE-2019-5477.yml · web
  • github.com /rubysec/ruby-advisory-db/blob/master/gems/rexical/CVE-2019-5477.yml · web
  • github.com /sparklemotion/nokogiri · package
  • usn.ubuntu.com /4175-1 · web

Sources

vulnwire keeps one entry per vulnerability: the CVE id wins, then GHSA; records that alias each other are merged. Machine-readable: JSON.