This shouldn’t really come as a surprise to anyone… but it inevitably will to a lot of people, so I think it’s worth discussing. We’re approaching a repeat of Windows 98-XP era security ignorance with the Internet of Things, small Raspberry Pi servers, and intelligent, internet-connected automobiles. These things can be made secure, but right now, for the most part, they’re not.
As difficult and unnerving as it is to create a product with over-the-air (OTA) updates, I think that that is our only forward-looking option. To illustrate my point, the recent glib.c DNS vulnerability opens nearly every Linux-based computer to remote code execution. This means not only our Linux PC’s and servers are vulnerable, but all our RPi’s, some WiFi routers, and potentially even some non-linux embedded devices that have borrowed from the linux codebase. This sort of issue isn’t something you, as a developer, can easily mitigate when the world doesn’t yet know it’s a problem.
It’s worth noting that Google is trying to make IoT Security easier with Brillo. I haven’t worked with it, but it’s worth looking at if you’re building an IoT product.
Additional recent news involves Director of National Intelligence James Clapper–the same person who “forgot” while testifying in court that the NSA is performing mass-surveillance–stating that the NSA might use IoT to spy on people. The only thing surprising here is that they spoke of it.
To protect yourself while still dabbling in IoT, some best practices are:
- Stay up to date! Make sure your computers, routers, and network devices are kept up-to-date.
- Put all potentially insecure devices on their own network (behind their own router). Ideally, you’ll have three distinct networks, in a Y-configuration. Router 1 connects to internet, Router 2 and Router 3 connect to Router 1. All secure things connect to Router 2, and all insecure devices connect to Router 3. More discussion is in this Security Now podcast. Note that with more advanced hardware, this can effectively be done all on one box.
- Don’t use default passwords, especially for wireless router configuration.
- Lots more, but I am tired. Feel free to add your own.