-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 NetBSD Security Advisory 2010-013 ================================= Topic: UDP6 Option Parsing local Denial of Service Version: NetBSD-current: affected prior to Jul 15, 2010 NetBSD 5.1: not affected NetBSD 5.0.*: affected NetBSD 5.0: affected NetBSD 4.0.*: affected NetBSD 4.0: affected Severity: Local system crash Fixed: NetBSD-current: Jul 15, 2010 NetBSD-5-0 branch: Jul 16, 2010 NetBSD-5 branch: Jul 16, 2010 (5.1 includes the fix) NetBSD-4-0 branch: Jul 16, 2010 NetBSD-4 branch: Jul 16, 2010 Please note that NetBSD releases prior to 4.0 are no longer supported. It is recommended that all users upgrade to a supported release. Abstract ======== The udp6_output() routing did not do proper variable management allowing an attacker to crash a local system by sending an UDP6 datagram with suitable parameters. Technical Details ================= The udp6_output() can be given ancilliary data in the "control" parameter. This is used to create the IPv6 packet options in the "opt" variable. The packet options are released at the end of the routine after the packet has been sent. However, when given other bad parameters, the routine would jump to releasing the options without ever creating them first. This leads to an uninitialized pointer access. Solutions and Workarounds ========================= The following instructions describe how to upgrade your kernel by updating your source tree and rebuilding and installing a new version of the kernel. Only kernels compiled with the following option are vulnerable to this issue: options INET6 The default NetBSD GENERIC kernels have this option enabled. If you do not use IPv6 access, as a temporary workaround, filter all IPv6 UDP traffic from untrusted networks (mind that UDP sender is very easy to forge) until the system can receive a fixed kernel. For all NetBSD versions, you need to obtain fixed kernel sources, rebuild and install the new kernel, and reboot the system. CVS branch file revision ------------- -------------------------- ----------- HEAD sys/netinet6/udp6_output.c 1.41 netbsd-5 sys/netinet6/udp6_output.c 1.37.4.1 netbsd-5-0 sys/netinet6/udp6_output.c 1.37.10.1 netbsd-4 sys/netinet6/udp6_output.c 1.26.8.1 netbsd-4-0 sys/netinet6/udp6_output.c 1.26.14.1 The fixed source may be obtained from the NetBSD CVS repository. The following instructions briefly summarise how to upgrade your kernel. In these instructions, replace: ARCH with your architecture (from uname -m), and KERNCONF with the name of your kernel configuration file. To update from CVS, re-build, and re-install the kernel: # cd src # cvs update -d -P -r BRANCH sys/netinet6/upd6_output.c # ./build.sh kernel=KERNCONF # mv /netbsd /netbsd.old # cp sys/arch/ARCH/compile/obj/KERNCONF/netbsd /netbsd # shutdown -r now For more information on how to do this, see: http://www.NetBSD.org/guide/en/chap-kernel.html Thanks To ========= We thank Clement LECIGNE for reporting the issue and providing a suggested fix. Revision History ================ 2010-11-29 Initial release More Information ================ Advisories may be updated as new information becomes available. The most recent version of this advisory (PGP signed) can be found at http://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2010-013.txt.asc Information about NetBSD and NetBSD security can be found at http://www.NetBSD.org/ and http://www.NetBSD.org/Security/ . Copyright 2010, The NetBSD Foundation, Inc. All Rights Reserved. Redistribution permitted only in full, unmodified form. $NetBSD: NetBSD-SA2010-013.txt,v 1.2 2010/11/28 15:16:17 tonnerre Exp $ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (NetBSD) iQIcBAEBAgAGBQJM8nJKAAoJEAZJc6xMSnBuMZsQAKCuu7AS+EsyMc/3A+2r7BdS bE2c6bUTX5WExiSwf5F/EQ5cHCtz8kDK09Hy8VdUryBh0AynpFukH2Wif6mFCqaB wIt/gcPAZt8KqgpKXqC4NR2f4HsT5SsT8LmaTjL6Xr7ZtQQZJfYxyk+13NCbLIvi oZbn6Z+E89GYZ3tKWbLVp1DuI8p3PKQ7ObmX0J71o9N6nc19TeQ5hFh3ebI1S8mo x3zBpj/XGLgr7sXJZz4HH5214cHW5Nn7+9zuADFNGbsQoKY9AgDmEc/RJPhGuuBF 7TwWG+Dcb1bJX016hzeALDTyKxBkEiL5XwsJbhysvmN8YGCMyLrRGvq1/2AVQrmL /c560oPQwPU+IFEqBicLtQHFCpolFlZUb2g2yITLVSYZDE32YlyK5jznKJsSUHFA Zb14zq3tHIDGDeseL+5fdGQPykBkR4W4aWwxLFpVuZf1H3+z5Sf/53OeB3T/i9Bl ZMyAdl1PBz10X7a7uHOksmeSUOOWfEf86IP0AZ5l++/QZLQ0+T8Asoz4pH7FlUbS /MYsDoXqQJC/xvTuYTxaWODt1UeTRbTCN6wmEsTEQQtdzm7y2UvoXrLnXTUTee+E CDA0CWuZlj++pdPGt6KHitAS02veH2SakRaysvkFBZdzifWT3/JfNwo2PIHcabLV 7ag5W0IGfUJS5iC4Nxq9 =Lnkg -----END PGP SIGNATURE-----