Code Execution Bug In Broadcom Wi-Fi Driver
2U*U2 writes to mention an EWeek article about an entry in the Month of Kernel Bugs. John Ellch has discovered a critical vulnerability in the Broadcom wireless driver: a driver used in machines from HP, Dell, Gateway, and eMachines. From the article: "[The bug] is a stack-based buffer overflow in the Broadcom BCMWL5.SYS wireless device driver that could be exploited by attackers to take complete control of a Wi-Fi-enabled laptop. The vulnerability is caused by improper handling of 802.11 probe responses containing a long SSID field and can lead to arbitrary kernel-mode code execution. The volunteer ZERT (Zero Day Emergency Response Team) warns that the flaw could be exploited wirelessly if a vulnerable machine is within range of the attacker."
Is this the same airborne virus that is attacking the skinjobs in Battlestar galactica?
If its attacking base stations, maybe we can get rid of the rest of the skinjobs and toasters while we are at it.
liqbase
Thanks for mentioning the affected operating system(s). Oh wait, you didn't...
Here, I'll help:
Code Execution Bug in Broadcom Wi-Fi Windows Driver
Checklist for today:
"Hegelians, who love a synthesis, will probably conclude that he wears a wig." - Bertrand Russell
...the BlackHat presentation this Johnny Cache gave was not just FUD, he really did find bugs in wireless drivers.
I mean, it's bad enough that people always talk about "Computer viruses" instead of "Windows viruses" and so on, but come on, can we please include *some* information in the post itself?
Admittedly, the article to which this newspost links also doesn't mention this until the third or fourth paragraph or so.
At first I thought the article was about the Linux kernel, in that case I would have wanted a (global) list of the OS's/versions affected as well, because my laptop might have been vulnerable in that case!
So, I assume it's just Windows XP SP2 (and probably older SP's), or other versions as well?
Every expression is true, for a given value of 'true'
Quote
"Microsoft's Windows operating system is exploitable without the existence of an access point or any interaction from the user.
The card's background scan of available wireless networks triggers the flaw," the group said.
eWEEK.com Special Report: Mac Security"
The bug was first discovered by wireless security guru Jon "Johnny Cache" Ellch, the researcher who was embroiled in a controversy with Apple over similar bugs in the Wi-Fi driver that ships with the Mac OS X.
Checklist for today:
1. Eat
2. Rant on Slashdot
3. Change SSID from "omgomgomg" to "omgomgomgomgomgomgomg"
4. Wait for the muppets to connect.
5. Profit !
I was tempted by wireless, but given I don't have a laptop, I grabbed a couple of these twenty quid each Homeplug devices which plug into a mains socket and send data around the house's main circuit. It not be as 'go anywhere' as Wireless, but in the light of this I guess it's more secure.
You know, the ones that supposedly 'home home' using any available channel in case they're stolen.
:-)
The feature is supposed to be impossible to turn off (for obvious reasons).
How long before someone finds a bug ion one of those? Won't that be fun, a vulnerability you cannot turn off
They either 1) dont run static analysers or 2) run them but punted the bug
:)
Which is it Broadcom? Either way it is neglegance. Im tired of developers spouting hot air about being Accountable, Responsible and Reliable etc blah blah and especially practicing good engineering and hearing design patterns yawn. I hear it every day, I worked as a dev and left it as its the same old shit every day day in day out, same for test.
We have tools, run them, we have practices, use them.
If those are not good enough, retool and reorg.
Oh wait, its business not engineering, sorry my bad
Engineering is a blue collar job today, it should not be called "science" it is not science. Wise up.
Don't forget about people using NDISWrapper, which is the only way to get such cards working on Linux at all unless someone has written a driver recently.
why should apple be the only manufacturer who bought buggy drivers ;)
http://roman.studio78.at/
Are you using Ndiswrapper? If so, you are using the Windows driver, and your machine may still be vulnerable, although it's likely that attacks designed to work against Windows will just crash your machine.
Dammit, why is it so hard to write secure Wi-fi drivers?
Does my "reverse engineered" linux driver have this bug. I guess not. Why is it that a bunch of people who don't get paid come up with bug-free solutions? I guess, either they love their job very very much, or its just the development philosophy or both :)
I think I've seen the driver in the list.
Dont quote me. I dont have a Broadcom wireless.
Anyway the flaw wouldnt affect Linux systems. Why? Different kernel.
There's a discussion about having user space device drivers for usb wireless sticks and some other drivers as well for linux kernel. I hope this kind of attack vectors encourage kernel developers to go in this way. Keeping stuff in user space as much as it allows would again let Linux to be secure-by-design once again. Currently couple of tools (like wpa_supplicant) running in user space, and I wonder their situation in Windows kernel. If they are not (which I guess they are not -because microsoft is known to be putting huge code into kernel level) then that's a huge problem from security perspective.
allegedly mythical (No it's not!) (Yes it is!) (No it's not!) Airport exploit for Macs?
I still haven't been able to figure out if they've demonstrated a real vulnerability or not...
Clear, Dark Skies
There is such a driver in the most recent Linux kernels, but it still uses firmware extracted from Broadcom Windows drivers. So if the bug is in the firmware, it could even affect broadcom native linux drivers.
This is slashdot, you are supposed to guess the OS from the filename of the device driver.
FRA: STFU GTFO
SANS has a concise summary:
0 1b45094b0425b829255e39eb2f8d2
6 .html
http://isc.sans.org/diary.php?storyid=1845&isc=2e
Or look at the Month of Kernel Bugs site itself:
http://projects.info-pull.com/mokb/MOKB-11-11-200
Why do compilers put buffers on the subroutine-and-return stack? Why not have the compiler use a separate stack for composite data such as buffers, arrays, variable-size data, and all similar stuff, whenever the programmer puts such data on the stack? Wouldn't that stop stack-based code injection?
The added cost in processing time should be quite negligile, as long as simple, fixed-size data, such as integers, are still on the main stack.
Terrorists can't threaten a country's freedom and democracy. Only lawmakers and voters can do that.
George Ou at ZDNet has published a procedure on how to use the Linksys drivers with devices from other vendors such as Dell and HP. Of course this is not an ideal solution but if it works it's better than nothing.
-------
Warning: Slashdot may contain traces of nuts.
> Broadcom users on Linux should really be using the bcm43xx kernel module by now.
Out of the table of ten global "chip family id's" listed here, only 3 are currently listed as supported, the others are at best "unstable".
And personally, I didn't manage to get a BCM4318 "Air Force One"-based card (no, I didn't buy it, it was "inherited") working with the native module (Ubuntu Dapper). Sigh. Guess it's time to fish out the long cables until the Windows drivers get patched.
It seems that the user who controls the wireless card will have access to the wireless card, and thus in this case you could potentially have a wireless virus.
In some cases it could be that the user would have access to all network cards, which would mean that from a virus/spam sending/worm point of view the computer will be usefull to the hacker, even if it is otherwise secure.
Maybe keyloggers will be prevented, and writing to the disc, i.e. malware surviving the next reboot. But in general it seems to me that in this case not much is gained from moving the driver to user space.
How does this affect the native bcm43xx linux driver, since the original firmware is used?
Thanks for any explanation.
By the way, what is this guy's name? I've seen it published as "Erlich" and "Elich" before, and now slashdot says it's Ellch. One thing's for certain. Anybody who calls themself "Johnny Cache" must be a total dick.
... and then they built the supercollider.
C is the source of all these problems. Please stop using it.
= 16723899
(and please I do not want to hear 'but Linux is so safe', because it is not).
Link to previous post:
http://it.slashdot.org/comments.pl?sid=204783&cid
>C is the source of all these problems. Please stop using it.
Thats like saying guns kill people.
Stupid people are the problem, not the tools.
Open Source Drum Kit, LPLC deve board - mjhdesigns.com
The FreeBSD equivalent of NDISwrapper is "Project Evil" if anyone's wondering...
Here's to the crazy ones
Are they affected? Ndiswrapper directly uses routines from BCMWL5.SYS so I suppose it is also affected and the bcm43xx module needs the firmware from it so maybe it is also affected. Any idea??
As the number of cases of these driver-flaw attacks mounts, I think it is fair to say the OpenBSD stance on proprietary driver 'blobs' has been fully vindicated. When they took this stance, a fair number of Slashdot posters were publically knocking them as unrealistic-paranoid-idealists. Well here you have it -- deep-fried crow ... yum.
In reality, C's behavior (and a lot of other languages, really) are governed by behaviors within the CPU hardware
they were originally intended for. In the case of C, the machines in question only had one hardware stack, so they
intermingled the subroutine return state with the parameters, etc. for speed's sake. Implementing a second stack
in software would have been problematic because it would have added extra performance issues and ate into the
register store (you want to probably reserve a register for the parameter pointer...). Since most of the Algol derived
languages (C's in that bunch...) do this very thing, there's been no need, no desire to change the underlying machine
that the language sees, nor has any of the X86 vendors had a reason to "fix" the problem of register store space.
While it's syntax is difficult to initially grasp (esp. if you've been doing Algol based languages...), Forth's
machine model is one like you suggested. Obviously, on machines that it has the ability to execute operations
against the contents of the artificial data stack or where it actually HAS two data stacks, the code excels in
speed. Comparable to C or better than C without as many of the risks (though it WILL cut your throat in other
ways- just not that one...). Otherwise, while it makes for very compact code, it does so at the expense of some
performance on machines without such support. In those cases, it's best is just at C's peak performance on the
same task and something like 10-20% slower otherwise. It's still around because it can fit a high-level
programming solution into the smallest space in memory possible without overly sacrificing speed at the same
time- obviously a good thing in an embedded system.
In the end, it's more about how careful you code things. Internally, when you know what's going to be passed in
and can control things, it's probably "okay" to not check for potential buffer overruns. It's not okay otherwise.
Because it's a major performance hit, I know why someone would be inclined to not do any checks or to overdo
the avoidance of doing them- it doesn't make it right, but I understand the why behind it and the problem in question.
I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
...about wanting to jab a lit cigarette into the eye of all those HP, Dell, Gateway, and eMachines users? Are you feeling okay, John?
Oh, right... they're not smug about having secure systems-- they're accustomed to desperately applying patches, like a guy in a leaky life raft.
If anything, this demonstrates that OS X really is more secure than Windows: Why?
Exploiting wireless bug on OS X machine: you can cause a kernel panic and force the user to reboot.
Exploiting wireless bug on Windows machine: total pwnage of Windows machine.
why is it that these keep being the single biggest remote security problem?
comment first, facts later. http://chem.tufts.edu/AnswersInScience/RelativityofWrong.htm
People who use the "it's just a tool!" argument are unfathomably arrogant in this regard. Oh yeah? Guns kill people? Then why put a safety on a gun? Would you advocate for leaving a gun out at all times, or keeping it locked up someplace? Yeah, guns kill people...but it's pure idiocy to intentionally deprive oneself of safety. There are a dozen languages out there that are just as fast as C and much more secure. Security doesn't always cost speed - sometimes a language is just better designed for security over other things.
You don't have to be stupid to screw up in C, that's the problem. The only way to be safe is to write your own string handling functions and ban all others, in which case you've changed the language: you've made it so fascist that it's not-C.
Does my "reverse engineered" linux driver have this bug?
Probably not. If it does, it will be fixed soon.
Why is it that a bunch of people who don't get paid come up with bug-free solutions?
It gets fixed because it's free and therefore it can be. Non free software writers put up with NDA's and code they can't share even if they wanted to. Their code is owned and so their effort and good will is likewise owned. Free software writers are free to share their tools as well as their improvements, so it's much easier to help your friends.
By the way, there's no law against being paid to write free software. With all the tools available, free software writers can get the job done faster and for less money. That's something worth paying for and many people do. The vast majority of software jobs are in house, so GPL distribution conditions never take effect and are not an issue. It would be better to share the work with others if you can, but you don't have to and often can't under those circumstances and there is therefore no difference at all between your choice of tools besides the lower cost of the free tools.
Friends don't help friends install M$ junk.
Broadcom users on Linux should really be using the bcm43xx kernel module by now.
I tried (with Fedora Core 5 and 6, on my HP Pavillion zv6000 with built-in AirForce One), but after many hours of research and tinkering, I gave up and went with NDISWrapper. I did manage to get to a state where it would work for about 15-20 minutes, and then quit. If you know of a foolproof way to get the native module/driver to work, please enlighten me.
-Mike
I'm sorry; I don't know what I was thinking!
We've come a long way in the past 30 years in compiler theory and language design. We can do better than C without losing speed. Or even use a whole OS in a restricted language. You can do compile-time checking of your pointers, as Spin proves.
C is, essentially, portable assembly language. I love it -- it's one of the languages I know the best, and I continue to work in it. However, I'd love to see the use of Cyclone or special compile-time checked languages for the essentials. I think most device drivers could be easily rewritten to be bullet-proof (stack overflow) this way, and such languages are easier to do state machine analysis on (since most device drivers are simple pieces of software that control the state of the hardware). Provably correct operating system design is not a theory, but no one seems to be interested.
--
Internet Explorer (n): Another bug -- that is, a feature that can't be turned off -- in Windows.
You get it now? You have to read using the 'editor' name as context. =)
The only native Broadcom drivers for Linux are for non-wireless devices (and this problem is with their wireless cards).
Their day one bug was an exploit of the old Apple Airport - Broadcom - wireless drivers. This day eleven exploit is of Broadcom's Windows wireless drivers. I realize the OS has changed, but is this more or less the same exploit? Or is this leveraging some issue that's actually in the chipset?
#DeleteChrome
At least not for my HP pavilion laptop. I have to use ndiswrapper.
Same here with Linksys wpc54gs. With lots of tweaking I was only able to get bcm43xx on Dapper work with WPA for a short while. After a reboot, I always had to go through the same tweaks again. I upgraded to Ubuntu Edgy Eft and now Wi-Fi works reliably.
Question: Does anyone know if this affects the 64-bit driver? I have the firmware extracted from BCMWL564.SYS, and I'm not too concerned, but you never know... I guess I'd better be wary about booting into XP (32-bit).
No. There is a new one for broadcom wireless. It's called bcm43xx
Possibally yes but nothing will happen if a attack wasnt specifically targetetted at Linux machines.
The BCM4318 in native mode ie using the linux driver will only work at reduced speed and transmit power.
currently I think its officially listed as unsupported (11Mbs and 18Dbm)in ubuntu. Using ndiswrapper the driver forces the card from mode0 to mode2 and the card works reliably at 54Mbs and transmits at 25Dbm.
whats mode0 whats mode2 you could ask broadcom but they don't answer. Personally I would boycott Broadcom products and go for a more linux friendly companys chipset such as ralink, unfortunately with laptops its harder to avoid broadcom the wireless is minipci but the bios locks out non hp approved cards however
http://stachon.webpark.cz/ipw-eeprom.html might help with that.
Blarney Quality Restaurant, Plants
It's been months and months (more than a year, as I recall) since I ran the NDISWrapper driver for the wireless interface in my HP laptop. When using the native driver (which I have not had a lick of trouble with since it got included in the stock kernels those months and months ago) I can do things, like run Kismet, or change the SSID without rebooting, that were impossible, or at least appeared impossible, with NDISWrapper.
I personally had the bcm43xx drivers cause system instability with two very different machines and different broadcom chipsets. Going back to ndis made things stable again.
But Kudos to the bcm43xx developers, I hope they get this cracked. although in the future, I'll make more of an effort to steer clear of Broadcom, both because of their lack of co-operation in supporting Linux AND this recent news.
Broadcom can join Canon on my shit list.
...when programmers FINALLY learn to stop producing buffer overflow conditions?
How many years now have they known this is a no-no?
When the hell are programmers going to be adequately trained in proper coding procedures?
When the hell are humans going to stop taking pointless shortcuts contradictory to their end goals? Or start using computers to CHECK FOR their stupid mistakes instead of using them to MAKE their stupid mistakes?
I've just switched back to Opera 9 because Firefox 2.0 is so riddled with stupid bugs - not to mention a new security problem just about every week. It was like using IE 5.0.
Get your heads out of your asses, geeks.
Richard Steven Hack - This sig is TOO GODDAMN SHORT TO DO ANYTHING USEFUL WITH! MORONS!
Higher level tools might be great for the kids of today, writing social web sites.
The kids of today however don't have a clue about the programs on which this internet is based on. The routers, the switches, the firewalls. Do you thing they are all written in C++ or Java?
C powers this world. You just don't know it.
Open Source Drum Kit, LPLC deve board - mjhdesigns.com
Is the threat still in effect if the broadcom driver is used under linux with ndiswrapper?
I believe Microsoft has an optional hardware upgrade available for download on Windows Update.
i'd just like to say that this is a great idea. That is all :P
http://www.xkcd.com/354/
This driver is a 64Bit driver so its only effects Windows 2003 64Bit and and Windows XP 64Bit (which is just win 2003 with XP UI) and maybe Linux 64 bit that uses it if the NDIS windows wrappers work on 64bit. but i'm not 100% sure on that.
32 bit os's with broadcom chipsets should be using a different driver anyways.
I'm using the 64-bit Windows driver with ndiswrapper on Mandriva 2007 x86_64, does anyone know if I'm affected?
Pre-canned Evolution Links for all those Slashdot holy wars.