Package: release.debian.org Severity: normal Tags: stretch User: release.debian....@packages.debian.org Usertags: pu
Dear release team, I would like to update libx11 in Stretch because it is currently affected by CVE-2018-14598, CVE-2018-14599 and CVE-2018-14600. The security team marked all issues as no-dsa. Please find attached the debdiff. I had to refresh one unrelated patch because it did not apply correctly. No other changes were made. Regards, Markus
diff -u libx11-1.6.4/debian/changelog libx11-1.6.4/debian/changelog --- libx11-1.6.4/debian/changelog +++ libx11-1.6.4/debian/changelog @@ -1,3 +1,23 @@ +libx11 (2:1.6.4-3+deb9u1) stretch; urgency=high + + * Non-maintainer upload. + * Fix CVE-2018-14598, CVE-2018-14599 and CVE-2018-14600: + * CVE-2018-14599: + The functions XGetFontPath, XListExtensions, and XListFonts are vulnerable + to an off-by-one override on malicious server responses. + * CVE-2018-14600: + The length value is interpreted as signed char on many systems (depending + on default signedness of char), which can lead to an out of boundary write + up to 128 bytes in front of the allocated storage, but limited to NUL + byte(s). + * CVE-2018-14598: + If the server sends a reply in which even the first string would overflow + the transmitted bytes, list[0] (or flist[0]) will be set to NULL and a + count of 0 is returned. This may trigger a segmentation fault leading to a + Denial of Service. + + -- Markus Koschany <a...@debian.org> Sat, 29 Sep 2018 14:05:05 +0200 + libx11 (2:1.6.4-3) unstable; urgency=high [ Emilio Pozuelo Monfort ] diff -u libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff --- libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff +++ libx11-1.6.4/debian/patches/003_recognize_glibc_2.3.2_locale_names.diff @@ -49,10 +49,8 @@ Partially submitted upstream. This is so large I don't expect it to all go in at once, but any bit would help. --Nathanael -Index: libx11/nls/compose.dir.pre -=================================================================== ---- libx11.orig/nls/compose.dir.pre -+++ libx11/nls/compose.dir.pre +--- a/nls/compose.dir.pre ++++ b/nls/compose.dir.pre @@ -4,8 +4,13 @@ XCOMM The first word is the compose tabl XCOMM and the second word is the full locale name. XCOMM @@ -234,7 +232,7 @@ en_US.UTF-8/Compose: ph_PH.UTF-8 en_US.UTF-8/Compose: pl_PL.UTF-8 en_US.UTF-8/Compose: pp_AN.UTF-8 -@@ -433,9 +466,11 @@ en_US.UTF-8/Compose: sd_IN@devanagari.U +@@ -433,9 +466,11 @@ en_US.UTF-8/Compose: sd_IN.UTF-8@devana en_US.UTF-8/Compose: se_NO.UTF-8 en_US.UTF-8/Compose: sh_BA.UTF-8 en_US.UTF-8/Compose: sh_YU.UTF-8 @@ -254,10 +252,8 @@ en_US.UTF-8/Compose: tl_PH.UTF-8 en_US.UTF-8/Compose: tn_ZA.UTF-8 en_US.UTF-8/Compose: tr_TR.UTF-8 -Index: libx11/nls/locale.alias.pre -=================================================================== ---- libx11.orig/nls/locale.alias.pre -+++ libx11/nls/locale.alias.pre +--- a/nls/locale.alias.pre ++++ b/nls/locale.alias.pre @@ -311,6 +311,12 @@ en_CA.iso88591: en_CA.ISO8859-1 en_CA.ISO-8859-1: en_CA.ISO8859-1 en_CA.ISO_8859-1: en_CA.ISO8859-1 @@ -332,10 +328,8 @@ french: fr_FR.ISO8859-1 french.iso88591: fr_CH.ISO8859-1 galego: gl_ES.ISO8859-1 -Index: libx11/nls/locale.dir.pre -=================================================================== ---- libx11.orig/nls/locale.dir.pre -+++ libx11/nls/locale.dir.pre +--- a/nls/locale.dir.pre ++++ b/nls/locale.dir.pre @@ -6,8 +6,11 @@ XCOMM XCOMM @@ -458,7 +452,7 @@ en_US.UTF-8/XLC_LOCALE: af_ZA.UTF-8 en_US.UTF-8/XLC_LOCALE: am_ET.UTF-8 en_US.UTF-8/XLC_LOCALE: ar_AA.UTF-8 -@@ -297,6 +319,7 @@ en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8 +@@ -298,6 +320,7 @@ en_US.UTF-8/XLC_LOCALE: bn_BD.UTF-8 en_US.UTF-8/XLC_LOCALE: bn_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: bo_IN.UTF-8 en_US.UTF-8/XLC_LOCALE: br_FR.UTF-8 @@ -538,7 +532,7 @@ en_US.UTF-8/XLC_LOCALE: pp_AN.UTF-8 @@ -431,11 +467,13 @@ en_US.UTF-8/XLC_LOCALE: en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8 - en_US.UTF-8/XLC_LOCALE: sd...@devanagari.utf-8 + en_US.UTF-8/XLC_LOCALE: sd_IN.UTF-8@devanagari en_US.UTF-8/XLC_LOCALE: se_NO.UTF-8 +en_US.UTF-8/XLC_LOCALE: sid_ET.UTF-8 en_US.UTF-8/XLC_LOCALE: sh_BA.UTF-8 @@ -550,7 +544,7 @@ en_US.UTF-8/XLC_LOCALE: sq_AL.UTF-8 en_US.UTF-8/XLC_LOCALE: sr_CS.UTF-8 en_US.UTF-8/XLC_LOCALE: sr_ME.UTF-8 -@@ -451,6 +489,7 @@ en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8 +@@ -452,6 +490,7 @@ en_US.UTF-8/XLC_LOCALE: tg_TJ.UTF-8 th_TH.UTF-8/XLC_LOCALE: th_TH.UTF-8 en_US.UTF-8/XLC_LOCALE: ti_ER.UTF-8 en_US.UTF-8/XLC_LOCALE: ti_ET.UTF-8 diff -u libx11-1.6.4/debian/patches/series libx11-1.6.4/debian/patches/series --- libx11-1.6.4/debian/patches/series +++ libx11-1.6.4/debian/patches/series @@ -5,0 +6,3 @@ +CVE-2018-14599.patch +CVE-2018-14600.patch +CVE-2018-14598.patch only in patch2: unchanged: --- libx11-1.6.4.orig/debian/patches/CVE-2018-14598.patch +++ libx11-1.6.4/debian/patches/CVE-2018-14598.patch @@ -0,0 +1,42 @@ +From: Markus Koschany <a...@debian.org> +Date: Sat, 29 Sep 2018 14:13:53 +0200 +Subject: CVE-2018-14598 + +Origin: https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=e83722768fd5c467ef61fa159e8c6278770b45c2 +--- + src/GetFPath.c | 5 +++++ + src/ListExt.c | 5 +++++ + 2 files changed, 10 insertions(+) + +diff --git a/src/GetFPath.c b/src/GetFPath.c +index fe37fe8..dac553e 100644 +--- a/src/GetFPath.c ++++ b/src/GetFPath.c +@@ -78,6 +78,11 @@ char **XGetFontPath( + length = *(unsigned char *)ch; + *ch = '\0'; /* and replace with null-termination */ + count++; ++ } else if (i == 0) { ++ Xfree(flist); ++ Xfree(ch); ++ flist = NULL; ++ break; + } else + flist[i] = NULL; + } +diff --git a/src/ListExt.c b/src/ListExt.c +index 2a2e135..ceeb885 100644 +--- a/src/ListExt.c ++++ b/src/ListExt.c +@@ -83,6 +83,11 @@ char **XListExtensions( + length = *(unsigned char *)ch; + *ch = '\0'; /* and replace with null-termination */ + count++; ++ } else if (i == 0) { ++ Xfree(list); ++ Xfree(ch); ++ list = NULL; ++ break; + } else + list[i] = NULL; + } only in patch2: unchanged: --- libx11-1.6.4.orig/debian/patches/CVE-2018-14599.patch +++ libx11-1.6.4/debian/patches/CVE-2018-14599.patch @@ -0,0 +1,85 @@ +From: Markus Koschany <a...@debian.org> +Date: Wed, 29 Aug 2018 07:48:56 +0200 +Subject: CVE-2018-14599 + +Origin: https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=b469da1430cdcee06e31c6251b83aede072a1ff0 +--- + src/FontNames.c | 16 ++++------------ + src/GetFPath.c | 2 +- + src/ListExt.c | 12 ++++-------- + 3 files changed, 9 insertions(+), 21 deletions(-) + +diff --git a/src/FontNames.c b/src/FontNames.c +index 31f671c..f185c11 100644 +--- a/src/FontNames.c ++++ b/src/FontNames.c +@@ -88,24 +88,16 @@ int *actualCount) /* RETURN */ + * unpack into null terminated strings. + */ + chstart = ch; +- chend = ch + (rlen + 1); ++ chend = ch + rlen; + length = *(unsigned char *)ch; + *ch = 1; /* make sure it is non-zero for XFreeFontNames */ + for (i = 0; i < rep.nFonts; i++) { + if (ch + length < chend) { + flist[i] = ch + 1; /* skip over length */ + ch += length + 1; /* find next length ... */ +- if (ch <= chend) { +- length = *(unsigned char *)ch; +- *ch = '\0'; /* and replace with null-termination */ +- count++; +- } else { +- Xfree(chstart); +- Xfree(flist); +- flist = NULL; +- count = 0; +- break; +- } ++ length = *(unsigned char *)ch; ++ *ch = '\0'; /* and replace with null-termination */ ++ count++; + } else { + Xfree(chstart); + Xfree(flist); +diff --git a/src/GetFPath.c b/src/GetFPath.c +index abd4a5d..cd56564 100644 +--- a/src/GetFPath.c ++++ b/src/GetFPath.c +@@ -69,7 +69,7 @@ char **XGetFontPath( + /* + * unpack into null terminated strings. + */ +- chend = ch + (nbytes + 1); ++ chend = ch + nbytes; + length = *ch; + for (i = 0; i < rep.nPaths; i++) { + if (ch + length < chend) { +diff --git a/src/ListExt.c b/src/ListExt.c +index 9074315..421adb4 100644 +--- a/src/ListExt.c ++++ b/src/ListExt.c +@@ -74,19 +74,15 @@ char **XListExtensions( + /* + * unpack into null terminated strings. + */ +- chend = ch + (rlen + 1); ++ chend = ch + rlen; + length = *ch; + for (i = 0; i < rep.nExtensions; i++) { + if (ch + length < chend) { + list[i] = ch+1; /* skip over length */ + ch += length + 1; /* find next length ... */ +- if (ch <= chend) { +- length = *ch; +- *ch = '\0'; /* and replace with null-termination */ +- count++; +- } else { +- list[i] = NULL; +- } ++ length = *ch; ++ *ch = '\0'; /* and replace with null-termination */ ++ count++; + } else + list[i] = NULL; + } only in patch2: unchanged: --- libx11-1.6.4.orig/debian/patches/CVE-2018-14600.patch +++ libx11-1.6.4/debian/patches/CVE-2018-14600.patch @@ -0,0 +1,48 @@ +From: Markus Koschany <a...@debian.org> +Date: Wed, 29 Aug 2018 07:49:14 +0200 +Subject: CVE-2018-14600 + +Origin: https://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=dbf72805fd9d7b1846fe9a11b46f3994bfc27fea +--- + src/GetFPath.c | 4 ++-- + src/ListExt.c | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/GetFPath.c b/src/GetFPath.c +index cd56564..c99174a 100644 +--- a/src/GetFPath.c ++++ b/src/GetFPath.c +@@ -70,12 +70,12 @@ char **XGetFontPath( + * unpack into null terminated strings. + */ + chend = ch + nbytes; +- length = *ch; ++ length = *(unsigned char *)ch; + for (i = 0; i < rep.nPaths; i++) { + if (ch + length < chend) { + flist[i] = ch+1; /* skip over length */ + ch += length + 1; /* find next length ... */ +- length = *ch; ++ length = *(unsigned char *)ch; + *ch = '\0'; /* and replace with null-termination */ + count++; + } else +diff --git a/src/ListExt.c b/src/ListExt.c +index 421adb4..6daa14d 100644 +--- a/src/ListExt.c ++++ b/src/ListExt.c +@@ -75,12 +75,12 @@ char **XListExtensions( + * unpack into null terminated strings. + */ + chend = ch + rlen; +- length = *ch; ++ length = *(unsigned char *)ch; + for (i = 0; i < rep.nExtensions; i++) { + if (ch + length < chend) { + list[i] = ch+1; /* skip over length */ + ch += length + 1; /* find next length ... */ +- length = *ch; ++ length = *(unsigned char *)ch; + *ch = '\0'; /* and replace with null-termination */ + count++; + } else