Technical Challenges of IoT Cybersecurity in a Post-COVID-19 World
By Tom Stitt
Effective management of vulnerabilities can be done only when information about supply chain dependencies is accurate and recent. Day-to-day business activities have changed pervasively and quickly because of the pandemic, and many experts already have written about the impact on the security world. Most of those have focused on organizational and process changes, so let’s focus on the actual technical consequences and challenges.
When looking at today’s hardware and software ecosystem for manufacturers of connected products for the Internet of Things (IoT), it’s obvious that dependencies are everywhere. As recently as 10 years ago, it wasn’t uncommon to write your own real-time operating system (RTOS) for embedded applications or write your own code that handles cryptographic processing, but this is rarely the case today. Developers rely on abstractions that are given to them, be it an operating system, an Internet Protocol (IP) stack, cryptographic functionality, or communications handling such as marshalling. These dependent components in turn can have dependencies on other, smaller components and so a dependency tree can typically be seen that famously and quickly can grow scarily large.
In times of economic crisis and hardship, some of the businesses that supply these components inevitably will fail. Even if suppliers continue their operation, products that are less successful economically might be discontinued. While entirely expected when viewed through a security lens, this can quickly become a large problem: If any dependency contains a security vulnerability and that dependency is not receiving patches or updates anymore, any component that relies on that dependency might also contain a vulnerability.
Usually, this is not an immediate problem because it can take months or years until such vulnerabilities are discovered — maybe by coincidence or by someone probing for exactly that kind of issue. However, because of the sheer complexity of systems, it is highly probable that such a scenario eventually will happen. For example, low-level components that are buried deep in the dependency tree can be excruciatingly painful to detect and replace while still maintaining the same functionality. For manufacturers of connected IoT products, it is key to focus on their supply chain and increase the ability to break their products down into their respective components. Effective management of vulnerabilities can be done only when information about supply chain dependencies is accurate and recent.
A second side effect of the pandemic is the massively increased reliance on cloud-based communication systems. It is unthinkable to conduct business effectively and in compliance with the current legal restrictions without holding a videoconference, sharing a document, or presenting a slide set remotely. The systems used to perform those tasks, however, are largely following the same basic principles that typical client-server architectures have been following for roughly 20 years. While the cryptographic transport protocols have improved significantly since SSLv2, there still is a disparity in the level of trust between client and server: Clients are typically considered entirely untrusted while servers hold all the secrets and relay data securely. While this is easiest for the implementors of backend infrastructure, such a design is something which is fundamentally unpleasant from a security point of view.
Ideally, a document should only be shared with the intended recipient. There is no legitimate need for the infrastructure that relays the data to be able to peek into documents, following the principal of least privilege. That ability, therefore, should also not be present in back-end infrastructure. Code is written by people, and people make mistakes. As we have seen many times, malice doesn’t need to be present for back-end providers to “lose” their customers’ data. The less back-end access to data, the less data a provider can lose if there’s an oversight.
We expect two developments to rise in importance in the near future. First, implementors and developers will need to thoroughly analyze their supply chains and quickly identify technical debt incurred by unmaintained software — before potential critical vulnerabilities manifest within them. Second, to protect businesses and corporate secrets, it is imperative that new systems are migrated to designs in which true end-to-end encryption is present everywhere. Neither of these issues will be easy to solve. However, when manufacturers, developers, and architects work together on these security aspects, they can help ensure that security implications of an unprecedented crisis can be mitigated before starting to cause issues in the future.