On 1/23/23 22:40, Gerwin Klein wrote:
> Hi 
> 
>>> From this document https://apps.dtic.mil/sti/pdfs/AD1027690.pdf
>> <https://urldefense.com/v3/__https://apps.dtic.mil/sti/pdfs/AD1027690.pdf__;!!CzAuKJ42GuquVTTmVmPViYEvSg!OA6w8_lHRjrM8TZcgTlDhuMzVD4ZxpqVA9-0bFSmrkvdcTFG4hUtwcm2vBaB_ZLNQ0yWZWS_SPscy_pF$>,
>> we figured out that system call APIs are verified (except for their
>> composition with sel4 kernel proofs).
> 
> The report above only talks about the lowest libsel4 layer, i.e. the C 
> language bindings of the seL4 ABI. 
> 
> In that sense you can view the entire kernel API as verified, in particular 
> the kernel API presented by the non-MCS configurations listed in 
> https://github.com/seL4/seL4/tree/master/configs
> 
> The proofs mentioned in the report are not maintained and do not apply to the 
> current version of seL4 any more, so strictly speaking the verification goes 
> to the kernel ABI level only, but the libsel4 language binding process has 
> not fundamentally changed since then and can still be counted as high 
> assurance.
> 
> Some of the functions you listed below that (e.g. "vka_alloc_frame", or 
> anything that does not start with "seL4_") are not the kernel API. Instead 
> they are from user-level convenience libraries that are low assurance and 
> without any verification at all. As the "About" tab on 
> https://github.com/seL4/seL4_libs says: "No-assurance libraries for 
> rapid-prototyping of seL4 apps."
> 
> The functions starting with "seL4_..." in that list look like they are direct 
> seL4 API calls and are therefore probably in the verified set (if they are 
> indeed seL4 API calls, not something with the same name).
> 
> Whether verification is necessary for these calls depends on the system you 
> are building and its architecture. Usually the point of isolating components 
> from each other on top of a microkernel is that you can have low-assurance 
> components in the system without compromising overall security. Our main 
> user-level verification efforts tend to focus on a small number of critical 
> components and on initialising access control authority in the system 
> correctly so that these critical components cannot be compromised or 
> circumvented by other components. 
> 
> Cheers,
> Gerwin

What is the appropriate design for dynamic systems with a potentially
unbounded number of critical components?  In Qubes OS, for example,
there is no way to know what is and is not critical, as that depends
on the (human) user.
-- 
Sincerely,
Demi Marie Obenour (she/her/hers)
_______________________________________________
Devel mailing list -- devel@sel4.systems
To unsubscribe send an email to devel-leave@sel4.systems

Reply via email to