Vulnerabilities are exploited daily - unfortunately there is almost no way to avoid them.
With the rise of ransomware threats such as the WannaCry and Petya - it is becoming obvious more needs to be done in relation to security, than just enforcing system updates. Microsoft just announced in a future Windows 10 update it will support folder level protection to only allowed trusted applications to read/write within them - unfortunately if the folder is still within the NTFS file system it wont take much to circumvent it. A better approach is required.
The majority of exploits in IoT are not generally with the IoT applications themselves, as they are simple in nature and focus on reading and writing from sensors and actuators. The threats mainly come from 0-day exploits utilized by failing to disable unused services or vulnerabilities exposed by the operating systems themselves. What about the idea of sandboxing?
A sandbox is a security mechanism for running untested or untrusted programs or code, possibly from unverified or untrusted developers without risking harm to the host machine or operating system. They provide very tight controls on what resources the applications can access and a scratch space for disk and memory - reducing the risk of being compromised.
Sandboxing definitely is not new - it has been in use for quite some time, such as the popular development environment busybox, through to system level virtualization Jails, and third party environments for desktop environments like Sandboxie. It is important not to forget those implemented in Internet browsers that are used by millions of people on a daily basis.
Can low powered micro-controllers used within IoT utilize ideas behind sandboxing?
Bare bones (aka: Bare metal) environments, coupled with sandboxing design may be the future for securing IoT devices. Most micro-controllers by design are bare bones in nature, such as the popular Arduino platform and efforts have been taken in the community to remove Linux from the Raspberry Pi - however, not something to try without patience or dedication.
At the same time, developers are deploying RTOS (Real Time Operating Systems) on micro-controllers to provide multi-tasking capabilities to meet somewhere in the middle. However, most RTOS environments are platform specific and come with their own set of caveats that require specific resources and rule them out of many micro-controllers on the market.
Virtualization and Scripting are other techniques that could be utilized to provide a sandbox environment - applications could be deployed in the form of scripts or cross-platform bytecode for interpretation on the host environment and binding to native resources. In general, such solutions, unless designed from the ground up for IoT wont be feasible for all micro-controllers due to their complexity and obvious resource constraints.
It will be interesting to look more into sandboxing and the implications it can have within the IoT device lifecycle. The technology and concepts are out there; but will definitely take more than slapping together open-source projects - it'll take a lot of hard work and a lot of sweat, but if it can be done, it will change the way we see security within IoT.
We were contacted by the authors of Sandboxie and at their request they asked us to publish a link to a resource / guide for sandboxing - comparing a number of different concepts and technologies that are available. The guide is freely available online: What is sandboxing and how to sandbox a program.