CVE-2009-4026: Race Condition

Published Nov 25, 2009
·
Updated

Lennert Buytenhek noticed that delBA handling in mac80211 was broken and has remotely triggerable problems, some of which are due to some code shuffling I did that ended up changing the order in which things were done -- this was

commit d75636ef9c1af224f1097941879d5a8db7cd04e5 Author: Johannes Berg <johannes> Date: Tue Feb 10 21:25:53 2009 +0100

mac80211: RX aggregation: clean up stop session

and other parts were already present in the original

commit d92684e66091c0f0101819619b315b4bb8b5bcc5 Author: Ron Rindjunsky <ron.rindjunsky> Date: Mon Jan 28 14:07:22 2008 +0200

mac80211: A-MPDU Tx add delBA from recipient support

The first problem is that I moved a BUGON before various checks -- thereby making it possible to hit. As the comment indicates, the BUGON can be removed since the ampduaction callback must already exist when the state is != IDLE.

The second problem isn't easily exploitable but there's a race condition due to unconditionally setting the state to OPERATIONAL when a delBA frame is received, even when no aggregation session was ever initiated. All the drivers accept stopping the session even then, but that opens a race window where crashes could happen before the driver accepts it. Right now, a WARNON may happen with non-HT drivers, while the race opens only for HT drivers.

For this case, there are two things necessary to fix it: 1) don't process spurious delBA frames, and be more careful about the session state; don't drop the lock

2) HT drivers need to be prepared to handle a session stop even before the session was really started -- this is true for all drivers (that support aggregation) but iwlwifi which can be fixed easily. The other HT drivers (ath9k and ar9170) are behaving properly already.

Other sources

The mac80211 subsystem in the Linux kernel before 2.6.32-rc8-next-20091201 allows remote attackers to cause a denial of service (panic) via a crafted Delete Block ACK (aka DELBA) packet, related to an erroneous "code shuffling patch."

Red Hat

Affected Software

335 affected components
Linux Linux kernel=2.6.27.29
Linux Linux kernel=2.6.27.12
Linux Linux kernel=2.6.20.6
Linux Linux kernel=2.6.20.9
Linux Linux kernel=2.6.11
Linux Linux kernel=2.6.23.4
Linux Linux kernel=2.6.22.15
Linux Linux kernel=2.6.16.16
Linux Linux kernel=2.6.18.7
Linux Linux kernel=2.6.17.12
Linux Linux kernel=2.6.16.39
Linux Linux kernel=2.6.27.3
Linux Linux kernel=2.6.31
Linux Linux kernel=2.6.29.3
Linux Linux kernel=2.6.21
Linux Linux kernel=2.6.16.9
Linux Linux kernel=2.6.31-rc4
Linux Linux kernel=2.6.17.9
Linux Linux kernel=2.6.32-rc1
Linux Linux kernel=2.6.11.2
Linux Linux kernel=2.6.27.1
Linux Linux kernel=2.6.5
Linux Linux kernel=2.6.32-rc5
Linux Linux kernel=2.6.15.3
Linux Linux kernel=2.6.27.30
Linux Linux kernel=2.6.11.10
Linux Linux kernel=2.6.24.7
Linux Linux kernel=2.6.1
Linux Linux kernel=2.6.16.43
Linux Linux kernel=2.6.16.6
Linux Linux kernel=2.6.31.3
Linux Linux kernel=2.6.16.8
Linux Linux kernel=2.6.20.13
Linux Linux kernel=2.6.22.4
Linux Linux kernel=2.6.14.7
Linux Linux kernel=2.6.27.18
Linux Linux kernel=2.6.13
Linux Linux kernel=2.6.17.2
Linux Linux kernel=2.6.13.3
Linux Linux kernel=2.6.23.13
Linux Linux kernel=2.6.11.8
Linux Linux kernel=2.6.24.2
Linux Linux kernel=2.6.26.5
Linux Linux kernel=2.6.16.34
Linux Linux kernel=2.6.25.20
Linux Linux kernel=2.6.27.21
Linux Linux kernel=2.6.23.7
Linux Linux kernel=2.6.17.8
Linux Linux kernel=2.6.14.4
Linux Linux kernel=2.6.14
Linux Linux kernel=2.6.25.5
Linux Linux kernel=2.6.17.4
Linux Linux kernel=2.6.16.18
Linux Linux kernel=2.6.27.27
Linux Linux kernel=2.6.17.14
Linux Linux kernel=2.6.10
Linux Linux kernel=2.6.23.8
Linux Linux kernel=2.6.16.45
Linux Linux kernel=2.6.22.12
Linux Linux kernel=2.6.25.18
Linux Linux kernel=2.6.14.3
Linux Linux kernel=2.6.29
Linux Linux kernel=2.6.18.3
Linux Linux kernel=2.6.16.37
Linux Linux kernel=2.6.11.6
Linux Linux kernel=2.6.16.48
Linux Linux kernel=2.6.11.11
Linux Linux kernel=2.6.16.13
Linux Linux kernel=2.6.27.10
Linux Linux kernel=2.6.3
Linux Linux kernel=2.6.31.4
Linux Linux kernel=2.6.21.6
Linux Linux kernel=2.6.26.6
Linux Linux kernel=2.6.22.1
Linux Linux kernel=2.6.27.17
Linux Linux kernel=2.6.16.4
Linux Linux kernel=2.6.23.16
Linux Linux kernel=2.6.31.6
Linux Linux kernel=2.6.17.3
Linux Linux kernel=2.6.24.1
Linux Linux kernel=2.6.20.5
Linux Linux kernel=2.6.22
Linux Linux kernel=2.6.28.4
Linux Linux kernel=2.6.4
Linux Linux kernel=2.6.27.16
Linux Linux kernel=2.6.26
Linux Linux kernel=2.6.16.15
Linux Linux kernel=2.6.27.20
Linux Linux kernel=2.6.15.6
Linux Linux kernel=2.6.26.3
Linux Linux kernel=2.6.20.16
Linux Linux kernel=2.6.15.1
Linux Linux kernel=2.6.11.5
Linux Linux kernel=2.6.28.2
Linux Linux kernel=2.6.25.9
Linux Linux kernel=2.6.19.3
Linux Linux kernel=2.6.27.4
Linux Linux kernel=2.6.27
Linux Linux kernel=2.6.19.4
Linux Linux kernel=2.6.25.13
Linux Linux kernel=2.6.28.5
Linux Linux kernel=2.6.19.1
Linux Linux kernel=2.6.18.4
Linux Linux kernel=2.6.16.1
Linux Linux kernel=2.6.18.1
Linux Linux kernel=2.6.20.21
Linux Linux kernel=2.6.31-rc1
Linux Linux kernel=2.6.27.13
Linux Linux kernel=2.6.23.1
Linux Linux kernel=2.6.2
Linux Linux kernel=2.6.14.5
Linux Linux kernel=2.6.13.2
Linux Linux kernel=2.6.17.5
Linux Linux kernel=2.6.18.5
Linux Linux kernel=2.6.21.1
Linux Linux kernel=2.6.16.32
Linux Linux kernel=2.6.13.5
Linux Linux kernel=2.6.16.57
Linux Linux kernel=2.6.16.49
Linux Linux kernel=2.6.25.3
Linux Linux kernel=2.6.17
Linux Linux kernel=2.6.24
Linux Linux kernel=2.6.31-rc6
Linux Linux kernel=2.6.31.1
Linux Linux kernel=2.6.19.2
Linux Linux kernel=2.6.26.2
Linux Linux kernel=2.6.21.4
Linux Linux kernel=2.6.16.11
Linux Linux kernel=2.6.20.17
Linux Linux kernel=2.6.16.14
Linux Linux kernel=2.6.20.12
Linux Linux kernel=2.6.16.25
Linux Linux kernel=2.6.27.15
Linux Linux kernel=2.6.16.21
Linux Linux kernel=2.6.16.33
Linux Linux kernel=2.6.30.7
Linux Linux kernel=2.6.8
Linux Linux kernel=2.6.16.28
Linux Linux kernel=2.6.17.10
Linux Linux kernel=2.6.21.5
Linux Linux kernel=2.6.25.15
Linux Linux kernel=2.6.14.1
Linux Linux kernel=2.6.23.15
Linux Linux kernel=2.6.16.23
Linux Linux kernel<=2.6.32
Linux Linux kernel=2.6.29.4
Linux Linux kernel=2.6.12.5
Linux Linux kernel=2.6.15.7
Linux Linux kernel=2.6.20
Linux Linux kernel=2.6.23.10
Linux Linux kernel=2.6.22.7
Linux Linux kernel=2.6.27.26
Linux Linux kernel=2.6.16.3
Linux Linux kernel=2.6.27.8
Linux Linux kernel=2.6.26.1
Linux Linux kernel=2.6.25.19
Linux Linux kernel=2.6.20.20
Linux Linux kernel=2.6.16.36
Linux Linux kernel=2.6.30.8
Linux Linux kernel=2.6.14.6
Linux Linux kernel=2.6.12.1
Linux Linux kernel=2.6.27.9
Linux Linux kernel=2.6.11.9
Linux Linux kernel=2.6.16.46
Linux Linux kernel=2.6.17.1
Linux Linux kernel=2.6.20.8
Linux Linux kernel=2.6.27.25
Linux Linux kernel=2.6.30.9
Linux Linux kernel=2.6.20.15
Linux Linux kernel=2.6.22.18
Linux Linux kernel=2.6.0
Linux Linux kernel=2.6.25.8
Linux Linux kernel=2.6.16.54
Linux Linux kernel=2.6.32-rc4
Linux Linux kernel=2.6.13.4
Linux Linux kernel=2.6.20.18
Linux Linux kernel=2.6.23.9
Linux Linux kernel=2.6.22.6
Linux Linux kernel=2.6.23.3
Linux Linux kernel=2.6.18.8
Linux Linux kernel=2.6.22.3
Linux Linux kernel=2.6.12.2
Linux Linux kernel=2.6.16.31
Linux Linux kernel=2.6.16.26
Linux Linux kernel=2.6.16.62
Linux Linux kernel=2.6.18.2
Linux Linux kernel=2.6.28.8
Linux Linux kernel=2.6.31-rc5
Linux Linux kernel=2.6.16.29
Linux Linux kernel=2.6.29.1
Linux Linux kernel=2.6.24.4
Linux Linux kernel=2.6.27.19
Linux Linux kernel=2.6.25.16
Linux Linux kernel=2.6.22.9
Linux Linux kernel=2.6.25.17
Linux Linux kernel=2.6.20.11
Linux Linux kernel=2.6.19
Linux Linux kernel=2.6.20.3
Linux Linux kernel=2.6.16
Linux Linux kernel=2.6.30.4
Linux Linux kernel=2.6.28.3
Linux Linux kernel=2.6.22.13
Linux Linux kernel=2.6.19.7
Linux Linux kernel=2.6.21.3
Linux Linux kernel=2.6.27.28
Linux Linux kernel=2.6.24.5
Linux Linux kernel=2.6.16.51
Linux Linux kernel=2.6.15.2
Linux Linux kernel=2.6.20.19
Linux Linux kernel=2.6.16.22
Linux Linux kernel=2.6.22.17
Linux Linux kernel=2.6.16.58
Linux Linux kernel=2.6.16.40
Linux Linux kernel=2.6.16.47
Linux Linux kernel=2.6.16.42
Linux Linux kernel=2.6.27.22
Linux Linux kernel=2.6.23.14
Linux Linux kernel=2.6.17.11
Linux Linux kernel=2.6.16.10
Linux Linux kernel=2.6.12.4
Linux Linux kernel=2.6.16.41
Linux Linux kernel=2.6.16.52
Linux Linux kernel=2.6.11.3
Linux Linux kernel=2.6.20.10
Linux Linux kernel=2.6.16.24
Linux Linux kernel=2.6.31-rc7
Linux Linux kernel=2.6.25.10
Linux Linux kernel=2.6.22.11
Linux Linux kernel=2.6.16.55
Linux Linux kernel=2.6.23
Linux Linux kernel=2.6.12.3
Linux Linux kernel=2.6.22.10
Linux Linux kernel=2.6.29.6
Linux Linux kernel=2.6.23.17
Linux Linux kernel=2.6.27.5
Linux Linux kernel=2.6.23.2
Linux Linux kernel=2.6.25.1
Linux Linux kernel=2.6.25.4
Linux Linux kernel=2.6.28.9
Linux Linux kernel=2.6.30.2
Linux Linux kernel=2.6.7
Linux Linux kernel=2.6.21.7
Linux Linux kernel=2.6.30.6
Linux Linux kernel=2.6.16.30
Linux Linux kernel=2.6.21.2
Linux Linux kernel=2.6.15.4
Linux Linux kernel=2.6.27.7
Linux Linux kernel=2.6.16.59
Linux Linux kernel=2.6.30.1
Linux Linux kernel=2.6.16.38
Linux Linux kernel=2.6.16.17
Linux Linux kernel=2.6.26.8
Linux Linux kernel=2.6.20.2
Linux Linux kernel=2.6.28.6
Linux Linux kernel=2.6.16.12
Linux Linux kernel=2.6.31.5
Linux Linux kernel=2.6.16.27
Linux Linux kernel=2.6.16.53
Linux Linux kernel=2.6.28.7
Linux Linux kernel=2.6.12.6
Linux Linux kernel=2.6.31-rc8
Linux Linux kernel=2.6.17.7
Linux Linux kernel=2.6.20.1
Linux Linux kernel=2.6.11.7
Linux Linux kernel=2.6.16.2
Linux Linux kernel=2.6.24.6
Linux Linux kernel=2.6.31-rc3
Linux Linux kernel=2.6.18.6
Linux Linux kernel=2.6.15
Linux Linux kernel=2.6.16.44
Linux Linux kernel=2.6.23.12
Linux Linux kernel=2.6.16.35
Linux Linux kernel=2.6.19.6
Linux Linux kernel=2.6.16.50
Linux Linux kernel=2.6.25.11
Linux Linux kernel=2.6.27.31
Linux Linux kernel=2.6.29.2
Linux Linux kernel=2.6.23.5
Linux Linux kernel=2.6.22.8
Linux Linux kernel=2.6.14.2
Linux Linux kernel=2.6.16.61
Linux Linux kernel=2.6.31-rc2
Linux Linux kernel=2.6.19.5
Linux Linux kernel=2.6.18
Linux Linux kernel=2.6.27.24
Linux Linux kernel=2.6.20.4
Linux Linux kernel=2.6.17.6
Linux Linux kernel=2.6.23.6
Linux Linux kernel=2.6.27.2
Linux Linux kernel=2.6.16.7
Linux Linux kernel=2.6.17.13
Linux Linux kernel=2.6.16.60
Linux Linux kernel=2.6.22.2
Linux Linux kernel=2.6.8.1
Linux Linux kernel=2.6.27.11
Linux Linux kernel=2.6.16.56
Linux Linux kernel=2.6.22.19
Linux Linux kernel=2.6.24.3
Linux Linux kernel=2.6.31.2
Linux Linux kernel=2.6.25
Linux Linux kernel=2.6.20.14
Linux Linux kernel=2.6.25.2
Linux Linux kernel=2.6.22.5
Linux Linux kernel=2.6.32-rc3
Linux Linux kernel=2.6.25.7
Linux Linux kernel=2.6.30.5
Linux Linux kernel=2.6.25.14
Linux Linux kernel=2.6.20.7
Linux Linux kernel=2.6.28.1
Linux Linux kernel=2.6.16.5
Linux Linux kernel=2.6.30
Linux Linux kernel=2.6.11.4
Linux Linux kernel=2.6.26.4
Linux Linux kernel=2.6.25.12
Linux Linux kernel=2.6.16.19
Linux Linux kernel=2.6.27.6
Linux Linux kernel=2.6.26.7
Linux Linux kernel=2.6.25.6
Linux Linux kernel=2.6.11.12
Linux Linux kernel=2.6.16.20
Linux Linux kernel=2.6.15.5
Linux Linux kernel=2.6.28.10
Linux Linux kernel=2.6.22.16
Linux Linux kernel=2.6.11.1
Linux Linux kernel=2.6.30.3
Linux Linux kernel=2.6.9
Linux Linux kernel=2.6.27.23
Linux Linux kernel=2.6.13.1
Linux Linux kernel=2.6.23.11
Linux Linux kernel=2.6.27.14
Linux Linux kernel=2.6.28
Linux Linux kernel=2.6.29.5
Linux Linux kernel=2.6.22.14
Linux Linux kernel=2.6.6
Linux Linux kernel=2.6.12

Event History

Nov 25, 2009
Data Sourced
via Red Hat·03:28 AM
DescriptionSeverityAffected Software
Nov 30, 2009
CVE Published
via Red Hat·12:00 AM
Data Sourced
via Red Hat·12:00 AM
RemedyWeakness
Dec 2, 2009
CVE Published
via MITRE·04:00 PM
Data Sourced
via MITRE·04:00 PM
Description

Frequently Asked Questions

1

What is the severity of CVE-2009-4026?

CVE-2009-4026 has a medium severity level as it allows remote attackers to cause a denial of service in affected Linux kernel versions.

2

How do I fix CVE-2009-4026?

To fix CVE-2009-4026, upgrade to a patched version of the Linux kernel that is not vulnerable to this issue.

3

What systems are affected by CVE-2009-4026?

Systems running versions of the Linux kernel prior to 2.6.32-rc8-next-20091201 are susceptible to CVE-2009-4026.

4

What type of attack does CVE-2009-4026 involve?

CVE-2009-4026 involves a denial of service attack that can be initiated via a crafted Delete Block ACK (DELBA) packet.

5

Is CVE-2009-4026 still a risk today?

CVE-2009-4026 is less of a risk today if systems have been updated to later versions of the Linux kernel.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203