-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 NetBSD Security Advisory 2006-019 ================================= Topic: Malicious PPP options can overrun a kernel buffer Version: NetBSD-current: source prior to August 23, 2006 NetBSD 4.0_BETA affected NetBSD 3.1_RC1: affected NetBSD 3.0.* affected NetBSD 3.0: affected NetBSD 2.1: affected NetBSD 2.0.* affected NetBSD 2.0: affected Severity: Remote denial-of-service Potentially exploitable for further impact (unconfirmed) Fixed: NetBSD-current: August 23, 2006 NetBSD-4 branch: August 23, 2006 (4.0 will include the fix) NetBSD-3-0 branch: August 23, 2006 (3.0.2 will include the fix) NetBSD-3 branch: August 23, 2006 (3.1 will include the fix) NetBSD-2-1 branch: August 23, 2006 (2.1.1 will include the fix) NetBSD-2-0 branch: August 23, 2006 (2.0.4 will include the fix) NetBSD-2 branch: August 23, 2006 Abstract ======== A problem has been identified in the in-kernel PPP code shared by ISDN PPP interfaces ippp(4) and pppoe(4). Insufficient checking of options presented by the peer may cause writing of copies of the malicious input beyond the end of a buffer allocated for that purpose. This could cause kernel memory corruption. It is currently unclear if this issue could be exploited any further than denial of service. There are currently no known exploits for this issue. This vulnerability has been assigned CVE reference CVE-2006-4304. Technical Details ================= The critical code deals with parsing and acknowledging or rejecting PPP options at various levels, including LCP (line control protocol) options prior to authentication. These options are variable length, starting with an option identifier (1 byte), followed by a length (1 byte) and the content - depending on the option either fixed size or variable length. All options are packed together into a packet with an overall length. The option parser did not make sure an individual option's length does not exceed the overall length. To reject such options, the whole option is copied into a reject buffer, which is sized according to the overall length of the packet. If some option's individual length exceeded the overall lenght, the copy into the reject buffer would overflow the allocated length. While analyzing this problem and making the option parser more paranoid, a few similar issues have been discovered and fixed, and some errors in debug output (printing random bytes beyond the end of the content) have been fixed too. The attack is not routable, so attackers would need to dial in to an ISDN server offering PPP connections, or be using PPPoE on a shared ethernet segment (which is possible in some cable modem setups using PPPoE). This issue could also be exploited by an untrusted ISP. Solutions and Workarounds ========================= The pseudo-device pppoe is present in GENERIC kernels and the pseudo-device ippp is present in GENERIC_ISDN configurations (for which no precompiled kernel is provided). The system must have a network interface configured to use pppoe(4), or an ISDN interface configured to use ippp(4) in order to be vulnerable to this attack. For all NetBSD versions, you need to obtain fixed kernel sources, rebuild and install the new kernel, and reboot the system. 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 sys/net/if_spppsubr.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 ========= Pavel Cahyna for discovering the problem and reviewing fixes. Martin Husemann for the initial patches. Revision History ================ 2006-08-23 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 ftp://ftp.NetBSD.org/pub/NetBSD/security/advisories/NetBSD-SA2006-019.txt.asc Information about NetBSD and NetBSD security can be found at http://www.NetBSD.org/ and http://www.NetBSD.org/Security/. Copyright 2006, The NetBSD Foundation, Inc. All Rights Reserved. Redistribution permitted only in full, unmodified form. $NetBSD: NetBSD-SA2006-019.txt,v 1.2 2006/08/23 18:37:33 adrianp Exp $ -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (NetBSD) iQCVAwUBROygwz5Ru2/4N2IFAQKJUAP/dv734u/osRxdHQgwN/TIdCag963WMSv4 ghDB0A9JEi5R3gH3an0hoCM6U4US7tMp5WWFpOl6VJ2VjFmYnOwgIYQoRVJxFqm7 Y50pCAyEWQ8MSHjCPjmQhxKmxY2JL8tRF24FdKAm/rljSMnjp9qBFJgf6pDfhZv9 piLwssqhWms= =NW/a -----END PGP SIGNATURE-----