Package: release.debian.org
Severity: normal
Tags: buster
User: [email protected]
Usertags: pu

The attached debdiff for freediameter fixes CVE-2020-6098 in Buster.

It is marked as no-dsa by the security team.

After uploading the patch in 1.2.1-8 to unstable, nobody complained
about something broken yet.

  Thorsten
diff -Nru freediameter-1.2.1/debian/changelog 
freediameter-1.2.1/debian/changelog
--- freediameter-1.2.1/debian/changelog 2018-10-14 10:26:18.000000000 +0200
+++ freediameter-1.2.1/debian/changelog 2020-07-13 20:03:02.000000000 +0200
@@ -1,3 +1,12 @@
+freediameter (1.2.1-7+deb10u1) buster; urgency=medium
+
+  * Team upload
+  * CVE-2020-6098 (Closes: #985088)
+    Anybody can send a specially crafted Diameter request, which triggers
+    a memory corruption and thus results in a denial-of-service.
+
+ -- Thorsten Alteholz <[email protected]>  Mon, 13 Jul 2020 19:03:02 +0100
+
 freediameter (1.2.1-7) unstable; urgency=medium
 
   * Build using "old" SCTP API since the new one fails to build in Debian
diff -Nru freediameter-1.2.1/debian/patches/CVE-2020-6098.patch 
freediameter-1.2.1/debian/patches/CVE-2020-6098.patch
--- freediameter-1.2.1/debian/patches/CVE-2020-6098.patch       1970-01-01 
01:00:00.000000000 +0100
+++ freediameter-1.2.1/debian/patches/CVE-2020-6098.patch       2020-07-13 
20:03:02.000000000 +0200
@@ -0,0 +1,32 @@
+Description: Anybody can send a specially cafted Diameter request, which 
triggers
+             a memory corruption and thus results in a denial-of-service.
+Index: freediameter-1.2.1/libfdproto/messages.c
+===================================================================
+--- freediameter-1.2.1.orig/libfdproto/messages.c      2021-03-22 
16:47:24.581610685 +0100
++++ freediameter-1.2.1/libfdproto/messages.c   2021-03-22 16:47:24.573610508 
+0100
+@@ -1945,6 +1945,14 @@
+                       offset += 4;
+               }
+               
++              /* Check the length is valid */
++              if ( avp->avp_public.avp_len < 
GETAVPHDRSZ(avp->avp_public.avp_flags) ) {
++                      TRACE_DEBUG(INFO, "Invalid AVP size %d",
++                                      avp->avp_public.avp_len);
++                      free(avp);
++                      return EBADMSG;
++              }
++
+               /* Check there is enough remaining data in the buffer */
+               if ( (avp->avp_public.avp_len > 
GETAVPHDRSZ(avp->avp_public.avp_flags))
+               && (buflen - offset < avp->avp_public.avp_len - 
GETAVPHDRSZ(avp->avp_public.avp_flags))) {
+@@ -1991,6 +1999,10 @@
+               TRACE_DEBUG(INFO, "Truncated message (%zd / %d)", buflen, 
msglen );
+               return EBADMSG; 
+       }
++      if ( msglen < GETMSGHDRSZ() ) {
++              TRACE_DEBUG(INFO, "Invalid message length (%d)", msglen );
++              return EBADMSG;
++      }
+       
+       /* Create a new object */
+       CHECK_MALLOC( new = malloc (sizeof(struct msg)) );
diff -Nru freediameter-1.2.1/debian/patches/series 
freediameter-1.2.1/debian/patches/series
--- freediameter-1.2.1/debian/patches/series    2018-10-14 10:26:18.000000000 
+0200
+++ freediameter-1.2.1/debian/patches/series    2020-07-13 20:03:02.000000000 
+0200
@@ -3,3 +3,5 @@
 0003-Set-default-debian-location-for-freeDiameter-configu.patch
 0004-Disable-running-tests-that-require-the-kernel-module.patch
 0005-Build-using-old-API-since-the-new-FTBFS-on-sid.patch
+
+CVE-2020-6098.patch

Reply via email to