FCC Proposes Voluntary Security Labels for IoT Most Companies Will Likely Ignore
techdirt.com
techdirt.com
I'd expect that devices on subscription will do better on security because they have an economic incentive to do so. Even then vendors will want to end of life hardware that is no longer economic to support.
So keep supporting it or give away how your stuff works underneath and allow someone else to. Bricking device into a landfill should not be decision corporation is allowed to take on most (all?) customer devices.
There is no excuse for not providing it from day one. And more than one reason to do it -- not only do you verify that you have what you need before they're gone, it allows people to find vulnerabilities sooner so they get patched before more people have the vulnerable device, and allows them to improve the software in general even when the hardware vendor is in a commodity market with margins to slim too do it themselves.
Setting that aside, I have yet to see a complex system that you can rebuild without a lot of undocumented know-how just by having the source code. Companies don't typically keep meticulous documentation on this, they keep people around to do it. When the product goes out of support, the people get transferred or fired.
The other side of the coin, the other option we shouldn't really rely on but we can, is entirely blocked by the way these vendors operate. Android has had its fragmentation issues because the vendors aren't using the stock Android, and aren't upstreaming the drivers and tweaks needed to actually run Android on their hardware. There is usually an economic incentive to not do so (if a custom ROM can be made for their phone, they won't get the ad and deal revenue from the garbage they've preloaded into the phone).
Some do this better than others and there are custom ROMs out there that allow you to update, but custom ROMs are a horrible solution for most customers. It's really only accessible to technical people that have the time and energy to put into it and maintain it directly.
The same thing is true for most IoT devices, the drivers aren't upstreamed, the source is closed, third parties can't fix the software or use it outside the designed ecosystem and the manufacturer doesn't have an economic incentive to give you any time after you've purchased their product.
A lot of manufacturers of devices are mostly white labeling reference designs with a small modification for an extra sensor or other relatively small benign change to the electrical schematic and they'll correspondingly use the reference software for that design which hasn't been updated in 20 years since the reference design was created. Those designs usually have the same problem, the manufacturer of the chip had some devs hand edit a "stable" version of the Linux kernel outside of any source control or public repository and shipped a binary with custom drivers (probably not up to the normal quality expected of code merged into the kernel either).
I think that last one is really the sticking point. The fractured Android ecosystem isn't great but its fracturing issues have been much better in the past 6-8 years than it was up till about Android 8 (based on my recollections) so is kind of an outdated example at this point.
If manufacturers of custom ICs kept reference designs up to date, or upstream their drivers into mainline Linux that becomes the economically cheapest, lowest effort, and widest impact change that could make meaningful security improvements to all devices produced. I have zero idea how to turn that into something that can be legislated though.
That's a really long-winded way to say "Violate GPL of Linux Kernel".
Compiled in closed source modules is explicitly against terms of GPL2, and yet billions of violating portable computers.
And people wonder why I pirate? Our rights are constantly shat on by the same interests that would imprison us for copying software or movies.
If you built an IoT Device, would you ever:
- Not consider changing the root username and password?
- Not consider shutting off the SSH server?
- Not consider writing the most delicate parts in a memory-safe language?
- Not consider enabling Secure Boot or tamper detection?
- Not consider building a system for easy and automatic security updates, perhaps with an opt-out for those interested?
Almost all of us here would consider the above. Yet most IoT manufacturers never thought of any of them. You're competent.
The reality is that it takes a ton of work to get a microcontroller to blink an LED. Various clocks need to be configured, various peripheral devices (I2C controllers, GPIO controllers etc) need to be configured, interrupt vector tables need to be set up and so on.
Who is expected to do this work?
Today, it is done by the semiconductor vendor. When you buy a microcontroller, you’ll use an SDK and a toolchain that the vendor offers.
The vendor is incentivized to keep their SDK and tool chain as general as possible to sell into as many different designs as possible.
The OEM wants to ship a product as quickly as possible to make their cashflow model work.
There’s a huge gap between these two ends where a ton of important stuff goes unaddressed. At no point are the OEM and semiconductor vendor incentivized to sit together and addresses all the issues that fall through the cracks.
The current school of thought dominating MBA courses would see addressing these issues as a cost with no tangible benefits to the business. I can see their rationale: if consumers don’t signal that they care about security, then it is actually hard to argue that addressing security is a benefit to the business.
Most consumers today don’t know how bad the situation is to care about this stuff. It sucks because we firmware engineers want to do the right thing but we can’t justify it.
No, that's the easy part (even if done manually). The hard part starts with networking
> There’s a huge gap between these two ends where a ton of important stuff goes unaddressed. At no point are the OEM and semiconductor vendor incentivized to sit together and addresses all the issues that fall through the cracks.
Most SDKs I've seen end up somewhere at level of TCP stack, sometimes at level of simple web server. Because everything above will be very application specific.
It's near-entirely on the app vendor to fuck stuff above that. Don't try to push blame on manufacturer of the chip here, they didn't force your password to be 12345678
Frankly this whole idea the same protocols that are used on the web should go anywhere near microcontrollers is braindead.
Edit: apologies if this was too strongly/inappropriately worded, but I stand by the underlying point.
sshd has no place on most of these devices. But it comes packaged by default in many distributions. Real products are shipping with it right out of the box, and it's a problem.
At least in the US, customers are very price conscious and will sacrifice a lot to save a dollar. To frame this from their standpoint, "Why do I have to pay more for ¨features¨ that I don't want?"
I think folks _should_ demand more secure devices, but they also must be willing to pay for it.
(Many folks will immediately respond, "We'll use the government to force companies to do this!" but that can cost even more, as the company provides the extra features and also pays for the bureaucracy.)
The hardware vendors are providing the firmware instead of a spec that allows you to write your own. Then you're stuck using their software to use their hardware, even if it's awful or they stop updating it.
It's perfectly fine to provide a reference implementation, but that's not a substitute for hardware documentation sufficient to let you make your own if you don't want the vertical integration.
Because the party with the economic incentive to make it better is the end user. Not all of them have the capacity to do that, but only one of them needs to and you have better code available to the whole world.
It's possible they did think of these and just didn't do them for various reasons. Like it wasn't worth the cost (not necessarily due to changing the setting, but more from a support side), or they might have an incentive to leave it unsecured (Chinese tech), or something else.
The sad part is, the people making the decisions don't have imposter syndrome because they're making money with a success product and any shortcomings must be from the people under them.
Sure thing... How long will it take and will it get in the way of these 4 features we promised to the customer that they wanted last week?
Probably like about a month of work.
Well add it to the backlog and we will get to it eventually.
My idea is that, if you limit the IoT device - say, a thermostat or a smart bulb - to only have the exact capabilities it is supposed to have, then the damage from any external hack is limited to messing with the user's house. And, if the user has the ability to turn it off, the damage of the hack is limited to "the device doesn't do anything anymore".
I figure this is much better than the possibility that breaking the security enables the IoT device to spy on the user's network traffic, or their house, or be part of a botnet, or a bounce point for hacking attempts.
EDIT: I recognize there are good real-world reasons why IoT companies don't do it this way. If we actually valued security, then there would be an incentive for someone to build up the systems to facilitate this kind of limited-attack-value design.
Take a Wifi-based smart outlet, for example. The functionality is literally a single output that drives a relay. But in order for that to work, it needs to join a Wifi network - that means that you need some way to get an SSID and password onto the device and it needs a DHCP client to get an IP address. There also needs to be a way for the controller to discover the device's IP address, which means there's now likely an mDNS implementation on the device. Then there needs to be a way for the device to receive commands, so now we've got an HTTP server.
If you want out-of-home access, which I suspect most people do, there's even more work required. Usually this means a central server that the device connects to since most regular people don't have a VPN connection back home. Another option is HomeKit, which is explicitly about local control with all of the remote access magic handled by Apple. But HomeKit is yet more stuff to run on the device, and only works if you've bought into the Apple ecosystem.
This is a ton of scope creep for a pretty minimal device.
A Zigbee or Z-Wave based outlet would be better, but that really just moves all of that scope creep from the individual device to the hub.
This is actually fine as long as the hub is open source software running on a general purpose computer, because then you're not reliant on the hardware vendor to support it.
The fundamental problem is that the hardware vendors (1) don't provide what's necessary for anyone but themselves to support the hardware, and then (2) don't adequately support it themselves.
Far better to address (1) than (2).
You can do exactly what you propose, right now, with stuff like ESPhome. You pre-bake what device does and which WiFi network it uses into image, burn it in, and you're done.
But that's for "us"
Normal user needs a way to get the box to configure to his needs, and do it easily. So suddenly you can "log" onto device and edit its config, and you need to find a way to make sure only legit user does it etc.
And now it is a big blob of code and you DONT, UNDER ANY CIRCUMSTANCE want to have big blob of code that's hard to update in the wild.
I would bake it in the bios or similar, and print it on the bottom of the device.
- Not consider shutting off the SSH server?
I would keep sshd running, precisely for the fact that the person who bought this could modify it I'm a reasonable and sane manner, like any Linux peripheral. It also allows for more extensibility past what I thought of.
- Not consider writing the most delicate parts in a memory-safe language?
I wouldn't reinvent the wheel. Use Linux, QNX, or Tron. Probably not Tron, but it IS open source.
- Not consider enabling Secure Boot or tamper detection?
Are we assuming the person who buys this as the enemy, or are we trying to evade Mission Impossible level national spies from looking how some IoT shit works?
- Not consider building a system for easy and automatic security updates, perhaps with an opt-out for those interested?
Most "security" updates are just malware in disguise. I've seen enough de-featurization and others in the name of security.
That's their answer per why:
> Unfortunately, the current configuration of the controller for networking connections will be taken back for default, including new credential set for SSH connections after a simple reboot because of security reasons
I'd like to see some that have separate "rule running engine hub" (that can be run in some kind of active/passive HA) + "UI/editor" (that if required can be run on separate machine so the "hub" could run on even weaker hardware if needed)
But yeah I regret that decision now.
> “for security reasons” is a pretty bad reason to reset the password to a default 8 characters printed under the box!
There is approximately one class of consumer devices that I suppose fall under the IoT umbrella and that are commonly attacked: modems and wifi routers. But these generally get security support. And if you had product labels, would it change shopping behaviors in any way? "This NetGear router will get security updates for 8 years" sounds great. But then, in 10 years, you might have the same router in your closet. Will you even remember the label by then?
If what you're getting at is that most networked devices sit behind a consumer firewall, and that's probably good enough -- well, I mostly agree.
The truth is that there's always other ways to find the IPv6 address of various devices inside a home. Many of them will happily tell you if you just send out the right broadcast (e.g. zeroconf) or they connect to services on the Internet that can be spoofed or just have generally terrible security (e.g. the addresses of all devices are publicly discoverable).
Another fun way to find these devices is buying up dead domain names (e.g. because the company no longer exists) and setting up services that auto-hack the insecure devices once they can finally "phone home" again due to the malicious domain suddenly coming back online. This kind of hack works regardless of firewall rules (assuming the device is allowed to "phone home" at all).
I found out retroactively after my router had been pwned and was acting as some sort of shady DNS server. I'll never actually know the method by which it was compromised, but I made a few educated guesses.
in practice, the I in IoT means that the device connects to your wi-fi. whether that extends to the open web or not, it's still an IoT device, even if it doesn't conform to the word "internet" in the strictest sense
Many devices work just fine with local only connection. If an IOT devices does not work without internet that is a reason to not buy it.
But even that analogy isn't perfect, because while buttercream frosting made from margerine is usually cheaper and lower quality, from what I've seen, "IoT" devices that don't depend on remote servers, or send back telemetry tend to be higher end and more expensive.
Just because I build a private network of cameras, power monitors and weather sensors at my house doesn't mean those don't qualify as an IoT device.
IoT stands for "internet of things". I am by no means an expert in the area, but my understanding was that am IoT device is by definition connected to the Internet.
What I suggest is to make all Tier-1 ISPs adapt a protocol that would allow any host to block incoming traffic from specific IP/subnet at all upstream providers. So during attack the malicious traffic would be blocked at source network level or at Tier-1 level and never reach the target.
Wouldn't networks be more secure in this case? Critical infrastructure like banks or government services would be better protected. Also, middlemen like Cloudflare would become unnecessary.
What surprises me is why we use technologies that allow to perform DDoS attacks with mimimun costs. ISPs turn a blind eye to this and route malicious traffic to the victim without trying to stop it. Security updates for IoT devices won't fix this. ISPs are the ones who need to be fixed.
Also, if IoT devices were restricted to local network, then outdated firmware wouldn't be a problem too.
Cool story bro, and this is authenticated and secured, how? What happens when malware starts black-holing Google and Microsoft for all my devices? What happens when a botnet starts black-holding Cloudflare for all their neighbors? You want to prevent a floody-floody DDOS by creating opportunities for another variety of DDOS?
You will send an unblock packet. Well, maybe this protocol should only work for commercial IP addresses, not for residential.
> this is authenticated and secured, how?
By your source IP address. You can only block traffic to your own IP address.
Hey, 1985 called, and they want their authentication methods back.
1. When the device manufacturer will discontinue support.
2. Up front disclosure of subscription fees if required to make the device work.
3. Software or hardware locks that prevent the user from modifying the device's firmware.
for not gushing with tech-journo love for the subject of the article,
and for not gifting endless benefit of the doubt for Gov/Corp.