CVE Vulnerabilities

CVE-2021-45960

Incorrect Calculation

Published: Jan 01, 2022 | Modified: May 05, 2025
CVSS 3.x
8.8
HIGH
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS 2.x
9 HIGH
AV:N/AC:L/Au:S/C:C/I:C/A:C
RedHat/V2
RedHat/V3
8.8 MODERATE
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Ubuntu
LOW
root.io logo minimus.io logo echo.ai logo

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).

Weakness

The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.

Affected Software

NameVendorStart VersionEnd Version
LibexpatLibexpat_project*2.4.3 (excluding)
Red Hat Enterprise Linux 7RedHatexpat-0:2.1.0-14.el7_9*
Red Hat Enterprise Linux 8RedHatexpat-0:2.2.5-4.el8_5.3*
Red Hat Enterprise Linux 8.2 Advanced Update SupportRedHatexpat-0:2.2.10-1.el8_2*
Red Hat Enterprise Linux 8.4 Advanced Mission Critical Update SupportRedHatexpat-0:2.2.10-1.el8_4*
Red Hat Enterprise Linux 8.4 Extended Update Support Long-Life Add-OnRedHatexpat-0:2.2.10-1.el8_4*
Text-Only JBCSRedHatexpat*
Apache2Ubuntutrusty*
Apr-utilUbuntutrusty*
AyttmUbuntutrusty*
AyttmUbuntuxenial*
CableswigUbuntutrusty*
CableswigUbuntuxenial*
CadaverUbuntubionic*
CadaverUbuntufocal*
CadaverUbuntuhirsute*
CadaverUbuntuimpish*
CadaverUbuntukinetic*
CadaverUbuntulunar*
CadaverUbuntumantic*
CadaverUbuntuoracular*
CadaverUbuntuplucky*
CadaverUbuntutrusty*
CadaverUbuntuxenial*
CmakeUbuntutrusty*
Coin3Ubuntubionic*
Coin3Ubuntutrusty*
Coin3Ubuntutrusty/esm*
Coin3Ubuntuxenial*
ExpatUbuntubionic*
ExpatUbuntudevel*
ExpatUbuntuesm-infra-legacy/trusty*
ExpatUbuntuesm-infra/bionic*
ExpatUbuntuesm-infra/focal*
ExpatUbuntuesm-infra/xenial*
ExpatUbuntufocal*
ExpatUbuntuhirsute*
ExpatUbuntuimpish*
ExpatUbuntujammy*
ExpatUbuntukinetic*
ExpatUbuntulunar*
ExpatUbuntumantic*
ExpatUbuntunoble*
ExpatUbuntuoracular*
ExpatUbuntuplucky*
ExpatUbuntuquesting*
ExpatUbuntutrusty*
ExpatUbuntutrusty/esm*
ExpatUbuntuxenial*
FirefoxUbuntubionic*
FirefoxUbuntudevel*
FirefoxUbuntufocal*
FirefoxUbuntuimpish*
FirefoxUbuntujammy*
FirefoxUbuntukinetic*
FirefoxUbuntulunar*
FirefoxUbuntumantic*
FirefoxUbuntunoble*
FirefoxUbuntuoracular*
FirefoxUbuntuplucky*
FirefoxUbuntuquesting*
FirefoxUbuntutrusty*
FirefoxUbuntuupstream*
FirefoxUbuntuxenial*
GdcmUbuntutrusty*
GhostscriptUbuntutrusty*
InsighttoolkitUbuntutrusty*
InsighttoolkitUbuntuxenial*
Insighttoolkit4Ubuntuhirsute*
Insighttoolkit4Ubuntuimpish*
Insighttoolkit4Ubuntutrusty*
Insighttoolkit4Ubuntuxenial*
LibxmltokUbuntuhirsute*
LibxmltokUbuntutrusty*
LibxmltokUbuntuxenial*
MatanzaUbuntubionic*
MatanzaUbuntudevel*
MatanzaUbuntuesm-apps/bionic*
MatanzaUbuntuesm-apps/focal*
MatanzaUbuntuesm-apps/jammy*
MatanzaUbuntuesm-apps/noble*
MatanzaUbuntuesm-apps/xenial*
MatanzaUbuntufocal*
MatanzaUbuntuhirsute*
MatanzaUbuntuimpish*
MatanzaUbuntujammy*
MatanzaUbuntukinetic*
MatanzaUbuntulunar*
MatanzaUbuntumantic*
MatanzaUbuntunoble*
MatanzaUbuntuoracular*
MatanzaUbuntuplucky*
MatanzaUbuntuquesting*
MatanzaUbuntutrusty*
MatanzaUbuntuxenial*
SmartUbuntutrusty*
Swish-eUbuntubionic*
Swish-eUbuntufocal*
Swish-eUbuntuhirsute*
Swish-eUbuntuimpish*
Swish-eUbuntukinetic*
Swish-eUbuntulunar*
Swish-eUbuntumantic*
Swish-eUbuntuoracular*
Swish-eUbuntuplucky*
Swish-eUbuntutrusty*
Swish-eUbuntuxenial*
TdomUbuntubionic*
TdomUbuntufocal*
TdomUbuntuhirsute*
TdomUbuntuimpish*
TdomUbuntukinetic*
TdomUbuntulunar*
TdomUbuntumantic*
TdomUbuntuoracular*
TdomUbuntuplucky*
TdomUbuntutrusty*
TdomUbuntuxenial*
Texlive-binUbuntutrusty*
ThunderbirdUbuntubionic*
ThunderbirdUbuntuhirsute*
ThunderbirdUbuntuimpish*
ThunderbirdUbuntukinetic*
ThunderbirdUbuntutrusty*
ThunderbirdUbuntuxenial*
Vnc4Ubuntubionic*
Vnc4Ubuntutrusty*
Vnc4Ubuntutrusty/esm*
Vnc4Ubuntuxenial*
VtkUbuntutrusty*
VtkUbuntutrusty/esm*
VtkUbuntuxenial*
Wbxml2Ubuntubionic*
Wbxml2Ubuntufocal*
Wbxml2Ubuntuhirsute*
Wbxml2Ubuntuimpish*
Wbxml2Ubuntukinetic*
Wbxml2Ubuntulunar*
Wbxml2Ubuntumantic*
Wbxml2Ubuntuoracular*
Wbxml2Ubuntuplucky*
Wbxml2Ubuntutrusty*
Wbxml2Ubuntuxenial*
Xmlrpc-cUbuntubionic*
Xmlrpc-cUbuntufocal*
Xmlrpc-cUbuntuhirsute*
Xmlrpc-cUbuntuimpish*
Xmlrpc-cUbuntukinetic*
Xmlrpc-cUbuntulunar*
Xmlrpc-cUbuntumantic*
Xmlrpc-cUbuntuoracular*
Xmlrpc-cUbuntuplucky*
Xmlrpc-cUbuntutrusty*
Xmlrpc-cUbuntutrusty/esm*
Xmlrpc-cUbuntuxenial*

Potential Mitigations

  • Use languages, libraries, or frameworks that make it easier to handle numbers without unexpected consequences.
  • Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++).
  • Use languages, libraries, or frameworks that make it easier to handle numbers without unexpected consequences.
  • Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++).

References