-----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-S
A2006-019.txt.asc
Information about NetBSD and NetBSD security can be found at
http://www.NetBSD.org/
and http://www.NetBSD.or
g/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/TIdCag963W
MSv4
ghDB0A9JEi5R3gH3an0hoCM6U4US7tMp5WWFpOl6VJ2VjFmYnOwgIYQoRVJx
Fqm7
Y50pCAyEWQ8MSHjCPjmQhxKmxY2JL8tRF24FdKAm/rljSMnjp9qBFJgf6pDf
hZv9
piLwssqhWms=
=NW/a
-----END PGP SIGNATURE-----
|