[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#950256: marked as done (stretch-pu: package italc/3.0.3+dfsg1-1+deb9u1)



Your message dated Sat, 08 Feb 2020 14:23:35 +0000
with message-id <a894a0233c2d264936953d7a69507573c4a5742a.camel@adam-barratt.org.uk>
and subject line Closing bugs included in 9.12
has caused the Debian Bug report #950256,
regarding stretch-pu: package italc/3.0.3+dfsg1-1+deb9u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
950256: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=950256
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: stretch
User: release.debian.org@packages.debian.org
Usertags: pu

Dear release team,

I have just uploaded an update of italc to Debian stretch, containing
several <no-dsa> security fixes in the bundle libvncserver code.

+  * Porting of libvncserver+libvncclient security patches:
+    - CVE-2018-7225: Uninitialized and potentially sensitive data could be
+      accessed by remote attackers because the msg.cct.length in rfbserver.c was
+      not sanitized.
+    - CVE-2018-15127: heap out-of-bound write vulnerability.
+    - CVE-2018-20019: multiple heap out-of-bound write vulnerabilities.
+    - CVE-2018-20020: heap out-of-bound write vulnerability inside structure
+      in VNC client code.
+    - CVE-2018-20021: CWE-835: Infinite loop vulnerability in VNC client code.
+    - CVE-2018-20022: CWE-665: Improper Initialization vulnerability.
+    - CVE-2018-20023: Improper Initialization vulnerability in VNC Repeater
+      client code.
+    - CVE-2018-20024: null pointer dereference that can result DoS.
+    - CVE-2018-6307: heap use-after-free vulnerability in server code of
+      file transfer extension.
+    - CVE-2018-20748: incomplete fix for CVE-2018-20019 oob heap writes.
+    - CVE-2018-20749: incomplete fix for CVE-2018-15127 oob heap writes.
+    - CVE-2018-20750: incomplete fix for CVE-2018-15127 oob heap writes.
+    - CVE-2018-15126: heap use-after-free resulting in possible RCE.
+    - CVE-2019-15681: rfbserver: don't leak stack memory to the remote.

Furthermore, I updated the Vcs-*: fields (They were still pointing to Alioth).

+  * debian/control:
+    + Update Vcs-*: fields. Package has been migrated to salsa.debian.org.
+

Please note that italc has been removed from Debian a while ago (stretch
was the last version to ship italc).

Greets,
Mike

-- System Information:
Debian Release: 10.2
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.0-6-amd64 (SMP w/4 CPU cores)
Kernel taint flags: TAINT_WARN, TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
diff -Nru italc-3.0.3+dfsg1/debian/changelog italc-3.0.3+dfsg1/debian/changelog
--- italc-3.0.3+dfsg1/debian/changelog	2017-01-20 11:28:48.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/changelog	2019-11-28 08:49:18.000000000 +0100
@@ -1,3 +1,30 @@
+italc (1:3.0.3+dfsg1-1+deb9u1) stretch; urgency=medium
+
+  * Porting of libvncserver+libvncclient security patches:
+    - CVE-2018-7225: Uninitialized and potentially sensitive data could be
+      accessed by remote attackers because the msg.cct.length in rfbserver.c was
+      not sanitized.
+    - CVE-2018-15127: heap out-of-bound write vulnerability.
+    - CVE-2018-20019: multiple heap out-of-bound write vulnerabilities.
+    - CVE-2018-20020: heap out-of-bound write vulnerability inside structure
+      in VNC client code.
+    - CVE-2018-20021: CWE-835: Infinite loop vulnerability in VNC client code.
+    - CVE-2018-20022: CWE-665: Improper Initialization vulnerability.
+    - CVE-2018-20023: Improper Initialization vulnerability in VNC Repeater
+      client code.
+    - CVE-2018-20024: null pointer dereference that can result DoS.
+    - CVE-2018-6307: heap use-after-free vulnerability in server code of
+      file transfer extension.
+    - CVE-2018-20748: incomplete fix for CVE-2018-20019 oob heap writes.
+    - CVE-2018-20749: incomplete fix for CVE-2018-15127 oob heap writes.
+    - CVE-2018-20750: incomplete fix for CVE-2018-15127 oob heap writes.
+    - CVE-2018-15126: heap use-after-free resulting in possible RCE.
+    - CVE-2019-15681: rfbserver: don't leak stack memory to the remote.
+  * debian/control:
+    + Update Vcs-*: fields. Package has been migrated to salsa.debian.org.
+
+ -- Mike Gabriel <sunweaver@debian.org>  Thu, 28 Nov 2019 08:49:18 +0100
+
 italc (1:3.0.3+dfsg1-1) unstable; urgency=medium
 
   [ Mike Gabriel ]
diff -Nru italc-3.0.3+dfsg1/debian/control italc-3.0.3+dfsg1/debian/control
--- italc-3.0.3+dfsg1/debian/control	2017-01-20 11:28:38.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/control	2019-11-28 08:49:18.000000000 +0100
@@ -31,8 +31,8 @@
  gcj-jdk | gcj,
 Standards-Version: 3.9.8
 Homepage: http://italc.sourceforge.net/home.php
-Vcs-Git: https://anonscm.debian.org/cgit/debian-edu/pkg-team/italc.git
-Vcs-Browser: https://anonscm.debian.org/cgit/debian-edu/pkg-team/italc.git
+Vcs-Git: https://salsa.debian.org/debian-edu-pkg-team/italc.git
+Vcs-Browser: https://salsa.debian.org/debian-edu-pkg-team/italc/
 
 Package: italc-master
 Architecture: any
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20020.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20020.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20020.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20020.patch	2019-10-30 20:51:34.000000000 +0100
@@ -0,0 +1,22 @@
+Description: CVE-2018-20020
+ heap out-of-bound write vulnerability inside structure in VNC client code that
+ can result remote code execution
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/7b1ef0ffc4815cab9a96c7278394152bdc89dc4d
+Bug: https://github.com/LibVNC/libvncserver/issues/250
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/corre.c
++++ b/ica/x11/libvncclient/corre.c
+@@ -48,7 +48,7 @@
+ 
+     FillRectangle(client, rx, ry, rw, rh, pix);
+ 
+-    if (!ReadFromRFBServer(client, client->buffer, hdr.nSubrects * (4 + (BPP / 8))))
++    if (hdr.nSubrects > RFB_BUFFER_SIZE / (4 + (BPP / 8)) || !ReadFromRFBServer(client, client->buffer, hdr.nSubrects * (4 + (BPP / 8))))
+ 	return FALSE;
+ 
+     ptr = (uint8_t *)client->buffer;
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20021.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20021.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20021.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20021.patch	2019-11-28 08:36:39.000000000 +0100
@@ -0,0 +1,22 @@
+Description: CVE-2018-20021
+ CWE-835: Infinite loop vulnerability in VNC client code. Vulnerability allows
+ attacker to consume excessive amount of resources like CPU and RAM
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/c3115350eb8bb635d0fdb4dbbb0d0541f38ed19c
+Bug: https://github.com/LibVNC/libvncserver/issues/251
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -2002,7 +2002,7 @@
+ 	/* Regardless of cause, do not divide by zero. */
+ 	linesToRead = bytesPerLine ? (RFB_BUFFER_SIZE / bytesPerLine) : 0;
+ 
+-	while (h > 0) {
++	while (linesToRead && h > 0) {
+ 	  if (linesToRead > h)
+ 	    linesToRead = h;
+ 
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20022.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20022.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20022.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20022.patch	2019-11-28 08:36:43.000000000 +0100
@@ -0,0 +1,31 @@
+Description: CVE-2018-20022
+ multiple weaknesses CWE-665: Improper Initialization vulnerability in VNC
+ client code that allows attacker to read stack memory and can be abuse for
+ information disclosure. Combined with another vulnerability, it can be used
+ to leak stack memory layout and in bypassing ASLR
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/2f5b2ad1c6c99b1ac6482c95844a84d66bb52838
+Bug: https://github.com/LibVNC/libvncserver/issues/252
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -1768,6 +1768,7 @@
+ 
+   if (!SupportsClient2Server(client, rfbKeyEvent)) return TRUE;
+ 
++  memset(&ke, 0, sizeof(ke));
+   ke.type = rfbKeyEvent;
+   ke.down = down ? 1 : 0;
+   ke.key = rfbClientSwap32IfLE(key);
+@@ -1786,6 +1787,7 @@
+ 
+   if (!SupportsClient2Server(client, rfbClientCutText)) return TRUE;
+ 
++  memset(&cct, 0, sizeof(cct));
+   cct.type = rfbClientCutText;
+   cct.length = rfbClientSwap32IfLE(len);
+   return  (WriteToRFBServer(client, (char *)&cct, sz_rfbClientCutTextMsg) &&
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20023.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20023.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20023.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20023.patch	2019-11-28 08:36:49.000000000 +0100
@@ -0,0 +1,37 @@
+Description: CVE-2018-20023
+ contains CWE-665: Improper Initialization vulnerability in VNC Repeater client
+ code that allows attacker to read stack memory and can be abuse for information
+ disclosure. Combined with another vulnerability, it can be used to leak stack
+ memory layout and in bypassing ASLR
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/8b06f835e259652b0ff026898014fc7297ade858
+Bug: https://github.com/LibVNC/libvncserver/issues/253
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -497,6 +497,7 @@
+   rfbProtocolVersionMsg pv;
+   int major,minor;
+   char tmphost[250];
++  int tmphostlen;
+ 
+ #ifdef LIBVNCSERVER_IPv6
+   client->sock = ConnectClientToTcpAddr6(repeaterHost, repeaterPort);
+@@ -532,8 +533,11 @@
+ 
+   rfbClientLog("Connected to VNC repeater, using protocol version %d.%d\n", major, minor);
+ 
+-  snprintf(tmphost, sizeof(tmphost), "%s:%d", destHost, destPort);
+-  if (!WriteToRFBServer(client, tmphost, sizeof(tmphost)))
++  tmphostlen = snprintf(tmphost, sizeof(tmphost), "%s:%d", destHost, destPort);
++  if(tmphostlen < 0 || tmphostlen >= (int)sizeof(tmphost))
++    return FALSE; /* snprintf error or output truncated */
++
++  if (!WriteToRFBServer(client, tmphost, tmphostlen + 1))
+     return FALSE;
+ 
+   return TRUE;
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20024.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20024.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20024.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20024.patch	2019-10-30 20:51:44.000000000 +0100
@@ -0,0 +1,30 @@
+Description: CVE-2018-20024
+ null pointer dereference in VNC client code that can result DoS.
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/4a21bbd097ef7c44bb000c3bd0907f96a10e4ce7
+Bug: https://github.com/LibVNC/libvncserver/issues/254
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/ultra.c
++++ b/ica/x11/libvncclient/ultra.c
+@@ -66,6 +66,8 @@
+     if ((client->raw_buffer_size % 4)!=0)
+       client->raw_buffer_size += (4-(client->raw_buffer_size % 4));
+     client->raw_buffer = (char*) malloc( client->raw_buffer_size );
++    if(client->raw_buffer == NULL)
++      return FALSE;
+   }
+   
+   /* allocate enough space to store the incoming compressed packet */
+@@ -150,6 +152,8 @@
+     if ((client->raw_buffer_size % 4)!=0)
+       client->raw_buffer_size += (4-(client->raw_buffer_size % 4));
+     client->raw_buffer = (char*) malloc( client->raw_buffer_size );
++    if(client->raw_buffer == NULL)
++	return FALSE;
+   }
+ 
+  
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-1.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-1.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-1.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-1.patch	2019-11-28 08:37:15.000000000 +0100
@@ -0,0 +1,25 @@
+From c5ba3fee85a7ecbbca1df5ffd46d32b92757bc2a Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Sat, 29 Dec 2018 14:16:58 +0100
+Subject: [PATCH] LibVNCClient: ignore server-sent cut text longer than 1MB
+
+This is in line with how LibVNCServer does it
+(28afb6c537dc82ba04d5f245b15ca7205c6dbb9c) and fixes part of #273.
+---
+ libvncclient/rfbproto.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -2280,6 +2280,11 @@
+ 
+     msg.sct.length = rfbClientSwap32IfLE(msg.sct.length);
+ 
++    if (msg.sct.length > 1<<20) {
++	    rfbClientErr("Ignoring too big cut text length sent by server: %u B > 1 MB\n", (unsigned int)msg.sct.length);
++	    return FALSE;
++    }  
++
+     buffer = malloc((uint64_t)msg.sct.length+1);
+ 
+     if (!ReadFromRFBServer(client, buffer, msg.sct.length)) {
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-2.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-2.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-2.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-2.patch	2019-11-28 08:36:55.000000000 +0100
@@ -0,0 +1,82 @@
+From e34bcbb759ca5bef85809967a268fdf214c1ad2c Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Sat, 29 Dec 2018 14:40:53 +0100
+Subject: [PATCH] LibVNCClient: ignore server-sent reason strings longer than
+ 1MB
+
+Fixes #273
+---
+ libvncclient/rfbproto.c | 45 +++++++++++++++++++----------------------
+ 1 file changed, 21 insertions(+), 24 deletions(-)
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -546,11 +546,29 @@
+ extern void rfbClientEncryptBytes(unsigned char* bytes, char* passwd);
+ extern void rfbClientEncryptBytes2(unsigned char *where, const int length, unsigned char *key);
+ 
++static void
++ReadReason(rfbClient* client)
++{
++    uint32_t reasonLen;
++    char *reason;
++
++    if (!ReadFromRFBServer(client, (char *)&reasonLen, 4)) return;
++    reasonLen = rfbClientSwap32IfLE(reasonLen);
++    if(reasonLen > 1<<20) {
++      rfbClientLog("VNC connection failed, but sent reason length of %u exceeds limit of 1MB",(unsigned int)reasonLen);
++      return;
++    }
++    reason = malloc(reasonLen+1);
++    if (!ReadFromRFBServer(client, reason, reasonLen)) { free(reason); return; }
++    reason[reasonLen]=0;
++    rfbClientLog("VNC connection failed: %s\n",reason);
++    free(reason);
++}
++
+ rfbBool
+ rfbHandleAuthResult(rfbClient* client)
+ {
+-    uint32_t authResult=0, reasonLen=0;
+-    char *reason=NULL;
++    uint32_t authResult=0;
+ 
+     if (!ReadFromRFBServer(client, (char *)&authResult, 4)) return FALSE;
+ 
+@@ -565,13 +583,7 @@
+       if (client->major==3 && client->minor>7)
+       {
+         /* we have an error following */
+-        if (!ReadFromRFBServer(client, (char *)&reasonLen, 4)) return FALSE;
+-        reasonLen = rfbClientSwap32IfLE(reasonLen);
+-        reason = malloc((uint64_t)reasonLen+1);
+-        if (!ReadFromRFBServer(client, reason, reasonLen)) { free(reason); return FALSE; }
+-        reason[reasonLen]=0;
+-        rfbClientLog("VNC connection failed: %s\n",reason);
+-        free(reason);
++        ReadReason(client);
+         return FALSE;
+       }
+       rfbClientLog("VNC authentication failed\n");
+@@ -586,21 +598,6 @@
+     return FALSE;
+ }
+ 
+-static void
+-ReadReason(rfbClient* client)
+-{
+-    uint32_t reasonLen;
+-    char *reason;
+-
+-    /* we have an error following */
+-    if (!ReadFromRFBServer(client, (char *)&reasonLen, 4)) return;
+-    reasonLen = rfbClientSwap32IfLE(reasonLen);
+-    reason = malloc((uint64_t)reasonLen+1);
+-    if (!ReadFromRFBServer(client, reason, reasonLen)) { free(reason); return; }
+-    reason[reasonLen]=0;
+-    rfbClientLog("VNC connection failed: %s\n",reason);
+-    free(reason);
+-}
+ 
+ static rfbBool
+ ReadSupportedSecurityType(rfbClient* client, uint32_t *result, rfbBool subAuth)
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-3.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-3.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-3.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-3.patch	2019-11-28 08:38:37.000000000 +0100
@@ -0,0 +1,25 @@
+From c2c4b81e6cb3b485fb1ec7ba9e7defeb889f6ba7 Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Sun, 6 Jan 2019 14:20:37 +0100
+Subject: [PATCH] LibVNCClient: fail on server-sent desktop name lengths longer
+ than 1MB
+
+re #273
+---
+ libvncclient/rfbproto.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -1315,6 +1315,11 @@
+   client->si.format.blueMax = rfbClientSwap16IfLE(client->si.format.blueMax);
+   client->si.nameLength = rfbClientSwap32IfLE(client->si.nameLength);
+ 
++  if (client->si.nameLength > 1<<20) {
++      rfbClientErr("Too big desktop name length sent by server: %u B > 1 MB\n", (unsigned int)client->si.nameLength);
++      return FALSE;
++  }
++
+   /* To guard against integer wrap-around, si.nameLength is cast to 64 bit */
+   client->desktopName = malloc((uint64_t)client->si.nameLength + 1);
+   if (!client->desktopName) {
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-4.patch italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-4.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-4.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncclient_CVE-2018-20748-4.patch	2019-11-28 08:38:47.000000000 +0100
@@ -0,0 +1,21 @@
+From a64c3b37af9a6c8f8009d7516874b8d266b42bae Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Sun, 6 Jan 2019 14:22:34 +0100
+Subject: [PATCH] LibVNCClient: remove now-useless cast
+
+re #273
+---
+ libvncclient/rfbproto.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -2287,7 +2287,7 @@
+ 	    return FALSE;
+     }  
+ 
+-    buffer = malloc((uint64_t)msg.sct.length+1);
++    buffer = malloc(msg.sct.length+1);
+ 
+     if (!ReadFromRFBServer(client, buffer, msg.sct.length)) {
+       free(buffer);
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvnc_server+client_CVE-2018-15127-CVE-2018-20019.patch italc-3.0.3+dfsg1/debian/patches/libvnc_server+client_CVE-2018-15127-CVE-2018-20019.patch
--- italc-3.0.3+dfsg1/debian/patches/libvnc_server+client_CVE-2018-15127-CVE-2018-20019.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvnc_server+client_CVE-2018-15127-CVE-2018-20019.patch	2019-11-28 08:36:32.000000000 +0100
@@ -0,0 +1,63 @@
+Description: CVE-2018-15127, CVE-2018-20019
+ CVE-2018-15127
+ heap out-of-bound write vulnerability in server code of file transfer
+ extension that can result remote code execution
+ CVE-2018-20019
+ multiple heap out-of-bound write vulnerabilities in VNC client code that can
+ result remote code execution
+---
+
+Author: Abhijith PA <abhijith@debian.org>
+Origin: https://github.com/LibVNC/libvncserver/commit/502821828ed00b4a2c4bef90683d0fd88ce495de
+        https://github.com/LibVNC/libvncserver/commit/a83439b9fbe0f03c48eb94ed05729cb016f8b72f
+Bug: https://github.com/LibVNC/libvncserver/issues/243
+     https://github.com/LibVNC/libvncserver/issues/247
+Bug-Debian: https://bugs.debian.org/916941
+Last-Update: 2018-12-23
+
+--- a/ica/x11/libvncclient/rfbproto.c
++++ b/ica/x11/libvncclient/rfbproto.c
+@@ -563,7 +563,7 @@
+         /* we have an error following */
+         if (!ReadFromRFBServer(client, (char *)&reasonLen, 4)) return FALSE;
+         reasonLen = rfbClientSwap32IfLE(reasonLen);
+-        reason = malloc(reasonLen+1);
++        reason = malloc((uint64_t)reasonLen+1);
+         if (!ReadFromRFBServer(client, reason, reasonLen)) { free(reason); return FALSE; }
+         reason[reasonLen]=0;
+         rfbClientLog("VNC connection failed: %s\n",reason);
+@@ -591,7 +591,7 @@
+     /* we have an error following */
+     if (!ReadFromRFBServer(client, (char *)&reasonLen, 4)) return;
+     reasonLen = rfbClientSwap32IfLE(reasonLen);
+-    reason = malloc(reasonLen+1);
++    reason = malloc((uint64_t)reasonLen+1);
+     if (!ReadFromRFBServer(client, reason, reasonLen)) { free(reason); return; }
+     reason[reasonLen]=0;
+     rfbClientLog("VNC connection failed: %s\n",reason);
+@@ -2274,10 +2274,12 @@
+ 
+     msg.sct.length = rfbClientSwap32IfLE(msg.sct.length);
+ 
+-    buffer = malloc(msg.sct.length+1);
++    buffer = malloc((uint64_t)msg.sct.length+1);
+ 
+-    if (!ReadFromRFBServer(client, buffer, msg.sct.length))
++    if (!ReadFromRFBServer(client, buffer, msg.sct.length)) {
++      free(buffer);
+       return FALSE;
++      }
+ 
+     buffer[msg.sct.length] = 0;
+ 
+--- a/ica/x11/libvncserver/rfbserver.c
++++ b/ica/x11/libvncserver/rfbserver.c
+@@ -1466,7 +1466,7 @@
+     rfbLog("rfbProcessFileTransferReadBuffer(%dlen)\n", length);
+     */
+     if (length>0) {
+-        buffer=malloc(length+1);
++        buffer=malloc((uint64_t)length+1);
+         if (buffer!=NULL) {
+             if ((n = rfbReadExact(cl, (char *)buffer, length)) <= 0) {
+                 if (n != 0)
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20749.patch italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20749.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20749.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20749.patch	2019-11-28 08:38:50.000000000 +0100
@@ -0,0 +1,37 @@
+From 15bb719c03cc70f14c36a843dcb16ed69b405707 Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Sun, 6 Jan 2019 15:13:56 +0100
+Subject: [PATCH] Error out in rfbProcessFileTransferReadBuffer if length can
+ not be allocated
+
+re #273
+---
+ libvncserver/rfbserver.c | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+--- a/ica/x11/libvncserver/rfbserver.c
++++ b/ica/x11/libvncserver/rfbserver.c
+@@ -1462,11 +1462,21 @@
+     int   n=0;
+ 
+     FILEXFER_ALLOWED_OR_CLOSE_AND_RETURN("", cl, NULL);
++
+     /*
+-    rfbLog("rfbProcessFileTransferReadBuffer(%dlen)\n", length);
++       We later alloc length+1, which might wrap around on 32-bit systems if length equals
++       0XFFFFFFFF, i.e. SIZE_MAX for 32-bit systems. On 64-bit systems, a length of 0XFFFFFFFF
++       will safely be allocated since this check will never trigger and malloc() can digest length+1
++       without problems as length is a uint32_t.
+     */
++    if(length == SIZE_MAX) {
++	rfbErr("rfbProcessFileTransferReadBuffer: too big file transfer length requested: %u", (unsigned int)length);
++	rfbCloseClient(cl);
++	return NULL;
++    }
++
+     if (length>0) {
+-        buffer=malloc((uint64_t)length+1);
++        buffer=malloc((size_t)length+1);
+         if (buffer!=NULL) {
+             if ((n = rfbReadExact(cl, (char *)buffer, length)) <= 0) {
+                 if (n != 0)
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20750.patch italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20750.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20750.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-20750.patch	2019-11-28 08:38:53.000000000 +0100
@@ -0,0 +1,42 @@
+From 09e8fc02f59f16e2583b34fe1a270c238bd9ffec Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
+Date: Mon, 7 Jan 2019 10:40:01 +0100
+Subject: [PATCH] Limit length to INT_MAX bytes in
+ rfbProcessFileTransferReadBuffer()
+
+This amends 15bb719c03cc70f14c36a843dcb16ed69b405707 fix for a heap
+out-of-bound write access in rfbProcessFileTransferReadBuffer() when
+reading a transferred file content in a server. The former fix did not
+work on platforms with a 32-bit int type (expected by rfbReadExact()).
+
+CVE-2018-15127
+<https://github.com/LibVNC/libvncserver/issues/243>
+<https://github.com/LibVNC/libvncserver/issues/273>
+---
+ libvncserver/rfbserver.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+--- a/ica/x11/libvncserver/rfbserver.c
++++ b/ica/x11/libvncserver/rfbserver.c
+@@ -87,6 +87,8 @@
+ #include <time.h>
+ /* PRIu32 */
+ #include <inttypes.h>
++/* INT_MAX */
++#include <limits.h>
+ 
+ #ifdef LIBVNCSERVER_WITH_WEBSOCKETS
+ #include "rfbssl.h"
+@@ -1468,8 +1470,11 @@
+        0XFFFFFFFF, i.e. SIZE_MAX for 32-bit systems. On 64-bit systems, a length of 0XFFFFFFFF
+        will safely be allocated since this check will never trigger and malloc() can digest length+1
+        without problems as length is a uint32_t.
++       We also later pass length to rfbReadExact() that expects a signed int type and
++       that might wrap on platforms with a 32-bit int type if length is bigger
++       than 0X7FFFFFFF.
+     */
+-    if(length == SIZE_MAX) {
++    if(length == SIZE_MAX || length > INT_MAX) {
+ 	rfbErr("rfbProcessFileTransferReadBuffer: too big file transfer length requested: %u", (unsigned int)length);
+ 	rfbCloseClient(cl);
+ 	return NULL;
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-7225.patch italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-7225.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-7225.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2018-7225.patch	2019-11-28 08:35:55.000000000 +0100
@@ -0,0 +1,46 @@
+From: Markus Koschany <apo@debian.org>
+Date: Tue, 5 Jun 2018 14:04:07 +0200
+Subject: CVE-2018-7225
+
+Bug-Debian: https://bugs.debian.org/894045
+Origin: https://github.com/LibVNC/libvncserver/commit/b0c77391e6bd0a2305bbc9b37a2499af74ddd9ee
+---
+ libvncserver/rfbserver.c | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+--- a/ica/x11/libvncserver/rfbserver.c
++++ b/ica/x11/libvncserver/rfbserver.c
+@@ -85,6 +85,8 @@
+ #include <errno.h>
+ /* strftime() */
+ #include <time.h>
++/* PRIu32 */
++#include <inttypes.h>
+ 
+ #ifdef LIBVNCSERVER_WITH_WEBSOCKETS
+ #include "rfbssl.h"
+@@ -2577,7 +2579,23 @@
+ 
+ 	msg.cct.length = Swap32IfLE(msg.cct.length);
+ 
+-	str = (char *)malloc(msg.cct.length);
++	/* uint32_t input is passed to malloc()'s size_t argument,
++	 * to rfbReadExact()'s int argument, to rfbStatRecordMessageRcvd()'s int
++	 * argument increased of sz_rfbClientCutTextMsg, and to setXCutText()'s int
++	 * argument. Here we impose a limit of 1 MB so that the value fits
++	 * into all of the types to prevent from misinterpretation and thus
++	 * from accessing uninitialized memory (CVE-2018-7225) and also to
++	 * prevent from a denial-of-service by allocating to much memory in
++	 * the server. */
++	if (msg.cct.length > 1<<20) {
++	    rfbLog("rfbClientCutText: too big cut text length requested: %" PRIu32 "\n",
++		    msg.cct.length);
++	    rfbCloseClient(cl);
++	    return;
++	}
++
++	/* Allow zero-length client cut text. */
++	str = (char *)calloc(msg.cct.length ? msg.cct.length : 1, 1);
+ 	if (str == NULL) {
+ 		rfbLogPerror("rfbProcessClientNormalMessage: not enough memory");
+ 		rfbCloseClient(cl);
diff -Nru italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2019-15681.patch italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2019-15681.patch
--- italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2019-15681.patch	1970-01-01 01:00:00.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/libvncserver_CVE-2019-15681.patch	2019-11-28 08:38:55.000000000 +0100
@@ -0,0 +1,21 @@
+From d01e1bb4246323ba6fcee3b82ef1faa9b1dac82a Mon Sep 17 00:00:00 2001
+From: Christian Beier <dontmind@freeshell.org>
+Date: Mon, 19 Aug 2019 22:32:25 +0200
+Subject: [PATCH] rfbserver: don't leak stack memory to the remote
+
+Thanks go to Pavel Cheremushkin of Kaspersky for reporting.
+---
+ libvncserver/rfbserver.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/ica/x11/libvncserver/rfbserver.c
++++ b/ica/x11/libvncserver/rfbserver.c
+@@ -3529,6 +3529,8 @@
+     rfbServerCutTextMsg sct;
+     rfbClientIteratorPtr iterator;
+ 
++    memset((char *)&sct, 0, sizeof(sct));
++
+     iterator = rfbGetClientIterator(rfbScreen);
+     while ((cl = rfbClientIteratorNext(iterator)) != NULL) {
+         sct.type = rfbServerCutText;
diff -Nru italc-3.0.3+dfsg1/debian/patches/series italc-3.0.3+dfsg1/debian/patches/series
--- italc-3.0.3+dfsg1/debian/patches/series	2017-01-20 10:50:55.000000000 +0100
+++ italc-3.0.3+dfsg1/debian/patches/series	2019-11-28 08:48:52.000000000 +0100
@@ -1,2 +1,16 @@
 1005_gcc47-ftbfs.patch
 2001_inject-buildtype-from-outside.patch
+libvncserver_CVE-2018-7225.patch
+libvnc_server+client_CVE-2018-15127-CVE-2018-20019.patch
+libvncclient_CVE-2018-20020.patch
+libvncclient_CVE-2018-20021.patch
+libvncclient_CVE-2018-20022.patch
+libvncclient_CVE-2018-20023.patch
+libvncclient_CVE-2018-20024.patch
+libvncclient_CVE-2018-20748-1.patch
+libvncclient_CVE-2018-20748-2.patch
+libvncclient_CVE-2018-20748-3.patch
+libvncclient_CVE-2018-20748-4.patch
+libvncserver_CVE-2018-20749.patch
+libvncserver_CVE-2018-20750.patch
+libvncserver_CVE-2019-15681.patch

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 9.12

Hi,

Each of the uploads referred to by these bugs was included in today's
oldstable point release.

Regards,

Adam

--- End Message ---

Reply to: