Seguridad en .NET 4

Uno de los aspectos del framework que ha cambiado de manera más radical es su modelo de seguridad. En la versión .NET 4 se ha dejado obsoleto al CAS policy.

CAS policy es una tecnología potente que permitía la aplicación de permisos de una manera muy detallada, pero demasiado engorrosa, ya que ni siquiera se pueden aplicar políticas para varias versiones del framework, etc.

Con la salida de .NET 4, Microsoft decidió cambiar la manera de hacer las cosas y trasladó la responsabilidad de la seguridad del runtime al sistema operativo, sustituyendo así las políticas a nivel de máquina y trantando de igual manera a ensamblados manejados y ensamblados nativos.

Muchos de nosotros nos habremos encontrado con la necesidad de migrar código de versiones anteriores a la nueva versión del framework y hemos tenido que hacer uso de:

<NetFx40_LegacySecurityPolicy enabled=”true” />

para habilitar la compatibilidad con CAS policy de nuestros nuevos ensamblados.

 

Para facilitar la creación de entornos sandbox, hemos pasado de la farragosa vía que CAS policy ofrecía a una manera simple y directa, con dos niveles: Partial Trust y Full Trust. Ahorrándonos la evaluación de evidencias, utilizadas ahora como meros contenedores de información.

 

El mecanismo que garantiza este comportamiento ya fue introducido en el framework .NET 2.0 y se llama Security Transparency, solo que esta primera versión era principalmente utilizada como herramienta de autidoría. En esta segunda versión incluida en .NET 4 es la herramienta que separa el código seguro de ejecutar del que no lo es.

Separa al código en tres categorías: Transparent, Safe Critical y Critical. Robando una imagen de la MSDN, sería algo así:

securitytransparencymodel

Donde las fechas verdes representan llamadas válidas y las rojas llamadas inválidas.

 

Un atributo que hemos visto en la nueva versión del framework y que puede decorar nuestros ensamblados es AllowPartiallyTrustedCallers, informando de que ese ensamblado expone cierta funcionalidad sensible en terminos de seguridad a ensamblados Partial Trust.

Para evitar que cualquier ensamblado Partial Trust pueda llamar a esa funcionalidad, se ha introducido un condicionante que, a través de una lista de hosts, hace visible esa funcionalidad solo para los nombres de esa lista.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *