Actually, would a microkernel design even be sufficient? Given that hackers exploit deserialization, memory safety, and variable type confusion issues, there's still plenty of avenues for data corruption and data leakage.
Actually, would a microkernel design even be sufficient? Given that hackers exploit deserialization, memory safety, and variable type confusion issues, there's still plenty of avenues for data corruption and data leakage.
Microkernel vs monolithic kernel has little to do with this, IMO. The main issues are asynchronous complexity and memory safety.
Also, a lot of your most sensitive data lives in userland. If someone gets access to the iMessage sandbox and the message database files, that's your most sensitive and privileged data gone, no kernel touched.
The BBP is what makes a smartphone a phone, rather than a small tablet:
https://en.m.wikipedia.org/wiki/Baseband_processor
The thing about the BBP is that it is a second computer running its own proprietary OS (typically an RTOS) to handle the RF modem. The phone's main OS typically has no visibility into that second computer, even as root, but the reverse may not be true.
So I was wondering if any of Google's efforts to increase security can mitigate attacks that might come through this particular channel that lurks, Kuato like, just out of sight.
Having an IOMMU=baseband can only access a small section of memory marked for it, ideally.
Obviously, it's worth implementing this: it turns a baseband compromise from "instant game over" to "might be a problem, but the IOMMU needs to have been set up incorrectly or the code that deals with it needs to have a serious vulnerability".
The former decreases the Ring 0 attack surface, and the latter makes it challenging to cause a confused deputy problem -- you know, the ol' classic "whoops this daemon running as root accidentally allowed a browser tab to read /etc/shadow." Or the time honored problem of a single exploit in one process giving access to all files (and in some cases, all processes' memory and resources) controlled by a given user. Capabilities also make it relatively easy to sandbox userspace code, and to reason about what it has access to. Kinda like containers, but as a core concept rather than tacked on a few decades into development.
Now these concepts aren't new, but they haven't been deployed or supported at the scale Fuchsia may end up at. Which obviously makes it a pretty exciting project in terms of real-world impact. That said, I believe there's been some speculation that part of the motivation for Fuchsia is to avoid the mess that is out-of-tree drivers on Android. So on the one hand, the kernel can be updated more easily, but on the other hand there may in practice be a lot more unpatchable binary blobs floating around doing important things.
For a more academic project that has many of the same security concepts there's seL4 [2], which has the additional bonus of doing some insanely clever formal verification of the kernelspace code [3]. They have formal proofs that the compiled machine code actually implements the specified of the security model correctly, which is the first of its kind AFAIK. They actually have a set of interactive tutorials for the platform [4], which are a great way to get a feel for how userspace works on a security-focused kernel.
As a disclaimer, I'm not associated with either project, and I'm sure my explanations will be ripped to shreds. My information comes purely from following the space in my free time.
0: https://fuchsia.dev/fuchsia-src/concepts/principles/secure
1: https://en.wikipedia.org/wiki/Capability-based_security
SEL4 and Fuchsia seem to have a security focus, but whether that results in real world difficult to exploit devices is unclear.
https://grapheneos.org/faq#roadmap
There's also sel4, a security focused version of the l4 microkernel which is apparently one of the only formally verified kernels.
1: https://android-developers.googleblog.com/2019/05/queue-hard...
2: https://security.googleblog.com/2021/04/rust-in-android-plat...
Or, just use Linux on the smartphone and harden it with a smartcard (Librem 5).