Ouvi dizer (por um pesquisador que trabalha em uma técnica concorrente de microkernel ) que pouco se sabe sobre como avaliar a segurança de sistemas extensíveis por meio de código gerenciado.
O problema é que os tipos de bugs que podem causar uma falha na segurança são muito diferentes do que os pesquisadores de segurança estão acostumados. Em um microkernel tradicional, todos os drivers e outras subpartes do kernel são isolados um do outro, executando-os em diferentes espaços de endereço. Em um microkernel em que o isolamento é implementado por meio de código gerenciado de verificação de tipo, você evita as enormes despesas gerais de trocar espaços de endereço toda vez que precisar usar um sub-serviço, mas a desvantagem é que agora é mais difícil avaliar o mecanismo de isolamento.
Qualquer parte específica do kernel (digamos, um driver de dispositivo) escrita no idioma gerenciado é segura se e somente se o verificador de tipos indicar que o driver é seguro e que o verificador de tipos não possui bugs. Portanto, o verificador de tipos faz parte do núcleo do kernel. Na prática, parece que os verificadores de tipo são consideravelmente maiores e mais complicados do que os núcleos tradicionais de microkernel. Isso significa que a superfície de ataque é potencialmente maior.
Não sei se as técnicas tradicionais de isolamento de micro-kernel ou técnicas de isolamento baseadas em código gerenciado são realmente mais ou menos confiáveis. Há um problema de inicialização aqui: até que as técnicas de isolamento de código gerenciado sejam amplamente usadas, não saberemos com que frequência elas são inseguras. Mas, sem saber quão inseguras elas são, é difícil implantá-las em situações críticas à segurança.