CVE-2021-45960

HIGHNVD 8.88.8—
EchelonGraph scoreMEDIUM confidence

Score 8.8 from GitHub Security Advisory (severity: HIGH) published 2022-02-10. NVD baseline CVSS 8.8; sources differ by 0.0.

Triggered by: GitHub Security Advisory CVSS
Sources: epss, ghsa, nvd
Elevated
8.8EG
EchelonGraph verdictPlan a fixSerious severity, but no confirmed exploitation yet.
  • High severity, but no confirmed exploitation yet
CISA-KEV: Not listedEPSS PROB: 4.2%CVSS: 8.8Exploit: Elevated riskExposed services: Not assessed

A fix is available — apply it.

In Expat (aka libexpat) before 2.4.3, a left shift by 29 (or more) places in the storeAtts function in xmlparse.c can lead to realloc misbehavior (e.g., allocating too few bytes, or only freeing memory).

CVSS v3
8.8
EG Score
8.8HIGHmedium confidence
EG Risk
56
EG Risk 56/100CISA SSVC

EG Risk is EchelonGraph's 0–100 priority score: it fuses intrinsic severity with real-world exploitation and automatability so you can rank equal-severity CVEs and fix the most dangerous first. Higher = act sooner. Distinct from the 0–10 EG Score (severity).

How it’s computed
Severity88% × 45%
Exploitation40% × 40%
Automatability0% × 15%
CISA SSVC: Track at low, Track* at medium and Attend at high mission impact.
Action: A fix is available. Apply it within your standard update timelines at low or medium mission impact and sooner than that at high.
EPSS PROB
4.2%
EPSS %ILE
90th
KEV
Not listed

CISA SSVCTrack at low, Track* at medium and Attend at high mission impact.

A fix is available. Apply it within your standard update timelines at low or medium mission impact and sooner than that at high.

Exploitation public PoC (CISA Vulnrichment) · Automatable no (CISA Vulnrichment) · Technical impact total (CISA Vulnrichment). Mission impact is CISA's Mission & Well-being decision point, and only you can judge it: high means the affected system is essential to your organisation's mission, or its compromise could cause irreversible harm to people. CISA's decision table

Published

January 1, 2022

Last Modified

May 5, 2025

Advisory Details (9)

Auto-updated Jul 30, 2026
Patch available. Sources: github_pr.
generic

oss-security - Expat 2.4.3 released, includes 8 security fixes

http://www.openwall.com/lists/oss-security/2022/01/17/3
generic

[R1] Nessus Versions 8.15.3 and 10.1.1 Fix Multiple Third-Party Vulnerabilities - Security Advisory | Tenable®

https://www.tenable.com/security/tns-2022-05
generic

[SECURITY] [DSA 5073-1] expat security update

https://www.debian.org/security/2022/dsa-5073
generic

Expat: Multiple Vulnerabilities (GLSA 202209-24) — Gentoo security

https://security.gentoo.org/glsa/202209-24
github_pr

[CVE-2021-45960] lib: Detect and prevent troublesome left shifts in function storeAtts (fixes #531)

Fix merged in libexpat/libexpat PR #534 on 2022-01-07 — awaiting tagged release

https://github.com/libexpat/libexpat/pull/534
generic

[CVE-2021-45960] A large number of prefixed XML attributes on a single tag can crash libexpat (troublesome left shifts by >=29 bits in function storeAtts) · Issue #531 · libexpat/libexpat · GitHub

https://github.com/libexpat/libexpat/issues/531
generic

1217609 - Multiple invalid left shifts in libexpat

https://bugzilla.mozilla.org/show_bug.cgi?id=1217609

Patch Availability(6)

Vendor / EcosystemFix (by version range) / PatchReleasedSource
ubuntulib64expat1 (2.1.0-7ubuntu0.16.04.5+esm2) @ xenial2026-05-26ubuntu
redhatexpat-0:2.2.10-1.el8_22025-12-09redhat
redhatexpat-0:2.2.10-1.el8_42025-12-04redhat
redhatexpat2022-10-26redhat
redhatexpat-0:2.1.0-14.el7_92022-03-28redhat
redhatexpat-0:2.2.5-4.el8_5.32022-03-16redhat

Patches are aggregated from vendor advisories (Red Hat, Microsoft, Cisco, GitHub) and package ecosystems (OSV, GHSA). Multiple rows for the same upstream release have been deduplicated.

Affected Packages

(21 across 19 ecosystems)
Debian:11(2)
PackageVulnerable rangeFix by version rangeDependents
expat2.2.10-2
  • every version up to 2.2.10-2+deb11u1: fixed in 2.2.10-2+deb11u1
—
libxmltok1.2-4, 1.2-4.1, 1.2-4.1~exp1, 1.2-4.2
  • every version on: no fix on record
—
Debian:12(2)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-1: fixed in 2.4.3-1
—
libxmltok1.2-4, 1.2-4.1, 1.2-4.1~exp1, 1.2-4.2
  • every version on: no fix on record
—
Alpine:v3.12(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.2.10-r0: fixed in 2.2.10-r0
—
Alpine:v3.13(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.2.10-r2: fixed in 2.2.10-r2
—
Alpine:v3.14(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.15(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.16(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.17(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.18(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.19(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.20(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.21(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.22(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.23(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Alpine:v3.24(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-r0: fixed in 2.4.3-r0
—
Debian:10(1)
PackageVulnerable rangeFix by version rangeDependents
expat2.2.6-2, 2.2.6-2+deb10u1
  • every version up to 2.2.6-2+deb10u2: fixed in 2.2.6-2+deb10u2
—
Debian:13(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-1: fixed in 2.4.3-1
—
Debian:14(1)
PackageVulnerable rangeFix by version rangeDependents
expat—
  • every version up to 2.4.3-1: fixed in 2.4.3-1
—
Debian:9(1)
PackageVulnerable rangeFix by version rangeDependents
expat2.2.0-2, 2.2.0-2+deb9u1, 2.2.0-2+deb9u2, 2.2.0-2+deb9u3
  • every version up to 2.2.0-2+deb9u4: fixed in 2.2.0-2+deb9u4
—

Weakness Classification(2)

MITRE Common Weakness Enumeration — the root-cause categories this CVE belongs to.

Additional Vendor Advisories

(1)

Vendors that published advisories for this CVE beyond the curated set above. Broader coverage but minimal per-row detail — click through for the original advisory.

Data Freshness Timeline

(refreshed 7× in last 7d / 29× in last 30d)

Each row is a source pipeline that fetched or updated this CVE on that date, with what changed. For example, "NVD update" means NVD published or revised its analysis for this CVE; "MITRE cvelistV5" means we ingested or refreshed it from the CNA feed. Most recent first.

Showing the most recent 100 of 180 total refreshes for this CVE.

  1. 2026-10-09 20:04 UTCEPSS rescore
  2. 2026-10-08 16:40 UTCEPSS rescore
  3. 2026-10-07 23:45 UTCEPSS rescore
  4. 2026-10-06 15:14 UTCEPSS rescore
  5. 2026-10-05 17:40 UTCEPSS rescore
  6. 2026-10-03 14:22 UTCEPSS rescore
  7. 2026-10-03 14:22 UTCEPSS rescore
  8. 2026-10-02 16:23 UTCEPSS rescore
  9. 2026-09-30 15:44 UTCEG score recompute
  10. 2026-09-30 15:00 UTCEPSS rescore
  11. 2026-09-29 15:15 UTCEPSS rescore
  12. 2026-09-28 13:47 UTCEPSS rescore
  13. 2026-09-26 15:54 UTCEPSS rescore
  14. 2026-09-26 00:21 UTCEPSS rescore
  15. 2026-09-25 09:06 UTCOSV refresh
  16. 2026-09-24 14:00 UTCEPSS rescore
  17. 2026-09-24 14:00 UTCEPSS rescore
  18. 2026-09-23 13:45 UTCEPSS rescore
  19. 2026-09-22 14:44 UTCEPSS rescore
  20. 2026-09-21 20:28 UTCEPSS rescore
  21. 2026-09-19 15:38 UTCEPSS rescore
  22. 2026-09-18 19:24 UTCEPSS rescore
  23. 2026-09-17 19:23 UTCEPSS rescore
  24. 2026-09-16 14:05 UTCEPSS rescore
  25. 2026-09-16 14:05 UTCEPSS rescore
Show 75 more
  1. 2026-09-15 03:06 UTCEPSS rescore
  2. 2026-09-12 14:57 UTCEPSS rescore
  3. 2026-09-11 14:49 UTCEPSS rescore
  4. 2026-09-11 09:33 UTCEPSS rescore
  5. 2026-09-08 21:57 UTCEPSS rescore
  6. 2026-09-07 15:58 UTCEPSS rescore
  7. 2026-09-06 13:45 UTCEPSS rescore
  8. 2026-09-06 00:55 UTCOSV refresh
  9. 2026-09-05 15:25 UTCEPSS rescore
  10. 2026-09-04 13:57 UTCEPSS rescore
  11. 2026-09-04 05:03 UTCEPSS rescore
  12. 2026-09-02 14:09 UTCEPSS rescore
  13. 2026-09-01 13:51 UTCEPSS rescore
  14. 2026-08-30 19:14 UTCEPSS rescore
  15. 2026-08-30 01:19 UTCEPSS rescore
  16. 2026-08-28 21:38 UTCEPSS rescore
  17. 2026-08-27 14:22 UTCEPSS rescore
  18. 2026-08-26 14:43 UTCEPSS rescore
  19. 2026-08-25 13:46 UTCEPSS rescore
  20. 2026-08-24 14:13 UTCEPSS rescore
  21. 2026-08-21 23:46 UTCEPSS rescore
  22. 2026-08-20 22:52 UTCEPSS rescore
  23. 2026-08-19 17:01 UTCEPSS rescore
  24. 2026-08-19 11:32 UTCOSV refresh
  25. 2026-08-18 13:45 UTCEPSS rescore
  26. 2026-08-17 13:44 UTCEPSS rescore
  27. 2026-08-16 14:53 UTCEPSS rescore
  28. 2026-08-16 02:11 UTCEPSS rescore
  29. 2026-08-15 01:27 UTCEPSS rescore
  30. 2026-08-13 21:57 UTCEPSS rescore
  31. 2026-08-12 13:48 UTCEPSS rescore
  32. 2026-08-11 13:38 UTCEPSS rescore
  33. 2026-08-09 13:44 UTCEPSS rescore
  34. 2026-08-08 16:34 UTCEPSS rescore
  35. 2026-08-07 16:24 UTCEPSS rescore
  36. 2026-08-06 13:44 UTCEPSS rescore
  37. 2026-08-05 19:15 UTCEPSS rescore
  38. 2026-08-04 15:06 UTCEPSS rescore
  39. 2026-08-04 10:34 UTCEPSS rescore
  40. 2026-08-04 07:27 UTCOSV refresh
  41. 2026-08-03 10:33 UTCEPSS rescore
  42. 2026-08-02 02:24 UTCEPSS rescore
  43. 2026-08-01 04:13 UTCEPSS rescore
  44. 2026-07-30 16:25 UTCEPSS rescore
  45. 2026-07-30 01:28 UTCEPSS rescore
  46. 2026-07-28 15:33 UTCEPSS rescore
  47. 2026-07-26 14:52 UTCEPSS rescore
  48. 2026-07-25 14:15 UTCEPSS rescore
  49. 2026-07-24 14:15 UTCEPSS rescore
  50. 2026-07-24 14:15 UTCEPSS rescore
  51. 2026-07-23 14:16 UTCEPSS rescore
  52. 2026-07-23 02:05 UTCEG score recompute
  53. 2026-07-22 22:52 UTCEG score recompute
  54. 2026-07-22 14:06 UTCEPSS rescore
  55. 2026-07-21 15:22 UTCEPSS rescore
  56. 2026-07-21 15:22 UTCEPSS rescore
  57. 2026-07-20 17:05 UTCEPSS rescore
  58. 2026-07-19 14:29 UTCEPSS rescore
  59. 2026-07-19 02:27 UTCEPSS rescore
  60. 2026-07-19 02:27 UTCEPSS rescore
  61. 2026-07-18 10:02 UTCEPSS rescore
  62. 2026-07-18 04:59 UTCOSV refresh
  63. 2026-07-16 17:00 UTCEPSS rescore
  64. 2026-07-16 17:00 UTCEPSS rescore
  65. 2026-07-15 16:55 UTCEPSS rescore
  66. 2026-07-15 01:58 UTCEPSS rescore
  67. 2026-07-15 01:58 UTCEPSS rescore
  68. 2026-07-13 22:27 UTCEPSS rescore
  69. 2026-07-13 06:11 UTCEPSS rescore
  70. 2026-07-13 06:11 UTCEPSS rescore
  71. 2026-07-12 05:44 UTCEPSS rescore
  72. 2026-07-11 08:25 UTCEPSS rescore
  73. 2026-07-09 19:07 UTCEPSS rescore
  74. 2026-07-09 19:07 UTCEPSS rescore
  75. 2026-07-08 15:12 UTCEPSS rescore

Frequently asked(5)

What is CVE-2021-45960?
CVE-2021-45960 is a high vulnerability published on January 1, 2022. In Expat (aka libexpat) before 2.4.3, a left shift by 29 (or more) places in the storeAtts function in xmlparse.c can lead to realloc misbehavior (e.g., allocating too few bytes, or only freeing memory).
When was CVE-2021-45960 disclosed?
CVE-2021-45960 was first published on January 1, 2022, with the most recent update on May 5, 2025. EchelonGraph re-ingests CVE updates from NVD on a 2-hour cycle, so this page reflects the latest published state.
Is CVE-2021-45960 actively exploited?
CVE-2021-45960 is not currently on CISA's Known Exploited Vulnerabilities catalog. FIRST EPSS estimates a 4.2% probability of exploitation in the next 30 days (90th percentile of EPSS-scored CVEs).
What is the CVSS score of CVE-2021-45960?
CVE-2021-45960 has a CVSS v3 base score of 8.8 (NVD).
How do I remediate CVE-2021-45960?
A fix for CVE-2021-45960 is available: update to the fixed version the vendor names in its advisory. The vendor advisories EchelonGraph has for CVE-2021-45960 are linked in the Vendor Advisories panel on this page.

Dependency Blast Radius

See which npm, PyPI, Go, and Maven packages are affected by CVE-2021-45960

Explore →

Is Your Infrastructure Affected by CVE-2021-45960?

EchelonGraph automatically scans your cloud infrastructure and maps CVE exposure using blast radius analysis.