Dear Security Team,

This bug was reopened because the original fix from upstream was found
to be incomplete.

Please may I upload to wheezy-security with the attached debdiff,
replacing the CVE-2015-1414 patch with the new one, and also patching
CVE-2015-2923 (Debian Bug #782735).

I've been running kfreebsd-9 with these patches for some weeks, and
they are applied already to kfreebsd-10 in sid/jessie-kfreebsd.

Thanks,
Regards,
-- 
Steven Chamberlain
ste...@pyro.eu.org
diff -Nru kfreebsd-9-9.0/debian/changelog kfreebsd-9-9.0/debian/changelog
--- kfreebsd-9-9.0/debian/changelog     2015-02-25 13:13:10.000000000 +0000
+++ kfreebsd-9-9.0/debian/changelog     2015-05-10 19:53:49.000000000 +0000
@@ -1,3 +1,13 @@
+kfreebsd-9 (9.0-10+deb70.10) wheezy-security; urgency=high
+
+  * Pick SVN r281231 from FreeBSD 9-STABLE to fix:
+    - SA-15:04: integer overflow in IGMP protocol (CVE-2015-1414)
+      updated patch from advisory revision 1.1 (Closes: #779201)
+    - SA-15:09: Denial of Service with IPv6 Router Advertisements
+      (CVE-2015-2923) (Closes: #782735)
+
+ -- Steven Chamberlain <ste...@pyro.eu.org>  Thu, 16 Apr 2015 21:45:05 +0000
+
 kfreebsd-9 (9.0-10+deb70.9) wheezy-security; urgency=medium
 
   * Upstream patch for FreeBSD-SA-15:04.igmp / CVE-2015-1414 (Closes: #779201)
diff -Nru kfreebsd-9-9.0/debian/patches/SA-15_04.igmp.patch 
kfreebsd-9-9.0/debian/patches/SA-15_04.igmp.patch
--- kfreebsd-9-9.0/debian/patches/SA-15_04.igmp.patch   1970-01-01 
00:00:00.000000000 +0000
+++ kfreebsd-9-9.0/debian/patches/SA-15_04.igmp.patch   2015-04-16 
21:44:56.000000000 +0000
@@ -0,0 +1,41 @@
+Description:
+ Fix integer overflow in IGMP protocol [SA-15:04] (CVE-2015-1414)
+ .
+ Updated patch from advisory revision 1.1
+Origin: vendor, https://security.FreeBSD.org/patches/SA-15:04/igmp-errata.patch
+Bug: https://www.freebsd.org/security/advisories/FreeBSD-SA-15:04.igmp.asc
+Bug-Debian: https://bugs.debian.org/779201
+Applied-Upstream: https://svnweb.freebsd.org/base?view=revision&revision=281231
+
+--- a/sys/netinet/igmp.c
++++ b/sys/netinet/igmp.c
+@@ -1532,8 +1532,7 @@
+               case IGMP_VERSION_3: {
+                               struct igmpv3 *igmpv3;
+                               uint16_t igmpv3len;
+-                              uint16_t srclen;
+-                              int nsrc;
++                              uint16_t nsrc;
+ 
+                               IGMPSTAT_INC(igps_rcv_v3_queries);
+                               igmpv3 = (struct igmpv3 *)igmp;
+@@ -1541,8 +1540,8 @@
+                                * Validate length based on source count.
+                                */
+                               nsrc = ntohs(igmpv3->igmp_numsrc);
+-                              srclen = sizeof(struct in_addr) * nsrc;
+-                              if (nsrc * sizeof(in_addr_t) > srclen) {
++                              if (nsrc * sizeof(in_addr_t) >
++                                  UINT16_MAX - iphlen - IGMP_V3_QUERY_MINLEN) 
{
+                                       IGMPSTAT_INC(igps_rcv_tooshort);
+                                       return;
+                               }
+@@ -1551,7 +1550,7 @@
+                                * this scope.
+                                */
+                               igmpv3len = iphlen + IGMP_V3_QUERY_MINLEN +
+-                                  srclen;
++                                  sizeof(struct in_addr) * nsrc;
+                               if ((m->m_flags & M_EXT ||
+                                    m->m_len < igmpv3len) &&
+                                   (m = m_pullup(m, igmpv3len)) == NULL) {
diff -Nru kfreebsd-9-9.0/debian/patches/SA-15_09.ipv6.patch 
kfreebsd-9-9.0/debian/patches/SA-15_09.ipv6.patch
--- kfreebsd-9-9.0/debian/patches/SA-15_09.ipv6.patch   1970-01-01 
00:00:00.000000000 +0000
+++ kfreebsd-9-9.0/debian/patches/SA-15_09.ipv6.patch   2015-04-16 
21:36:56.000000000 +0000
@@ -0,0 +1,28 @@
+Description:
+ Fix Denial of Service with IPv6 Router Advertisements [SA-15:09] 
(CVE-2015-2923)
+Origin: vendor, https://security.FreeBSD.org/patches/SA-15:09/ipv6.patch
+Bug: https://www.freebsd.org/security/advisories/FreeBSD-SA-15:09.ipv6.asc
+Bug-Debian: https://bugs.debian.org/782735
+Applied-Upstream: https://svnweb.freebsd.org/base?view=revision&revision=281231
+
+--- a/sys/netinet6/nd6_rtr.c
++++ b/sys/netinet6/nd6_rtr.c
+@@ -293,8 +293,16 @@
+       }
+       if (nd_ra->nd_ra_retransmit)
+               ndi->retrans = ntohl(nd_ra->nd_ra_retransmit);
+-      if (nd_ra->nd_ra_curhoplimit)
+-              ndi->chlim = nd_ra->nd_ra_curhoplimit;
++      if (nd_ra->nd_ra_curhoplimit) {
++              if (ndi->chlim < nd_ra->nd_ra_curhoplimit)
++                      ndi->chlim = nd_ra->nd_ra_curhoplimit;
++              else if (ndi->chlim != nd_ra->nd_ra_curhoplimit) {
++                      log(LOG_ERR, "RA with a lower CurHopLimit sent from "
++                          "%s on %s (current = %d, received = %d). "
++                          "Ignored.\n", ip6_sprintf(ip6bufs, &ip6->ip6_src),
++                          if_name(ifp), ndi->chlim, nd_ra->nd_ra_curhoplimit);
++              }
++      }
+       dr = defrtrlist_update(&dr0);
+     }
+ 
diff -Nru kfreebsd-9-9.0/debian/patches/series 
kfreebsd-9-9.0/debian/patches/series
--- kfreebsd-9-9.0/debian/patches/series        2015-02-25 13:01:55.000000000 
+0000
+++ kfreebsd-9-9.0/debian/patches/series        2015-05-10 19:52:09.000000000 
+0000
@@ -24,6 +24,8 @@
 SA-14_17.kern.patch
 SA-14_22.namei.patch
 SA-14_25.setlogin.patch
+SA-15_04.igmp.patch
+SA-15_09.ipv6.patch
 
 # Other patches that might or might not be mergeable
 001_misc.diff
@@ -59,4 +61,3 @@
 950_no_stack_protector.diff
 999_config.diff
 999_firmware.diff
-svn279263-FreeBSD-SA-15:04.igmp
diff -Nru kfreebsd-9-9.0/debian/patches/svn279263-FreeBSD-SA-15:04.igmp 
kfreebsd-9-9.0/debian/patches/svn279263-FreeBSD-SA-15:04.igmp
--- kfreebsd-9-9.0/debian/patches/svn279263-FreeBSD-SA-15:04.igmp       
2015-02-25 13:05:17.000000000 +0000
+++ kfreebsd-9-9.0/debian/patches/svn279263-FreeBSD-SA-15:04.igmp       
1970-01-01 00:00:00.000000000 +0000
@@ -1,15 +0,0 @@
-Index: 9/sys/netinet/igmp.c
-===================================================================
---- 9/sys/netinet/igmp.c       (revision 279262)
-+++ 9/sys/netinet/igmp.c       (revision 279263)
-@@ -1533,8 +1533,8 @@
-               case IGMP_VERSION_3: {
-                               struct igmpv3 *igmpv3;
-                               uint16_t igmpv3len;
--                              uint16_t srclen;
--                              int nsrc;
-+                              uint16_t nsrc;
-+                              int srclen;
- 
-                               IGMPSTAT_INC(igps_rcv_v3_queries);
-                               igmpv3 = (struct igmpv3 *)igmp;

Attachment: signature.asc
Description: Digital signature

Reply via email to