Sei sulla pagina 1di 17

Arquitectura de procesadores Proteccin

Tcnicas Digitales III Ing. Gustavo Nudelman 2012

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Unidad de proteccin - Introduccin


Cuando un procesador pasa a modo protegido se pone en funcionamiento la unidad de proteccin. Esta unidad supervisa las operaciones internas del procesador para la ejecucin de las instrucciones, comprobando el cumplimiento de una serie de reglas que constituyen el entorno de proteccin necesario para la implementacin de la multitarea. Chequeo del limite del segmento Chequeo del tipo de segmento Chequeo del nivel de privilegio de segmentos y pginas Restriccin del dominio enel direccionamiento de las tareas Puntos de entrada controlados para los procedimientos Instrucciones privilegiadas
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Chequeo del lmite


Tener en cuenta que el valor del campo lmite corresponde al tamao del segmento -1 Tener en cuenta el bit D/B Tener en cuenta el bit ED Se generar una excepcion 0Dh cada vez que se intente acceder a un offset que no est dentro del lmite efectivo

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Chequeo del Tipo


Tener en cuenta el bit S y el correspondiente tipo para el segmento No se permite cargar CS con descriptores tipo (S=1) pero que no sean de cdigo. No se permite caargar un descriptor de cdigo sin permiso de lectura en los selectores (DS, ES, FS, GS) SS solo puede apuntar a descriptores (S=1) con permiso de escritura. TR Solo puede apuntar a descriptores de TSS. No se puede escribir un segmento de cdigo ni un segmento de datos con W=0 No se puede leer un segmento de cdigo si RD=0
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Niveles de privilegio
Los niveles de privilegio se representan mediante anillos concntricos donde los internos poseen mayor nivel

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Reglas de proteccin entre segmentos

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Acceso a un segmento conforming

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Escalamiento de nivel de privilegio


Mediante una interrupcin:
Software Debemos tener el campo DPL del descriptor correspondiente de la IDT en el mismo nivel con que se esta ejecutando el cdigo interrumpido. Luego se escalar al nivel correspondiente al campo DPL del descriptor de segmento de cdigo del handler de la interrupcin en cuestin Hardware: No se tiene en cuenta el campo DPL del descriptor de la IDT. (Si es de hardware corresponde al sistema)

Mediante una puerta de llamada (Call Gate) Se trata de un descriptor del sistema que establece un punto especifico de entrada a un cdigo de mayor nivel de privilegio (generalmente un servicio del sistema) Mediante una conmutacin de tarea.
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Interrupcin con cambio de nivel


Cuando existe cambio de nivel de privilegio durante una interrupcin se produce un cambio de pila Debemos tener una pila por nivel El valor del SS:ESP del nivel accedido se toma de la estructura TSS (se ver en captulos posteriores) Los valores de SS:ESP del nivel previo, se guardan en la pila del nivel accedido SS (level 3) ESP (Level 3) EFLAGS CS EIP Error code
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Niveles de privilegio Campos relacionados


CPL (Current priviledge level) Se trata del nivel de privilegio actual con el que se est ejecutando el programa. Es con el que se intentar escalar o acceder a un nvel superior. Se encuentra en los registros ocultos del selector CS DPL (Descriptor priviledge level) Es el nivel del descriptor u objeto a ser accedido. RPL (Requested priviledge level) Es el valor que se escribe en los bits 0 y1 de los selectores. Es derogable. Se compara con el CPL quedando el menor privilegiado (mayor numrico). Su importancia reside en que es el que se transfiere por la pila y permite conocer al cdigo accedido, el nivel del cdigo llamante.

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Puertas de llamada (Call gates)


Se trata de un mecanismo ofrecido por el sistema de proteccin de Intel para acceder a cdigo con mayor nivel de privilegio. Se basa en un descriptor del sistema (S=0) que debe residir en la GDT, y este descriptor describe un punto especifico de entrada al cdigo de nivel privilegiado. (SEL:Offset) Se accede desde el cdigo llamante simplemente efectuando un call far o jmp far a al descriptor de la call gate (el offset es ignorado). Dicho mecanismo permite tambin el pasaje de parmetros existiendo cambio de pila (campo wordcount) Reflxin: Que ventaja posee respecto a llamar directamente al cdigo.?
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Descriptor de puerta de llamada

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Acceso a travs de una puerta de llamada

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Seguridad
Cada punto de entrada que un sistema posee para realizar escalamiento de nivel de privilegio posibilita la existencia de un agujero de seguridad Si bien el procesador nos proporciona los recursos, es muy importante que al hacer uso de los mismos tengamos en cuenta las posibilidades de vulnerabilidad que esto puede traer. Imaginemos un servicio del sistema que posibilite enviar como parmetros un puntero a un vector, y un valor n, para que el sistema escriba n ceros a partir de ese puntero (inicio del vector). Servicio tipo memset Este se supone que est pensado para que una aplicacin (por ejemplo de nivel 3 pueda inicializar alguna zona de datos de la misma Que pasara si la aplicacin enva como parmetro el puntero a una zona de nivel 0 ?
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Escenario Caballo de Troya Nivel 0


Punto de entrada de cdigo de kernel Mov [eax],0 ---------------------

Nivel 3

Cdigo de applicacin - -- - --- - - - mov eax, [puntero Level 0] INT XX


Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Descriptor de la IDT (DPL=3)

Deteccin del caballo de troya


Tanto en un escalamiento realizado por medio de una puerta de llamada, como en un escalamiento realizado mediante una interrupcin podemos contar en la pila con CS del cdigo llamante.

Interrupcin SS ESP EFLAGS CS EIP RPL

Call gate SS ESP Parmetro2 Parmetro 1 CS EIP

Sea uno de los parmetros es un selector de cdigo (segmento a borrar), Intel provee la instruccin ARPL que ajusta el nivel del primer operando. Ej. ARPL word ptr[EBP+10h],DX (caso call gate, donde DX posee el selector CS)
Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Instrucciones privilegiadas
Existen instrucciones que una vez que el procesador se encuentra en Legacy mode, solo pueden ejecutarse en nivel 0. LGDT LIDT LTR MOV (si el destino es un registro de control) LMSW HLT RDTSC

Universidad Tecnolgica Nacional - Facultad Regional Buenos Aires

Potrebbero piacerti anche