CVE Vulnerabilities

CVE-2015-1283

Integer Overflow or Wraparound

Published: Jul 23, 2015 | Modified: Nov 07, 2023
CVSS 3.x
N/A
Source:
NVD
CVSS 2.x
6.8 MEDIUM
AV:N/AC:M/Au:N/C:P/I:P/A:P
RedHat/V2
6.8 IMPORTANT
AV:N/AC:M/Au:N/C:P/I:P/A:P
RedHat/V3
Ubuntu
MEDIUM

Multiple integer overflows in the XML_GetBuffer function in Expat through 2.1.0, as used in Google Chrome before 44.0.2403.89 and other products, allow remote attackers to cause a denial of service (heap-based buffer overflow) or possibly have unspecified other impact via crafted XML data, a related issue to CVE-2015-2716.

Weakness

The product performs a calculation that can produce an integer overflow or wraparound, when the logic assumes that the resulting value will always be larger than the original value. This can introduce other weaknesses when the calculation is used for resource management or execution control.

Affected Software

Name Vendor Start Version End Version
Chrome Google * 43.0.2357.134 (including)
Audacity Ubuntu kinetic *
Audacity Ubuntu lunar *
Audacity Ubuntu mantic *
Audacity Ubuntu vivid *
Ayttm Ubuntu esm-apps/xenial *
Ayttm Ubuntu precise *
Ayttm Ubuntu trusty *
Ayttm Ubuntu upstream *
Ayttm Ubuntu utopic *
Ayttm Ubuntu vivid *
Ayttm Ubuntu wily *
Ayttm Ubuntu xenial *
Ayttm Ubuntu yakkety *
Cableswig Ubuntu esm-apps/xenial *
Cableswig Ubuntu precise *
Cableswig Ubuntu trusty *
Cableswig Ubuntu upstream *
Cableswig Ubuntu utopic *
Cableswig Ubuntu vivid *
Cableswig Ubuntu wily *
Cableswig Ubuntu xenial *
Cadaver Ubuntu artful *
Cadaver Ubuntu bionic *
Cadaver Ubuntu cosmic *
Cadaver Ubuntu devel *
Cadaver Ubuntu disco *
Cadaver Ubuntu eoan *
Cadaver Ubuntu esm-apps/bionic *
Cadaver Ubuntu esm-apps/focal *
Cadaver Ubuntu esm-apps/jammy *
Cadaver Ubuntu esm-apps/noble *
Cadaver Ubuntu esm-apps/xenial *
Cadaver Ubuntu focal *
Cadaver Ubuntu groovy *
Cadaver Ubuntu hirsute *
Cadaver Ubuntu impish *
Cadaver Ubuntu jammy *
Cadaver Ubuntu kinetic *
Cadaver Ubuntu lunar *
Cadaver Ubuntu mantic *
Cadaver Ubuntu noble *
Cadaver Ubuntu oracular *
Cadaver Ubuntu precise *
Cadaver Ubuntu trusty *
Cadaver Ubuntu upstream *
Cadaver Ubuntu utopic *
Cadaver Ubuntu vivid *
Cadaver Ubuntu wily *
Cadaver Ubuntu xenial *
Cadaver Ubuntu yakkety *
Cadaver Ubuntu zesty *
Chromium-browser Ubuntu artful *
Chromium-browser Ubuntu bionic *
Chromium-browser Ubuntu cosmic *
Chromium-browser Ubuntu devel *
Chromium-browser Ubuntu disco *
Chromium-browser Ubuntu eoan *
Chromium-browser Ubuntu focal *
Chromium-browser Ubuntu groovy *
Chromium-browser Ubuntu hirsute *
Chromium-browser Ubuntu impish *
Chromium-browser Ubuntu jammy *
Chromium-browser Ubuntu kinetic *
Chromium-browser Ubuntu lunar *
Chromium-browser Ubuntu mantic *
Chromium-browser Ubuntu noble *
Chromium-browser Ubuntu oracular *
Chromium-browser Ubuntu precise *
Chromium-browser Ubuntu trusty *
Chromium-browser Ubuntu upstream *
Chromium-browser Ubuntu utopic *
Chromium-browser Ubuntu vivid *
Chromium-browser Ubuntu wily *
Chromium-browser Ubuntu xenial *
Chromium-browser Ubuntu yakkety *
Chromium-browser Ubuntu zesty *
Coin3 Ubuntu artful *
Coin3 Ubuntu bionic *
Coin3 Ubuntu cosmic *
Coin3 Ubuntu devel *
Coin3 Ubuntu disco *
Coin3 Ubuntu eoan *
Coin3 Ubuntu esm-apps/bionic *
Coin3 Ubuntu esm-apps/focal *
Coin3 Ubuntu esm-apps/jammy *
Coin3 Ubuntu esm-apps/noble *
Coin3 Ubuntu esm-apps/xenial *
Coin3 Ubuntu esm-infra-legacy/trusty *
Coin3 Ubuntu focal *
Coin3 Ubuntu groovy *
Coin3 Ubuntu hirsute *
Coin3 Ubuntu impish *
Coin3 Ubuntu jammy *
Coin3 Ubuntu kinetic *
Coin3 Ubuntu lunar *
Coin3 Ubuntu mantic *
Coin3 Ubuntu noble *
Coin3 Ubuntu oracular *
Coin3 Ubuntu precise *
Coin3 Ubuntu trusty *
Coin3 Ubuntu trusty/esm *
Coin3 Ubuntu upstream *
Coin3 Ubuntu utopic *
Coin3 Ubuntu vivid *
Coin3 Ubuntu wily *
Coin3 Ubuntu xenial *
Coin3 Ubuntu yakkety *
Coin3 Ubuntu zesty *
Expat Ubuntu precise *
Expat Ubuntu trusty *
Expat Ubuntu utopic *
Expat Ubuntu vivid *
Expat Ubuntu vivid/stable-phone-overlay *
Expat Ubuntu vivid/ubuntu-core *
Gdcm Ubuntu vivid *
Insighttoolkit Ubuntu esm-apps/xenial *
Insighttoolkit Ubuntu precise *
Insighttoolkit Ubuntu trusty *
Insighttoolkit Ubuntu upstream *
Insighttoolkit Ubuntu utopic *
Insighttoolkit Ubuntu vivid *
Insighttoolkit Ubuntu wily *
Insighttoolkit Ubuntu xenial *
Kompozer Ubuntu precise *
Libparagui1.1 Ubuntu precise *
Libxmltok Ubuntu bionic *
Libxmltok Ubuntu devel *
Libxmltok Ubuntu esm-apps/bionic *
Libxmltok Ubuntu esm-apps/focal *
Libxmltok Ubuntu esm-apps/jammy *
Libxmltok Ubuntu esm-apps/noble *
Libxmltok Ubuntu esm-apps/xenial *
Libxmltok Ubuntu focal *
Libxmltok Ubuntu hirsute *
Libxmltok Ubuntu impish *
Libxmltok Ubuntu jammy *
Libxmltok Ubuntu kinetic *
Libxmltok Ubuntu lunar *
Libxmltok Ubuntu mantic *
Libxmltok Ubuntu noble *
Libxmltok Ubuntu oracular *
Libxmltok Ubuntu trusty *
Libxmltok Ubuntu xenial *
Matanza Ubuntu artful *
Matanza Ubuntu bionic *
Matanza Ubuntu cosmic *
Matanza Ubuntu devel *
Matanza Ubuntu disco *
Matanza Ubuntu eoan *
Matanza Ubuntu esm-apps/bionic *
Matanza Ubuntu esm-apps/focal *
Matanza Ubuntu esm-apps/jammy *
Matanza Ubuntu esm-apps/noble *
Matanza Ubuntu esm-apps/xenial *
Matanza Ubuntu focal *
Matanza Ubuntu groovy *
Matanza Ubuntu hirsute *
Matanza Ubuntu impish *
Matanza Ubuntu jammy *
Matanza Ubuntu kinetic *
Matanza Ubuntu lunar *
Matanza Ubuntu mantic *
Matanza Ubuntu noble *
Matanza Ubuntu oracular *
Matanza Ubuntu precise *
Matanza Ubuntu trusty *
Matanza Ubuntu upstream *
Matanza Ubuntu utopic *
Matanza Ubuntu vivid *
Matanza Ubuntu wily *
Matanza Ubuntu xenial *
Matanza Ubuntu yakkety *
Matanza Ubuntu zesty *
Oxide-qt Ubuntu artful *
Oxide-qt Ubuntu trusty *
Oxide-qt Ubuntu upstream *
Oxide-qt Ubuntu utopic *
Oxide-qt Ubuntu vivid *
Oxide-qt Ubuntu vivid/stable-phone-overlay *
Oxide-qt Ubuntu wily *
Oxide-qt Ubuntu xenial *
Oxide-qt Ubuntu yakkety *
Oxide-qt Ubuntu zesty *
Poco Ubuntu vivid *
Simgear Ubuntu precise *
Simgear Ubuntu vivid *
Sitecopy Ubuntu artful *
Sitecopy Ubuntu precise *
Sitecopy Ubuntu upstream *
Sitecopy Ubuntu utopic *
Sitecopy Ubuntu vivid *
Sitecopy Ubuntu wily *
Sitecopy Ubuntu yakkety *
Sitecopy Ubuntu zesty *
Swish-e Ubuntu artful *
Swish-e Ubuntu bionic *
Swish-e Ubuntu cosmic *
Swish-e Ubuntu devel *
Swish-e Ubuntu disco *
Swish-e Ubuntu eoan *
Swish-e Ubuntu esm-apps/bionic *
Swish-e Ubuntu esm-apps/focal *
Swish-e Ubuntu esm-apps/jammy *
Swish-e Ubuntu esm-apps/noble *
Swish-e Ubuntu esm-apps/xenial *
Swish-e Ubuntu focal *
Swish-e Ubuntu groovy *
Swish-e Ubuntu hirsute *
Swish-e Ubuntu impish *
Swish-e Ubuntu jammy *
Swish-e Ubuntu kinetic *
Swish-e Ubuntu lunar *
Swish-e Ubuntu mantic *
Swish-e Ubuntu noble *
Swish-e Ubuntu oracular *
Swish-e Ubuntu precise *
Swish-e Ubuntu trusty *
Swish-e Ubuntu upstream *
Swish-e Ubuntu utopic *
Swish-e Ubuntu vivid *
Swish-e Ubuntu wily *
Swish-e Ubuntu xenial *
Swish-e Ubuntu yakkety *
Swish-e Ubuntu zesty *
Tdom Ubuntu artful *
Tdom Ubuntu precise *
Tdom Ubuntu utopic *
Tdom Ubuntu vivid *
Tdom Ubuntu wily *
Tdom Ubuntu yakkety *
Tdom Ubuntu zesty *
Tla Ubuntu artful *
Tla Ubuntu precise *
Tla Ubuntu utopic *
Tla Ubuntu vivid *
Tla Ubuntu wily *
Tla Ubuntu yakkety *
Tla Ubuntu zesty *
Vnc4 Ubuntu artful *
Vnc4 Ubuntu bionic *
Vnc4 Ubuntu cosmic *
Vnc4 Ubuntu esm-apps/bionic *
Vnc4 Ubuntu esm-apps/xenial *
Vnc4 Ubuntu precise *
Vnc4 Ubuntu trusty *
Vnc4 Ubuntu trusty/esm *
Vnc4 Ubuntu utopic *
Vnc4 Ubuntu vivid *
Vnc4 Ubuntu wily *
Vnc4 Ubuntu xenial *
Vnc4 Ubuntu yakkety *
Vnc4 Ubuntu zesty *
Vtk Ubuntu precise *
Vtk Ubuntu utopic *
Vtk Ubuntu vivid *
Vtk Ubuntu wily *
Wbxml2 Ubuntu artful *
Wbxml2 Ubuntu precise *
Wbxml2 Ubuntu upstream *
Wbxml2 Ubuntu utopic *
Wbxml2 Ubuntu vivid *
Wbxml2 Ubuntu wily *
Wbxml2 Ubuntu yakkety *
Wbxml2 Ubuntu zesty *
Wxwidgets2.6 Ubuntu precise *
Wxwidgets2.8 Ubuntu precise *
Wxwidgets2.8 Ubuntu utopic *
Wxwidgets2.8 Ubuntu vivid *
Wxwidgets2.8 Ubuntu wily *
Xmlrpc-c Ubuntu artful *
Xmlrpc-c Ubuntu bionic *
Xmlrpc-c Ubuntu cosmic *
Xmlrpc-c Ubuntu devel *
Xmlrpc-c Ubuntu disco *
Xmlrpc-c Ubuntu eoan *
Xmlrpc-c Ubuntu esm-apps/bionic *
Xmlrpc-c Ubuntu esm-apps/focal *
Xmlrpc-c Ubuntu esm-apps/jammy *
Xmlrpc-c Ubuntu esm-apps/noble *
Xmlrpc-c Ubuntu esm-apps/xenial *
Xmlrpc-c Ubuntu esm-infra-legacy/trusty *
Xmlrpc-c Ubuntu focal *
Xmlrpc-c Ubuntu groovy *
Xmlrpc-c Ubuntu hirsute *
Xmlrpc-c Ubuntu impish *
Xmlrpc-c Ubuntu jammy *
Xmlrpc-c Ubuntu kinetic *
Xmlrpc-c Ubuntu lunar *
Xmlrpc-c Ubuntu mantic *
Xmlrpc-c Ubuntu noble *
Xmlrpc-c Ubuntu oracular *
Xmlrpc-c Ubuntu precise *
Xmlrpc-c Ubuntu trusty *
Xmlrpc-c Ubuntu trusty/esm *
Xmlrpc-c Ubuntu utopic *
Xmlrpc-c Ubuntu vivid *
Xmlrpc-c Ubuntu wily *
Xmlrpc-c Ubuntu xenial *
Xmlrpc-c Ubuntu yakkety *
Xmlrpc-c Ubuntu zesty *
Xotcl Ubuntu artful *
Xotcl Ubuntu precise *
Xotcl Ubuntu utopic *
Xotcl Ubuntu vivid *
Xotcl Ubuntu wily *
Xotcl Ubuntu yakkety *
Xotcl Ubuntu zesty *
Red Hat Enterprise Linux 6 Supplementary RedHat chromium-browser-0:44.0.2403.89-1.el6 *

Potential Mitigations

  • Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • If possible, choose a language or compiler that performs automatic bounds checking.
  • Use a vetted library or framework that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid.
  • Use 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++). [REF-106]
  • Perform input validation on any numeric input by ensuring that it is within the expected range. Enforce that the input meets both the minimum and maximum requirements for the expected range.
  • Use unsigned integers where possible. This makes it easier to perform validation for integer overflows. When signed integers are required, ensure that the range check includes minimum values as well as maximum values.
  • Understand the programming language’s underlying representation and how it interacts with numeric calculation (CWE-681). Pay close attention to byte size discrepancies, precision, signed/unsigned distinctions, truncation, conversion and casting between types, “not-a-number” calculations, and how the language handles numbers that are too large or too small for its underlying representation. [REF-7]
  • Also be careful to account for 32-bit, 64-bit, and other potential differences that may affect the numeric representation.

References