IBM Support

Security Bulletin: IBM i is affected by multiple vulnerabilities in International Components for Unicode (ICU) option 39 [CVE-2017-14952 CVE-2011-4599 CVE-2017-17484].

Security Bulletin


Summary

International Components for Unicode (ICU) is a C and C++ library that provides Unicode services used for writing global applications in ILE programming languages. IBM i licensed program option 39 (International Components for Unicode) is currently built using ICU4C version 4.0. This version includes vulnerabilities that cannot be remediated with an IBM fix. The CVE CVSS Base scores do not factor in built-in ILE protections that greatly reduce the impact in this environment. This bulletin identifies the steps to take to address the vulnerabilities as described in the workarounds/mitigations section.

Vulnerability Details

CVEID:   CVE-2017-14952
DESCRIPTION:   Double free in i18n/zonemeta.cpp in International Components for Unicode (ICU) for C/C++ through 59.1 allows remote attackers to execute arbitrary code via a crafted string, aka a "redundant UVector entry clean up function call" issue.
CWE:   CWE-415: Double Free
CVSS Source:   IBM X-Force
CVSS Base score:   9.8
CVSS Vector:   (CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)

CVEID:   CVE-2011-4599
DESCRIPTION:   Stack-based buffer overflow in the _canonicalize function in common/uloc.c in International Components for Unicode (ICU) before 49.1 allows remote attackers to execute arbitrary code via a crafted locale ID that is not properly handled during variant canonicalization.
CWE:   CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer
CVSS Source:   IBM X-Force
CVSS Base score:   7.5
CVSS Vector:   (AV:N/AC:L/Au:N/C:P/I:P/A:P)

CVEID:   CVE-2017-17484
DESCRIPTION:   The ucnv_UTF8FromUTF8 function in ucnv_u8.cpp in International Components for Unicode (ICU) for C/C++ through 60.1 mishandles ucnv_convertEx calls for UTF-8 to UTF-8 conversion, which allows remote attackers to cause a denial of service (stack-based buffer overflow and application crash) or possibly have unspecified other impact via a crafted string, as demonstrated by ZNC.
CWE:   CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer
CVSS Source:   IBM X-Force
CVSS Base score:   7.3
CVSS Vector:   (CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L)

Affected Products and Versions

Affected Product(s)Version(s)
IBM i7.6
IBM i7.5
IBM i7.4
IBM i7.3
IBM i7.2

Remediation/Fixes

None

Workarounds and Mitigations

IBM recommends addressing the vulnerabilities now by verifying applications using ICU calls use sanitized API input data to prevent the CVE impacts.  Sanitization recommendations are grouped by CVE and the relevant ICU APIs to protect.

 

CVE-2017-17484

The function ucnv_UTF8FromUTF8() is an internal ICU utility used for converting UTF-8 text using ICU’s converter framework.


Recommended actions to sanitize input data:

  • Ensure buffers are large enough to contain the result
  • Check UErrorCode after calls and handle
  • Validate UTF-8 input
    • Use u_strFromUTF8() (UTF-8 → UTF-16) This function will fail if the input is not well-formed UTF-8
    • Clean invalid UTF-8 by substitution
      • Use ucnv_convert() with error callback that converts from UTF-8 to UTF-8 using ICU

CVE-2011-4599

The ICU _canonicalize function is used to standardize (canonicalize) locale identifiers, ensuring they conform to a consistent format before being used in further processing (like collation, date/time formatting, number formatting, etc.). These API’s call the _canonicalize API: uloc_getName, uloc_getBaseName, uloc_canonicalize.

Recommended actions to sanitize input data:

  • Allowlist Locale IDs by only accepting known-safe values
  • Validate the format and length by rejecting unexpected characters and long inputs
  • Allocate a buffer of sufficient size using ULOC_FULLNAME_CAPACITY
  • Check that the returned size does not exceed the buffer capacity and handle U_BUFFER_OVERFLOW_ERROR errors
  • Validate the Keyword using ucol_open before calling uloc_canonicalize

CVE-2017-14952

ZoneMeta::createOlsonToMetaMap is an internal function in the ICU
library that is responsible for mapping IANA (Olson) time zone IDs to
ICU's meta zone IDs.

Recommended actions to sanitize input data:

  • Avoid calling ZoneMeta::createOlsonToMetaMap() directly by bypassing or stubbing
  • Allowlist Locale IDs by only accepting known-safe values
  • Validate input strings are valid ICU IDs

 

Get Notified about Future Security Bulletins

References

Off

Acknowledgement

Change History

31 Jul 2025: Initial Publication

*The CVSS Environment Score is customer environment specific and will ultimately impact the Overall CVSS Score. Customers can evaluate the impact of this vulnerability in their environments by accessing the links in the Reference section of this Security Bulletin.

Disclaimer

According to the Forum of Incident Response and Security Teams (FIRST), the Common Vulnerability Scoring System (CVSS) is an "industry open standard designed to convey vulnerability severity and help to determine urgency and priority of response." IBM PROVIDES THE CVSS SCORES ""AS IS"" WITHOUT WARRANTY OF ANY KIND, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. CUSTOMERS ARE RESPONSIBLE FOR ASSESSING THE IMPACT OF ANY ACTUAL OR POTENTIAL SECURITY VULNERABILITY. In addition to other efforts to address potential vulnerabilities, IBM periodically updates the record of components contained in our product offerings. As part of that effort, if IBM identifies previously unidentified packages in a product/service inventory, we address relevant vulnerabilities regardless of CVE date. Inclusion of an older CVEID does not demonstrate that the referenced product has been used by IBM since that date, nor that IBM was aware of a vulnerability as of that date. We are making clients aware of relevant vulnerabilities as we become aware of them. "Affected Products and Versions" referenced in IBM Security Bulletins are intended to be only products and versions that are supported by IBM and have not passed their end-of-support or warranty date. Thus, failure to reference unsupported or extended-support products and versions in this Security Bulletin does not constitute a determination by IBM that they are unaffected by the vulnerability. Reference to one or more unsupported versions in this Security Bulletin shall not create an obligation for IBM to provide fixes for any unsupported or extended-support products or versions.

Document Location

Worldwide

[{"Business Unit":{"code":"BU070","label":"IBM Infrastructure"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.6.0, 7.5.0, 7.4.0, 7.3.0, 7.2.0","Edition":"","Line of Business":{"code":"LOB68","label":"Power HW"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSC5L9","label":"IBM i 7.2 Preventative Service Planning"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.2.0","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSTS2D","label":"IBM i 7.3 Preventative Service Planning"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.3.0","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SS9QQS","label":"IBM i 7.4 Preventative Service Planning"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.4.0","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSB23CE","label":"IBM i 7.5 Preventative Service Planning"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.5.0","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}},{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSKWKM","label":"IBM i 7.6 Preventative Service Planning"},"Component":"","Platform":[{"code":"PF012","label":"IBM i"}],"Version":"7.6.0","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
31 July 2025

UID

ibm17241126