CVE-2009-4537: Input Validation
Description of problem: This was disclosed at 26c3.
Fabian also mentioned the fix for CVE-2009-1389 regarding the r8169 driver introduces a similar security problem as this: http://git.kernel.org/linus/fdd7b4c3302c93f6833e338903ea77245eb510b4
- RTLW16(RxMaxSize, 16383); + RTLW16(RxMaxSize, rxbufsz);
is actually a revert of this: http://git.kernel.org/linus/126fa4b9ca5d9d7cb7d46f779ad3bd3631ca387c
- / For gigabit rtl8169, MTU + header + CRC + VLAN / - RTLW16(RxMaxSize, tp->rxbufsz); + / Low hurts. Let's disable the filtering. / + RTLW16(RxMaxSize, 16383);
The accompanying comment for the original commit (126fa):
The size of the incoming frame is not correctly checked.
The RxMaxSize register (0xDA) does not work as expected and incoming frames whose size exceeds the MTU actually end spanning multiple descriptors. The first Rx descriptor contains the size of the whole frame (or some garbage in its place). The driver does not expect something above the space allocated to the current skb and crashes loudly when it issues a skbput.
The fix contains two parts: - disable hardware Rx size filtering: so far it only proved to be able to trigger some new fancy errors; [...]
warned of issues when using hardware Rx size filtering and Fabian claimed to be able to trigger something similar to the e1000 bug when using a specific packet size.
References: http://events.ccc.de/congress/2009/Fahrplan//events/3596.en.html http://blog.c22.cc/2009/12/27/26c3-cat-procsysnetipv4fuckups/ http://twitter.com/dakami/statuses/7104238406 https://bugzilla.redhat.com/CVE-2009-1389 http://www.securityfocus.com/bid/37521
Other sources
drivers/net/r8169.c in the r8169 driver in the Linux kernel 2.6.32.3 and earlier does not properly check the size of an Ethernet frame that exceeds the MTU, which allows remote attackers to (1) cause a denial of service (temporary network outage) via a packet with a crafted size, in conjunction with certain packets containing A characters and certain packets containing E characters; or (2) cause a denial of service (system crash) via a packet with a crafted size, in conjunction with certain packets containing '\0' characters, related to the value of the status register and erroneous behavior associated with the RxMaxSize register. NOTE: this vulnerability exists because of an incorrect fix for CVE-2009-1389.
— Red Hat
Affected Software
Event History
Parent advisories
This vulnerability appears in the following advisories.
Frequently Asked Questions
What is the severity of CVE-2009-4537?
CVE-2009-4537 has a severity rating that indicates it can lead to a denial of service due to improper handling of Ethernet frames.
How do I fix CVE-2009-4537?
To fix CVE-2009-4537, update your kernel to versions above 2.6.32.3 or apply the specific patches available from your Linux distribution.
What systems are affected by CVE-2009-4537?
CVE-2009-4537 affects Linux kernel versions 2.6.32.3 and earlier, impacting various distributions including Red Hat and Debian.
What type of attack does CVE-2009-4537 facilitate?
CVE-2009-4537 facilitates denial of service attacks through crafted packets that exceed the maximum transmission unit (MTU).
Can CVE-2009-4537 be exploited remotely?
Yes, CVE-2009-4537 can be exploited by remote attackers sending specially crafted Ethernet frames to the vulnerable system.