Słyszałem, jak twierdził ( badacz pracujący nad konkurencyjną techniką mikrojądra ), że bardzo mało wiadomo na temat oceny bezpieczeństwa systemów, które można rozszerzyć za pomocą zarządzanego kodu.
Problem polega na tym, że rodzaje błędów, które mogą powodować lukę w zabezpieczeniach, są bardzo różne od tych, do których przywykli badacze bezpieczeństwa. W tradycyjnym mikrojądrze wszystkie sterowniki i inne części jądra są izolowane od siebie, uruchamiając je w różnych przestrzeniach adresowych. W mikrojądrze, w którym izolacja jest implementowana za pomocą kodu zarządzanego sprawdzania typu, unikasz ogromnych kosztów przełączania przestrzeni adresowej za każdym razem, gdy potrzebujesz skorzystać z pod-usługi, ale kompromis polega na tym, że ocena mechanizmu izolacji jest trudniejsza.
Każda konkretna część jądra (powiedzmy sterownik urządzenia) napisana w języku zarządzanym jest bezpieczna wtedy i tylko wtedy, gdy moduł sprawdzania typu twierdzi, że sterownik jest bezpieczny, a moduł sprawdzania typów nie zawiera błędów. Sprawdzanie typów jest więc częścią jądra jądra. W praktyce wydaje się, że kontrolery typów są znacznie większe i bardziej skomplikowane niż tradycyjne rdzenie mikrojądrowe. Oznacza to, że powierzchnia ataku jest potencjalnie większa.
Nie wiem, czy tradycyjne techniki izolacji mikrojądra czy techniki izolacji oparte na kodzie zarządzanym są naprawdę mniej lub bardziej niezawodne. Występuje tutaj problem ładowania początkowego: dopóki techniki izolacji kodu zarządzanego nie będą szeroko stosowane, nie będziemy wiedzieć, jak często są niepewne. Ale nie wiedząc, jak bardzo są niepewni, trudno jest wdrożyć je w sytuacjach krytycznych dla bezpieczeństwa.