Las capas o anillos de seguridad del núcleo de Windows 8

Windows Técnico

Sindicación

Proximos HOLs

Loading...

Normalmente la seguridad de una empresa o corporación empieza por la seguridad de cada uno de sus equipos por separado, sin embargo no todos los usuarios son conscientes de los niveles de seguridad que presenta un sistema operativo. Es aquí donde se pretende ahondar en el conocimiento del sistema de anillos de seguridad que presentan los sistemas operativos modernos, y como no podría ser de otra manera, también presente en MS Windows 8 y el próximo MS Windows 8.1.

 

clip_image001

 

 

En sí... ¿Qué son los anillos de seguridad?

 

Los anillos de seguridad hacen referencia a los mecanismos de protección de datos que están presentes ante un fallo o comportamiento malicioso. Es por esto que los sistemas operativos proporcionan diferentes niveles de acceso a los recursos.

 

Los anillos están superpuestos en una jerarquía de la más privilegiada (de mayor confianza, por lo general numerado cero) a la menos privilegiada (de menor de confianza, por lo general con el número más alto de la enumeración de capas). En la mayoría de los sistemas operativos, el anillo 0 es el nivel con la mayoría de los privilegios e interactúa más directamente con el hardware físico, como la CPU y la memoria. Aunque en principio el nivel cero representa el nivel con más adelante, más adelante se introducirá el concepto de anillo -1.

 

clip_image002

 

Figura 1: Anillos de privilegio para el x86 disponible en modo protegido

 

Existen “puertas especiales” entre los anillos para permitir que un anillo exterior pueda acceder a los recursos de un anillo interior de una manera predefinida, en lugar de permitir el uso arbitrario de ésta y seguir manteniendo la estructura. Esto proporciona una mejora en seguridad ya que por ejemplo, una aplicación que se ejecuta como un programa de usuario en el anillo 3 no debería poder a encender una cámara web sin informar al usuario antes, ya que el acceso de hardware es una función que se encuentra en el anillo 1 reservado para los controladores de dispositivos . Los programas tales como navegadores web se ejecutan en los anillos de números más altos, y deben solicitar el acceso a la red o a cualquier elemento que se encuentra en cualquier nivel inferior.

 

¿Por qué se implementan diferentes anillos de seguridad?

La idea de múltiples anillos de protección nació con el sistema operativo Multics, predecesor de la actual familia Unix, el cual implementaba 8 anillos. Y en la actualidad la familia Windows (Windows 8 y sus predecesores) utilizan sólo dos anillos que corresponde a los modos disponibles, el anillo 0 correspondiente al modo núcleo y el anillo de 3 correspondiente al modo de usuario.

 

El uso eficaz de la arquitectura de anillo requiere una estrecha cooperación entre el hardware y el sistema operativo. Sin embargo los sistemas operativos diseñados para funcionar en múltiples plataformas de hardware pueden hacer un uso de un número limitado de anillos si no están presentes en todas las plataformas compatibles. A menudo, el modelo de seguridad se simplifica a "kernel" y "usuario", incluso si el hardware proporciona granularidad más fina a través de los anillos.

 

El hardware establece muchas limitaciones sobre la forma en la que un anillo puede pasar el control a otro y también se encarga de hacer cumplir las restricciones sobre el tipo de acceso a la memoria que se pueden realizar a través de los anillos. Utilizando x86 como ejemplo, hay una puerta especial que es referenciada por una determinada instrucción que transfiere el control de manera segura hacia los puntos de entrada predefinidos en los anillos de nivel inferior.Esto funciona como un supervisor de llamada en muchos sistemas operativos que utilizan la arquitectura de anillo.

 

Las restricciones de hardware están diseñadas para limitar alguna infracción accidental o ataques a la seguridad del equipo. Además, en el anillo más privilegiado se puede dar capacidades especiales, como por ejemplo el direccionamiento de memoria que no pasa por el hardware de la memoria virtual, entre otros.

 

Modo Supervisor

El modo supervisor se podría definir de una manera sencilla como un privilegio asociado a un proceso para realizar determinadas acciones dentro del funcionamiento de un sistema operativo. Sin embargo para dar una definición más técnica se puede decir que es un indicador hardware mediante el cual se puede cambiar el nivel de ejecución de una aplicación a nivel de sistema sobre el cual correrá un determinado código.

Todas las tareas a nivel de sistema y sus threads (hilos) tendrán éste indicador activado, por lo cual podrían realizar operaciones a bajo nivel como por ejemplo la modificación de la tabla de descriptores, desactivación de interrupciones software o hardware, etc. Sin embargo las aplicaciones que corran en el espacio de usuario no podrán realizar esto.

 

El objetivo por el cual se dispone de dos modos de operación es de tener un mayor control de responsabilidad. Dado que un modo supervisor es de confianza nunca debe fallar, ya que un error suyo puede hacer que todo el sistema de equipo se bloquee.

 

Este es el modo en el que el sistema operativo se ejecuta por lo general y las aplicaciones se ejecutan en modo usuario. Otros tipos de sistemas operativos, como los que tienen un exokernel o microkernel , no comparten necesariamente este comportamiento.

 

Los programas que se ejecutan en el anillo 0 pueden hacer todo con el sistema, y el código que se ejecuta en el anillo 3 debería ser capaz de fallar en cualquier momento sin tener un gran impacto para el resto del sistema. Los niveles 1 y 2 del anillo rara vez se utilizan, pero pueden ser configurados con diferentes niveles de acceso.

En la mayoría de los sistemas existentes la conmutación de "modo usuario" a "modo kernel" tiene un alto costo en el rendimiento asociado. 

 

Modo Hypervisor

A pesar de que las  restricciones de acceso a niveles de ejecución de bajo nivel están presentes y debidamente configuradas e implementadas, debido a la virtualización y a la necesidad de proporcionar una plataforma multiusuario surge el término Hipervisor, o simplemente “monitor de máquina virtual” que se trata de una plataforma que permite aplicar diferentes técnicas de control sobre los recursos.

 

Se trata de una plataforma que permite aplicar diversas técnicas de control de virtualización para utilizar, al mismo tiempo, diferentes sistemas operativos  en un mismo equipo. Es una extensión de un término anterior, “supervisor”, que se acaba de definir.

 

Los hipervisores pueden clasificarse en dos tipos:

  •  Hipervisor tipo 1: También denominado nativo, es software que se ejecuta directamente sobre el hardware, para ofrecer la funcionalidad descrita. Ejemplo: VMware ESX (de pago),  Microsoft Hyper-V Server (gratis).
  • Hipervisor tipo 2: También denominado hosted, es software que se ejecuta sobre un sistema operativo para ofrecer la funcionalidad descrita. Como ejemplo se puede tener VirtualBox (gratis), VirtualBox OSE (libre), VMware: Workstation (de pago), Server (gratis), Virtual PC

Procesadores recientes de Intel y AMD ofrecen virtualización x86 con instrucciones para un hipervisor con las que pueda controlar el anillo 0, con acceso al hardware, sin perjudicar a los demás usuarios que realicen acciones sobre el sistema y que no requieran los cambios realizados por el anterior usuario. Es por ello que se crea un nuevo "Anillo -1" para que un sistema operativo invitado pueda ejecutar operaciones del anillo 0 nativo sin afectar a otros invitados o el sistema operativo anfitrión.

 

Interoperabilidad entre la CPU y los niveles de abstracción del Sistema Operativo

 

El uso adecuado de los complejos modos de operación requiere una cooperación muy estrecha entre el sistema operativo y la CPU, por lo que se tiende a vincular el sistema operativo a la arquitectura de la CPU. Cuando el sistema operativo y la CPU están diseñados específicamente el uno para el otro esto no es un problema, pero cuando el sistema operativo está diseñado para ser compatible con múltiples (diferentes arquitecturas de CPU), una gran parte de las características del modo de CPU pueden ser ignorados por el sistema operativo. Por ejemplo, la razón por la que Windows utiliza sólo dos niveles (anillo 0 y el anillo 3) es que algunas arquitecturas hardware que fueron su inspiración en el pasado (como PowerPC o MIPS ) implementan sólo dos niveles de privilegio.

 

El propósito de los modos de funcionamiento distintos para la CPU es proporcionar protección de hardware contra la corrupción accidental o deliberada del entorno del sistema (y las infracciones correspondientes de la seguridad del sistema) por parte de software malicioso o incluso del software considerado seguro, pero que sin embargo realiza una acción indebida dentro del sistema que compromete la seguridad del mismo.

 

Solo determinadas porciones de un software “de confianza” debería poder ejecutarse en un entorno privilegiado, y solo cuando sea absolutamente necesario. El resto del software debe ejecutarse en uno o más modos de usuario según se requiera. Si un proceso genera un fallo o condición de excepción en un modo de usuario, en la mayoría de los casos la estabilidad del sistema se no verá afectada, sin embargo, si un procesador genera un fallo o condición de excepción en modo de núcleo, en la mayoría de os casos, el sistema operativo se detiene debido a que ha ocurrido un error irrecuperable.

 

Cuando existe una jerarquía de modos los errores y excepciones en un nivel más privilegiado puede desestabilizar sólo los niveles de privilegio de mayor numeración o menos ligados con el núcleo. Por lo ejemplo, un fallo en el anillo 0 (el modo de núcleo con el más alto privilegio) se bloqueará todo el sistema, pero un fallo en el anillo 2 sólo afectará a los anillos de 3 y más allá y el anillo 2 en sí, a lo sumo, pero no afectará al anillo 1 ni al 0.

 

Las transiciones entre los modos son, a gusto del consumidor siempre y cuando la transición sea desde un nivel alto de privilegio hacia uno de privilegio bajo (por ejemplo desde el modo kernel hacia modo de usuario), pero las transiciones que pasan de un menor a mayor nivel de privilegio sólo puede tener lugar a través de seguro “puertas” seguras que necesitan de la ejecución de instrucciones especiales o cuando se reciben interrupciones externas.

 

Los sistemas operativos reducidos como el Microkernel  tratan de minimizar la cantidad de código que se ejecuta en modo privilegiado, a efectos de la seguridad y la elegancia, pero en última instancia, sacrifican rendimiento.

 

Con esto se puede sacar en claro que las infraestructura de Windows y en especial en el actual Windows 8 presentan un alto grado de seguridad en cuanto nivel de ejecución se refiere.

 

Si quieres saber un poco más sobre los secretos que esconde la seguridad en sistemas Windows, te recomendamos no dejes de lees el libro de Sergio de los Santos, “Máxima Seguridad en Windows” donde encontrarás muchas información valiosa al respecto.

Además recuerda que puedes suscribirte al Canal RSS de Windows Técnico, o seguirnos por el  Canal Google+ de Windows Técnico o  Twitter para estar al día de las novedades e información técnica de interés.

 

clip_image003

 

Fuente: http://en.wikipedia.org 


Enviado sep 19 2013, 04:11 por Jhonattan Fiestas

Comentarios

Sebastian Greco escrito re: Las capas o anillos de seguridad del núcleo de Windows 8
en 09-22-2013 21:51

Hola!

Muy claro el artículo! Gracias por compartirlo. Debido a la importancia de esta arquitectura y a su estrecha relación con el rendimiento en sistemas virtualizados que necesitan traducir las instrucciones privilegiadas o valerse de la virtualización de hardware que ofrece el propio fabricante del micro (intel o amd) si está habilitado en la bios. Sabes o conoces alguna forma de medir la cantidad de estas instrucciones para realmente poder ver lo óptimo o no de una aplicación en un entorno virtual?

Si no lo tomas a mal, me gustaría aportar algo y es que en uno de los ejemplos te refieres a "VMware ESX" (producto discontinuado) como algo de pago cuando también existe versión gratuita del hipervisor baremetal de VMware conocido como "VMware vSphere Hypervisor".

Saludos!!!

Sebas

Añadir un comentario

(requerido)  
(opcional)
(requerido)  
Recordarme
If you can't read this number refresh your screen
Enter the numbers above: