Firmware Vulnerability In Popular Wi-Fi Chipset Affects Laptops, Smartphones, Routers, Gaming Devices (zdnet.com)
Embedi security researcher Denis Selianin has discovered a vulnerability affecting the firmware of a popular Wi-Fi chipset deployed in a wide range of devices, such as laptops, smartphones, gaming rigs, routers, and Internet of Things (IoT) devices. According to Selianin, the vulnerability impacts ThreadX, a real-time operating system that is used as firmware for billions of devices. ZDNet reports: In a report published today, Selianin described how someone could exploit the ThreadX firmware installed on a Marvell Avastar 88W8897 wireless chipset to execute malicious code without any user interaction. The researcher chose this WiFi SoC (system-on-a-chip) because this is one of the most popular WiFi chipsets on the market, being deployed with devices such as Sony PlayStation 4, Xbox One, Microsoft Surface laptops, Samsung Chromebooks, Samsung Galaxy J1 smartphones, and Valve SteamLink cast devices, just to name a few.
"I've managed to identify ~4 total memory corruption issues in some parts of the firmware," said Selianin. "One of the discovered vulnerabilities was a special case of ThreadX block pool overflow. This vulnerability can be triggered without user interaction during the scanning for available networks." The researcher says the firmware function to scan for new WiFi networks launches automatically every five minutes, making exploitation trivial. All an attacker has to do is send malformed WiFi packets to any device with a Marvell Avastar WiFi chipset and wait until the function launches, to execute malicious code and take over the device. Selianin says he also "identified two methods of exploiting this technique, one that is specific to Marvell's own implementation of the ThreadX firmware, and one that is generic and can be applied to any ThreadX-based firmware, which, according to the ThreatX homepage, could impact as much as 6.2 billion devices," the report says. Patches are reportedly being worked on.
"I've managed to identify ~4 total memory corruption issues in some parts of the firmware," said Selianin. "One of the discovered vulnerabilities was a special case of ThreadX block pool overflow. This vulnerability can be triggered without user interaction during the scanning for available networks." The researcher says the firmware function to scan for new WiFi networks launches automatically every five minutes, making exploitation trivial. All an attacker has to do is send malformed WiFi packets to any device with a Marvell Avastar WiFi chipset and wait until the function launches, to execute malicious code and take over the device. Selianin says he also "identified two methods of exploiting this technique, one that is specific to Marvell's own implementation of the ThreadX firmware, and one that is generic and can be applied to any ThreadX-based firmware, which, according to the ThreatX homepage, could impact as much as 6.2 billion devices," the report says. Patches are reportedly being worked on.
Maybe you should have read the summary?
this is one of the most popular WiFi chipsets on the market, being deployed with devices such as Sony PlayStation 4, Xbox One
That alone is more than 100 million devices.
Hint: this means the manufacturers using it are embarrassed to advertise it on the box.
Enjoy some of the security of ethernet.
Domestic spying is now "Benign Information Gathering"
Patches are reportedly being worked on.
Since when are any of these consumer devices' firmware actually upgradable??
Maybe we need to have manufacturers buy everyone new devices so they'd actually learn their lesson.
Take the cheese to sickbay, the doctor should see it as soon as possible - B'Elanna Torres, "Learning Curve"
https://rtos.com/news/express-...
Once again proving, the only way to safely use C is by only hiring 200 IQ coders who have been developing firmware for 30 years and have never created an exploitable bug in their entire life. Like all the developers who will argue me on this ... there's just not enough of you guys to go around though.
So by this logic Java is also not safe for anyone to use either, no?. You didn't forget that the massive Equifax hack was due to a remote code execution vulnerability in Apache Struts which is written entirely in Java, right?
https://blogs.apache.org/found...
Oh and even Heartbleed can claim but a small fraction of the damage that the Struts bug did with the breadth of the Equifax breach.
If I'm reading this correctly, the blame for these exploits is being squarely placed on this ThreadX RTOS thing.
Well, you signed up for proprietary operating system, this is what you get when you do that. This is the downside of using code you can't look at and assess yourself, or have it assessed by professionals. You just have to take their word for it that it's security, stable and good. Obviously, this particular proprietary operating system is not secure.
Must say, I'm mildly surprised. Checking out ThreadX RTOS website, they seem to have all sorts of fancy certifications which I have no idea what mean, but surely they mean something? Just not secure and exploit free operating system?
Type errors are unavoidable, buffer overflows are unavoidable in (MISRA) C.
Certified by SGS-TUV Saar for use in safety-critical systems and achieved EAL4+ Common Criteria security certification. Oops. There goes your pacemaker.
[quote]Type errors are unavoidable,[/quote]
And yet in the real world they aren't as numerous CVEs can attest. I can also find numerous other causes of security vulnerabilities due to SQL injection, etc. as well. All in software supposedly written by the cream of the crop of these "safe" languages.
It's almost as if the entire base of your argument is bullshit.
You seem to really be obsessing over this issue.
It's like arguing that cars shouldn't have safety belts and airbags, since you can never rule out the chance that you might die of a heart attack wile you're driving.
Realtek is the lowest end. Those are the NICs you find on eBay or Amazon for a few bucks that usually have a name randomly generated from a syllable table. You'll also find them rebranded in non-dedicated-IT physical stores for $30. They shift a lot of them because they are the cheapest of the cheap and practically every no-name device has a little RTL crab in it somewhere. Many cheapo all-in-one motherboards have them too and a handful of other integrated devices.
Marvell are still cheap and cheerful but a lot more popular for integrated devices. Marvell not so much for NICs, though I have seen a few. They're a lot more popular in cheap APs and other network devices than RTL as well. A lot more integrated devices are sold these days than discrete NICs.
Atheros, Broadcom and Intel is where midrange (or the low end of enterprise), starts. Atheros and Broadcom do also have a fair representation in the consumer space, but they're seen in the high end enthusiast stuff rather than budget conscious, high volume garbage.
Oh yeah, SQL has been nearly as destructive as C ... no argument there. The native use of it in web front ends makes certain types of disastrous errors very easy to make.
> they seem to have all sorts of fancy certifications which I have no idea what mean, but surely they mean something?
Mostly they mean that you can depend on it running perfectly reliably, so you can trust your $300 million space probe to ThreadX.
You may have also noticed ThreadX takes 2KB of memory.
When your system requirements are the kind of thing ThreadX is designed for, you don't have a ton of options. Maybe three will be worth considering, and likely one will be the best fit, just on technical considerations.
You can interpret data in an incoming packet as code for a domain language in any programming language. There is no language feature which caused this and for which alternatives have been actively researched for decades but held back by curmudgeons.
The same can not be said for buffer overflows.
Or to try and jailbreak the console.
I know, but it is another opportunity to control an interface to the processor.
There was another console that was defeated by a faulty USB stack.
Think of all the fun someone could have being able to send whatever they want into the wireless stack of the main processor after it has been booted.
You're not giving some very smart console hackers credit!
It makes me wonder if they really needed an RTOS for this. In my experience often the RTOS is just a crutch for programmers who don't know how to survive without an OS. It's actually needed for what they want to do, and in fact tends to just make things worse.
Of course there are times when you want one. Stuff that takes a long time and which you can't easily break up into smaller steps, which wifi stuff seems like it might be a good fit for.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
the only way to safely use C
I know. Our firmware should be coded by highschoolers using Rust. Then it'll be 100% bug free and safe.
Abstraction adds safety. The closer to your hardware you get the more complicated and quirky edge cases you need to handle and debug. The library principle applies here too. e.g. you don't want every idiot reinventing openssl the end result would be very bad. Instead by abstracting yourself and building on the platform of others you have not only reduced the chance of bugs in your code, you've increased consistency between your products and platforms while also dramatically simplifying the process of bug fixing.
That's it.
Sent as ripples into the electromagnetic field. No single photon has been harmed in the process.
Firmware relevant to your well-being will get coded by the equivalent of those highschoolers any way. You celebrate the continued use of C and giving those kids all the tools to harm you with. I think the necessity for replacing C in most fields should have been clear to the industry since before the current crop of highschoolers was born.
Take away people's guns and they'll just stab you. Your notion that if avoid writing in C (especially in low level systems like this) everything will be better is just stupid.
Then proceeds to only list a few devices using that chipset, not a complete list.
What the fuck are we supposed to do with this information?
#DeleteFacebook
Guess what chipset the newest HP printers are using?
I've abandoned my search for truth; now I'm just looking for some useful delusions.
That works on bigger systems where you have hardware support for abstraction, things like memory protection.
Without it the abstraction doesn't help. A bad pointer can still trash another task. Maybe other tasks can still run even if one hangs, but now you need a two level watchdog system to save that task and to save the OS in case that gets stuck.
As for libraries, sure for openssl, but does openssl need an RTOS just to be ported? And are you going to maintain that port? Makes more sense to shove stuff like that further up the chain into the real OS, not run it on the embedded processor.
Testing can be very difficult with an RTOS. Timing changes as tasks go active and inactive. It's near impossible to get 100% coverage of all possible timing patterns and interactions.
const int one = 65536; (Silvermoon, Texture.cs)
SJW, n: "Someone I don't like, and by the way I'm a fuckwit" - AC
A bad pointer can still trash another task. Maybe other tasks can still run even if one hangs, but now you need a two level watchdog system to save that task and to save the OS in case that gets stuck.
What we could do is collect all of these functions in a common structure and run it on our hardware. Let's give it a fancy name like "Operating System".
Anything you can get into that can do DMA can get into the system if they misuse the IOMMU, but if they get that right, the wireless chip seems to be of little value. But maybe you could make it claim to be some other peripheral...
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
It makes me wonder if they really needed an RTOS for this.
Running on an RTOS ENORMOUSLY simplifies things when you have multiple, independent (or mostly independent), things you have to manage in real time.
The task or task set managing each of these independent things can be written without regard for any of the other stuff going on, except for those tiny and well-contained places where it must communicate with another task handling something related. Meanwhile the OS handles the resource allocation, scheduling, and inter-task communication.
With a good set of patterns to program to, everything gets broken into simple and tiny pieces, small enough to understand and make reliable. The simplicity letts you avoid gobs of on-the-fly checking program bloat, and get a lot done very quickly with minimal resource.
Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
Realtek is the lowest end.
Many cheapo all-in-one motherboards have them too
Some (most?) of the best motherboards (for builders, overclockers, ect.) has Realtek net and audio. Mine has Realtek and some crappy extras besides what the chipset supports for USB, SATA, net, etc. Those crap ones are Marvell and an Intel NIC that is even worse than going back to token ring. Saying "Intel > Marvell > Realtek" tells me you have no clue what you are talking about. That's like saying a rocket is faster than a spoon. Well not for eating with!
Well obviosly, orherwise they would not fit in the slotrs/ readers, I think the poster you responsed to meant capasety not physical size,I often mske that simplifixcation myself since moste storrage nedia comes b a standard form factor (have you for instance seen any sata ssds, not counting m.2 ans pcie ,that where anything other then 2.5inches wide) ? I admit it is technicaly innscurate to say size when you mean capacity, but unfortunatly making people care is about as easy as making the US change to the metric system or even to chsnge from messuring temprature in faranheit to selcius (pesonaly I tend to find mertic and celsius more convinient could just be habit at list for temprature but when it comes to other mesurements netroc just makes conversion between units simpler example one liter = (.1)^3m^3, or 1m^3 =1000 liters ,now how many pints are there in a cubic yard again? Woops went a bit ot there sorry about that have a nice day
Stab resistant vests are lighter than bullet resistant ones.
Spent over a month researching popular wifi adapters. Not even once dit I find an adapter using any model of chipset from Marvell. So the claim that this chipset model is very popular is bull.
Spent over a month researching the cars parked on the street outside my house. Not even once did I find a car made by Toyota. So the claim that Toyota makes cars is bull.
What exactly is the difference between low-end and higher-end NIC chipsets, as long as they manage their stated throughput speeds? The linux drivers are all open source and stable enough from what I can see?
IIRC, some chipsets (or cards?) offload things like packet checksumming to dedicated silicon, hence reducing CPU load - but I can't remember having seen network traffic ever using any noticeable CPU load?