Earlier quoted context omitted.
I think you would also have to verify resulting binary, compiler, libraries... It seems more manageable to verify a few KB of assembly or C
Not really, to verify C code you need to set the compiler and its corresponding version in stone for the verification process, as UB can change even between versions of the same compiler.
L4 microkernels: The lessons from 20 years of research and deployment
31–40 of 99 posts
Re: L4 microkernels: The lessons from 20 years of research and deployment
#32If the goal is to provide a verifiably correct kernel, why not build that kernel in something like OCAML so you can leverage a better type system and use the existing verification infrastructure in that language?
sel4 was specified in Haskell and then converted to C
Re: L4 microkernels: The lessons from 20 years of research and deployment
#33Earlier quoted context omitted.
Are selL4 capabilities transferable?
Yes. See the manual or the tutorials.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#34Earlier quoted context omitted.
How many of the exploits for IoT devices are related to the kernel? I have the impression that it's mostly poor protocols with default passwords and zero consideration for security that are the problem.
Only because that's still the low hanging fruit. Why would most hackers bother with kernel exploits, when hundreds of thousands of routers use their manufacturer's default password?
Re: L4 microkernels: The lessons from 20 years of research and deployment
#35Earlier quoted context omitted.
What's your sense of the number of IoT vulnerabilities that are due to misconstrued OS semantics? Mine --- and I've done a bit of work here, but not that much --- is that there aren't that many. Really I think it depends on what you're doing. If the work you're doing is fundamentally kernel work --- if it's all about interacting with the security boundaries of the hardware (not just "interacting with hardware", like…
If done well, formal verification of kernel level services and how these use runtime protection built in hardware can absolutely reduce the attack surface of application level code. The key is to move critical services that attackers would wish to exploit into a formally verified sandbox. That is the real power of systems like seL4, even though seL4 isn't itself really geared toward the sort of chipsets commonly used…
(I've done some L4 work so you don't need to spend a lot of time explaining.)
General purpose OSs like iOS? No question: L4 is a major win. But that's not what the discussion here is really about.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#36Earlier quoted context omitted.
What does separation between kernel and application really matter for single-function devices, like most IoT things are?
If written in languages like C and C++, you just get the own the complete device when exploiting application errors. It can also happen when using unsafe code with the Ada, Java, Pascal and Basic variants available for such devices, but the probability is lower.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#37https://os.inf.tu-dresden.de/papers_ps/nizza.pdf
The first to get certified to high assurance under recent models and delivered in products was INTEGRITY-178B. Like Nizza, they implemented desktops that virtualized the machine with Windows/Linux partitions side-by-side with native apps directly on separation kernel. Runtimes for Ada and Java subsets let you write critical components without common errors from C. Special middleware applies security policies to interactions between components.
http://www.ghs.com/products/safety_critical/integrity-do-178...
A recent product that's more accessible is the GenodeOS architecture that builds hierarchical, desktop system on top of components like seL4, NOVA, and Nitpicker GUI. They're dual-licensed with open-source available. Work in progress.
It should be noted that seL4 itself is aiming for embedded. Many of the top teams are also focusing on language and spec-level models for verification of holistic properties. The isolation approach isn't enough for the level of correctness they're aiming for. Anyone interested in such work should check out Galois's project or CertiKOS.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#38Earlier quoted context omitted.
What's your sense of the number of IoT vulnerabilities that are due to misconstrued OS semantics? Mine --- and I've done a bit of work here, but not that much --- is that there aren't that many. Really I think it depends on what you're doing. If the work you're doing is fundamentally kernel work --- if it's all about interacting with the security boundaries of the hardware (not just "interacting with hardware", like…
I'm happy to believe that almost all IoT vulnerabilities are application level problems. The beginning availability of verified kernels and compilers makes it much more worthwhile to invest in formal approaches for application level vulnerabilities.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#39I'm having really big expectations on seL4. The modularity of a microkernel with the security of formal methods is something that would give hope of solving some really fundamental problems with the "IoT scene". I.e. having good security out of the box (which is horrible in IoT as of now), while still maintaining good flexibility regarding platforms (which will become more and more of a problem in the future when IoT…
L4 is great, but it doesn't solve application security problems. L4 by itself doesn't do much, and whatever you build on top of it --- if you're not yourself using formal methods, which very few real product teams do --- isn't going to inherit its security.
Re: L4 microkernels: The lessons from 20 years of research and deployment
#40Earlier quoted context omitted.
Yes. See the manual or the tutorials.
Plese correct any/my minunderstanding here: doesn't that imply that flaws in the capability holder can obviate the "isolation boundary" guarantees? (For example, if app x has capability to address a certain memory block and then hands that off to another application.)
The theorems are somewhat technical, but your intuition is correct.