CVE-2021-28965 json
REXML round-trip instability
published 2021-04-21 5 y ago modified 2026-09-08 2 mo ago also BIT-ruby-2021-28965 , BIT-ruby-min-2021-28965 , EUVD-2021-0797 , GHSA-8cr8-4vfw-mr7h , JLSEC-2026-1282
- cvss
- 7.5
- version 3.1, NVD
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 5.1%
- EPSS 5.1% chance of exploitation in 30 days, percentile 92%
- public exploits
- 0
- none known
Summary
The REXML gem before 3.2.5 in Ruby before 2.6.7, 2.7.x before 2.7.3, and 3.x before 3.0.1 does not properly address XML round-trip issues. An incorrect document can be produced after parsing and serializing.
Patch / fix
- rubygems rexml 3.2.5
- bitnami ruby 2.6.7, 2.7.3, 3.0.1
- bitnami ruby-min 2.6.7, 2.7.3, 3.0.1
- ruby-lang rexml 3.2.5
- ruby-lang ruby 2.6.7, 2.7.3, 3.0.1
- ruby2.7 Debian 11 2.7.3-1
debian advisories DEBIAN-CVE-2021-28965
- ruby2.3 Ubuntu 16.04 LTS 2.3.1-2~ubuntu16.04.16
- ruby2.5 Ubuntu 18.04 LTS 2.5.1-1ubuntu1.9
- ruby2.7 Ubuntu 20.04 LTS 2.7.0-5ubuntu1.4
ubuntu advisories UBUNTU-CVE-2021-28965
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- ruby4.0 hummingbird 1 4.0.0-33.3.hum1
- ruby4.0-libs hummingbird 1 4.0.0-33.3.hum1
- ruby4.0-bundled-gems hummingbird 1 4.0.0-33.3.hum1
- ruby4.0-default-gems hummingbird 1 4.0.0-33.3.hum1
- ruby3.3 hummingbird 1 3.3.10-23.1.hum1
- ruby3.3-libs hummingbird 1 3.3.10-23.1.hum1
- ruby3.3-bundled-gems hummingbird 1 3.3.10-23.1.hum1
- ruby3.3-default-gems hummingbird 1 3.3.10-23.1.hum1
red hat advisories RHSA-2026:8838RHSA-2026:7305RHSA-2026:7307RHSA-2022:0582RHSA-2022:0581RHSA-2021:2588
- ruby2.5 SLE Module for Basesystem 15 SP2, SLE Micro 5.0 2.5.9-4.17.1
suse advisories SUSE-SU-2021:1280-1
- ruby4.0 openSUSE Tumbleweed 4.0.0~preview2-1.1
- ruby3.4 openSUSE Tumbleweed 3.4.1-1.1
- ruby2.7 openSUSE Tumbleweed 2.7.3-3.2
- ruby3.0 openSUSE Tumbleweed 3.0.1-3.2
- ruby3.1 openSUSE Tumbleweed 3.1.0-1.1
- ruby3.2 openSUSE Tumbleweed 3.2.1-1.1
- ruby3.3 openSUSE Tumbleweed 3.3.0-1.2
- ruby2.5 openSUSE Leap 15.2 2.5.9-lp152.2.6.1
opensuse advisories openSUSE-SU-2025:15819-1openSUSE-SU-2025:14621-1openSUSE-SU-2024:11310-1openSUSE-SU-2024:11311-1openSUSE-SU-2024:11786-1openSUSE-SU-2024:12712-1
- rubygem-pg AlmaLinux 8 1.1.4-1.module_el8.5.0+250+ba22dbf7
- rubygem-pg AlmaLinux 8 1.1.4-1.module_el8.5.0+2623+08a8ba32
- rubygem-abrt AlmaLinux 8 0.3.0-4.module_el8.5.0+259+8cec6917
- rubygem-abrt AlmaLinux 8 0.3.0-4.module_el8.5.0+2623+08a8ba32
- rubygem-bson AlmaLinux 8 4.5.0-1.module_el8.5.0+2623+08a8ba32
- rubygem-bson AlmaLinux 8 4.5.0-1.module_el8.5.0+250+ba22dbf7
- rubygem-mongo AlmaLinux 8 2.8.0-1.module_el8.5.0+250+ba22dbf7
- rubygem-mongo AlmaLinux 8 2.8.0-1.module_el8.5.0+2623+08a8ba32
almalinux advisories ALSA-2021:2588ALSA-2021:2587ALSA-2021:2584
- ruby Rocky Linux 8 2.6.7-107.module+el8.4.0+593+8d7f9f0c
- rubygem-pg Rocky Linux 8 1.1.4-1.module+el8.5.0+738+032c9c02
- rubygem-pg Rocky Linux 8 1.1.4-1.module+el8.4.0+446+80b53620
- rubygem-pg Rocky Linux 8 1.1.4-1.module+el8.4.0+593+8d7f9f0c
- rubygem-abrt Rocky Linux 8 0.3.0-4.module+el8.5.0+738+032c9c02
- rubygem-abrt Rocky Linux 8 0.3.0-4.module+el8.3.0+167+5c390590
- rubygem-abrt Rocky Linux 8 0.3.0-4.module+el8.4.0+592+03ff458a
- rubygem-bson Rocky Linux 8 4.5.0-1.module+el8.4.0+593+8d7f9f0c
rocky linux advisories RLSA-2021:2588RLSA-2021:2587RLSA-2021:2584
- ruby Alpine 3.10 2.5.9-r0
- ruby Alpine 3.11 2.6.7-r0
- ruby Alpine 3.24, Alpine 3.23, Alpine 3.22 +10 more 2.7.3-r0
alpine advisories ALPINE-CVE-2021-28965
Alpine secdb © Alpine Linux, from https://secdb.alpinelinux.org via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- github.com/ruby/rexml@2fe62e2 commit
- github.com/ruby/rexml@3c137eb commit
- github.com/ruby/rexml@6a250d2 commit
- github.com/ruby/rexml@9b311e5 commit
- github.com/ruby/rexml@a659c63 commit
- github.com/ruby/rexml@f7bab89 commit
- github.com/ruby/rexml@f9d88e4 commit
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2021-28965 updated cvss 7.5
ruby: XML round-trip vulnerability in REXML
-
Red Hat Enterprise Linux 6 ruby, ruby-ri, ruby-irb, ruby-libs, ruby-rdoc, ruby-tcltk Red Hat Enterprise Linux 7 ruby, ruby-irb, rubygems, ruby-libs, ruby-tcltk, rubygem-json, +6 moreaffected: no fix planned “Out of support scope”
-
Red Hat Hardened Images ruby Red Hat Software Collections rh-ruby30-ruby, rh-ruby30-rubygems, rh-ruby30-ruby-libs, rh-ruby30-rubygem-irb, rh-ruby30-rubygem-rbs, rh-ruby30-rubygem-rss, +12 moreaffected: no fix available
-
Red Hat Enterprise Linux AppStream (v. 8) ruby 2.5.9-107.module+el8.4.0+10822+fe4fffb1, ruby 2.6.7-107.module+el8.4.0+10830+bbd85cce, ruby 2.7.3-136.module+el8.4.0+10728+4c884998, rubygem-pg 1.0.0-2.module+el8.1.0+3656+f80bfa1d, rubygem-pg 1.1.4-1.module+el8.1.0+3653+beb38eb0, rubygem-pg 1.2.3-1.module+el8.3.0+7192+4e3a532a, +63 morefixed: vendor fix RHSA-2021:2587
-
Red Hat Enterprise Linux AppStream E4S (v. 8.1) ruby 2.6.9-107.module+el8.1.0+14088+04cf326e, rubygem-pg 1.1.4-1.module+el8.1.0+3653+beb38eb0, ruby-libs 2.6.9-107.module+el8.1.0+14088+04cf326e, rubygem-abrt 0.3.0-4.module+el8.1.0+3653+beb38eb0, rubygem-bson 4.5.0-1.module+el8.1.0+3653+beb38eb0, rubygem-mongo 2.8.0-1.module+el8.1.0+3653+beb38eb0, +17 morefixed: vendor fix RHSA-2022:0581
-
Red Hat Enterprise Linux AppStream EUS (v. 8.2) ruby 2.6.9-107.module+el8.2.0+14086+86d863af, rubygem-pg 1.1.4-1.module+el8.1.0+3653+beb38eb0, ruby-libs 2.6.9-107.module+el8.2.0+14086+86d863af, rubygem-abrt 0.3.0-4.module+el8.1.0+3653+beb38eb0, rubygem-bson 4.5.0-1.module+el8.1.0+3653+beb38eb0, rubygem-mongo 2.8.0-1.module+el8.1.0+3653+beb38eb0, +17 morefixed: vendor fix RHSA-2022:0582
-
Red Hat Hardened Images ruby3.4 3.4.8-31.1.hum1, ruby4.0 4.0.0-33.3.hum1, ruby3.3 3.3.10-23.1.hum1, ruby3.4-libs 3.4.8-31.1.hum1, ruby4.0-libs 4.0.0-33.3.hum1, ruby3.3-libs 3.3.10-23.1.hum1, +6 morefixed: vendor fix RHSA-2026:7305
-
Red Hat Software Collections for Red Hat Enterprise Linux Server (v. 7) rh-ruby25-ruby 2.5.9-9.el7, rh-ruby26-ruby 2.6.7-119.el7, rh-ruby27-ruby 2.7.3-129.el7, rh-ruby25-ruby-irb 2.5.9-9.el7, rh-ruby25-ruby-libs 2.5.9-9.el7, rh-ruby25-rubygems 2.7.6.3-9.el7, +48 more Red Hat Software Collections for Red Hat Enterprise Linux Server EUS (v. 7.6) rh-ruby25-ruby 2.5.9-9.el7, rh-ruby25-ruby-irb 2.5.9-9.el7, rh-ruby25-ruby-libs 2.5.9-9.el7, rh-ruby25-rubygems 2.7.6.3-9.el7, rh-ruby25-rubygem-json 2.1.0-9.el7, rh-ruby25-rubygem-psych 3.0.2-9.el7, +11 more Red Hat Software Collections for Red Hat Enterprise Linux Server EUS (v. 7.7) rh-ruby25-ruby 2.5.9-9.el7, rh-ruby26-ruby 2.6.7-119.el7, rh-ruby27-ruby 2.7.3-129.el7, rh-ruby25-ruby-irb 2.5.9-9.el7, rh-ruby25-ruby-libs 2.5.9-9.el7, rh-ruby25-rubygems 2.7.6.3-9.el7, +48 more Red Hat Software Collections for Red Hat Enterprise Linux Workstation (v. 7) rh-ruby25-ruby 2.5.9-9.el7, rh-ruby26-ruby 2.6.7-119.el7, rh-ruby27-ruby 2.7.3-129.el7, rh-ruby25-ruby-irb 2.5.9-9.el7, rh-ruby25-ruby-libs 2.5.9-9.el7, rh-ruby25-rubygems 2.7.6.3-9.el7, +48 morefixed: vendor fix RHSA-2021:2104
-
Red Hat CloudForms Management Engine 5 ruby, ruby-irb, rubygems, ruby-libs, rubygem-rake, rubygem-rdoc, +10 more Red Hat Enterprise Linux 9 ruby, rubygems, ruby-libs, rubygem-irb, rubygem-rbs, rubygem-rss, +13 more Red Hat Hardened Images rubygem3.3-rbs 3.4.0-23.1.hum1, rubygem3.3-rss 0.3.1-23.1.hum1, rubygem3.4-rbs 3.8.0-31.1.hum1, rubygem3.4-rss 0.3.1-31.1.hum1, rubygem4.0-rss 0.3.2-33.3.hum1, rubygem3.3-irb 1.13.1-23.1.hum1, +45 morenot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
5.06% chance of exploitation in the next 30 days, higher than 92% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| NVD | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
| NVD | 2.0 | 5.0 | AV:N/AC:L/Au:N/C:N/I:P/A:N |
| OSV | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| rubygems | rexml | <3.2.5 |
3.2.5 |
| bitnami | ruby | <2.6.7 >=2.7.0, <2.7.3 >=3.0.0, <3.0.1 |
2.6.7 2.7.3 3.0.1 |
| bitnami | ruby-min | <2.6.7 >=2.7.0, <2.7.3 >=3.0.0, <3.0.1 |
2.6.7 2.7.3 3.0.1 |
| julia | ruby_jll | all versions |
no fix listed |
Classification
References
-
github.com
/ruby/rexml/commit/2fe62e29094d95921d7e19abbd2e26b23d78dc5b
web
-
github.com
/ruby/rexml/commit/3c137eb119550874b2b3e27d12b733ca67033377
web
-
github.com
/ruby/rexml/commit/6a250d2cd1194c2be72becbdd9c3e770aa16e752
web
-
github.com
/ruby/rexml/commit/9b311e59ae05749e082eb6bbefa1cb620d1a786e
web
-
github.com
/ruby/rexml/commit/a659c63e37414506dfb0d4655e031bb7a2e73fc8
web
-
github.com
/ruby/rexml/commit/f7bab8937513b1403cea5aff874cbf32fd5e8551
web
-
github.com
/ruby/rexml/commit/f9d88e4948b4a43294c25dc0edb16815bd9d8618
web
-
lists.fedoraproject.org
/archives/list/package-announce%40lists.fedoraproject.org/message/WTVFTLFVCSUE5CXHINJEUCKSHU4SWDMT/
vendor-advisory, web
-
ruby-lang.org
/en/news/2021/04/05/xml-round-trip-vulnerability-in-rexml-cve-2021-28965/
vendor-advisory, advisory, web
-
security.netapp.com
/advisory/ntap-20210528-0003/
third-party-advisory, advisory, web
-
nvd.nist.gov
/vuln/detail/CVE-2021-28965
advisory, web
-
hackerone.com
/reports/1104077
web
-
github.com
/ruby/rexml
package
-
github.com
/rubysec/ruby-advisory-db/blob/master/gems/rexml/CVE-2021-28965.yml
web
-
lists.fedoraproject.org
/archives/list/package-announce@lists.fedoraproject.org/message/WTVFTLFVCSUE5CXHINJEUCKSHU4SWDMT
web
-
rubygems.org
/gems/rexml
web
-
security.netapp.com
/advisory/ntap-20210528-0003
web
-
ruby-lang.org
/en/news/2021/04/05/xml-round-trip-vulnerability-in-rexml-cve-2021-28965
web
Sources
- CVE List CVE-2021-28965
- GitHub Advisory GHSA-8cr8-4vfw-mr7h
- NVD CVE-2021-28965
- OSV BIT-ruby-2021-28965
- OSV BIT-ruby-min-2021-28965
- OSV JLSEC-2026-1282
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.