Bug 1360339 (CVE-2016-6293) - CVE-2016-6293 icu: Out-of-bounds access in uloc_acceptLanguageFromHTTP
Summary: CVE-2016-6293 icu: Out-of-bounds access in uloc_acceptLanguageFromHTTP
Alias: CVE-2016-6293
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
Depends On: 1360341 1360340 1360342
Blocks: 1360344
TreeView+ depends on / blocked
Reported: 2016-07-26 12:47 UTC by Adam Mariš
Modified: 2019-09-29 13:54 UTC (History)
19 users (show)

Fixed In Version: icu 58.1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2016-11-30 03:50:06 UTC

Attachments (Terms of Use)

Description Adam Mariš 2016-07-26 12:47:47 UTC
It was found that uloc_acceptLanguageFromHTTP function in common/uloc.cpp does not ensure that there is a '\0' character at the end of a certain temporary array that leads to out of bounds access, possibly causing DoS.

CVE assignment:


Comment 1 Adam Mariš 2016-07-26 12:50:09 UTC
Created mingw-icu tracking bugs for this issue:

Affects: fedora-all [bug 1360341]
Affects: epel-7 [bug 1360342]

Comment 2 Adam Mariš 2016-07-26 12:50:20 UTC
Created icu tracking bugs for this issue:

Affects: fedora-all [bug 1360340]

Comment 3 Eike Rathke 2016-07-26 13:21:02 UTC
And the patch fixing this is ... where?

Comment 4 Eike Rathke 2016-08-26 09:20:21 UTC
Any update on this?

Comment 5 Michael K Johnson (@SAS) 2016-08-29 13:50:27 UTC
I don't even find a bug filed in the icu bug tracker upstream:
However, at https://sourceforge.net/p/icu/mailman/message/35305922/
upstream say they "are tracking this issue"

Maybe they have a private ticket in trac for a publicly-disclosed

Comment 6 Doran Moppert 2016-09-28 02:40:31 UTC
It looks like the patch is http://bugs.icu-project.org/trac/changeset/39109 - referenced ticket is private but description, timeline and tests look correct.

Comment 7 Doran Moppert 2016-09-29 03:56:41 UTC
Impact here looks relatively low:

 - a string of the precise length fails to be null terminated, causing out-of-bounds read in strcmp().  At worst this is a crash.

 - other than php, no packages shipped in Red Hat Enterprise Linux use this function

Third-party code can protect itself in the same way as PHP, by ensuring the httpAcceptLanguage parameter passed to uloc_acceptLanguageFromHTTP is no longer than ULOC_FULLNAME_CAPACITY bytes.  This constant is defined as 157 in libicu-50.1.2, which is more than enough for a legitimate Accept-Language string.

libicu does not make any internal calls to uloc_acceptLanguageFromHTTP, so a simple grep for that entry point is sufficient to determine if client code is vulnerable.

Comment 9 Doran Moppert 2016-11-04 08:36:38 UTC
Upstream bug (ICU) (private as at 2016-11-04):


Note You need to log in before you can comment on or make changes to this bug.