He oído decir (por un investigador que trabaja en una técnica de microkernel competitiva ) que se sabe muy poco acerca de cómo evaluar la seguridad de los sistemas que son extensibles a través del código administrado.
El problema es que los tipos de errores que pueden causar un agujero de seguridad son muy diferentes de lo que los investigadores de seguridad están acostumbrados. En un microkernel tradicional, todos los controladores y otras subpartes del núcleo están aislados entre sí ejecutándolos en diferentes espacios de direcciones. En un microkernel donde el aislamiento se implementa a través del código administrado de verificación de tipo, se evitan los enormes gastos generales de cambiar los espacios de direcciones cada vez que se necesita usar un subservicio, pero la desventaja es que ahora evaluar el mecanismo de aislamiento es más difícil.
Cualquier parte particular del kernel (digamos un controlador de dispositivo) escrita en el lenguaje administrado es segura si y solo si el verificador de tipo dice que el controlador es seguro y el verificador de tipo no tiene errores. Entonces el verificador de tipo es parte del núcleo del núcleo. En la práctica, parece que los verificadores de tipo son considerablemente más grandes y más complicados que los núcleos de microkernel tradicionales. Eso significa que la superficie de ataque es potencialmente más grande.
No sé si las técnicas tradicionales de aislamiento de micro-kernel o las técnicas de aislamiento basadas en código administrado son realmente más o menos confiables. Aquí hay un problema de arranque: hasta que las técnicas de aislamiento de código administrado sean ampliamente utilizadas, no sabremos con qué frecuencia son inseguras. Pero sin saber cuán inseguros son, es difícil implementarlos en situaciones que son críticas para la seguridad.