Categories: SeguridadVirus

Escalada de privilegios en función del API de Microsoft Windows XP

Las vulnerabilidades podrían permitir a un usuario con el privilegio

SeDebugPrivilege ejecutar código en modo kernel, además de poder leer y

escribir de cualquier dirección de memoria, incluyendo la ocupada por el

kernel.

El privilegio SeDebugPrivilege permite cambiar el flujo

de ejecución de cualquier proceso o matarlo (incluyendo los subsistemas

de seguridad o cualquier servidor RPC).

La función

ZwSystemDebugControl(), exportada de ntdll.dll, llama a una función del

sistema llamada NtSystemDebugControl(), que es ejecutada en modo kernel,

y que se creó para ser utilizada por depuradores con el privilegio

SeDebugPrivilege.

La primera vulnerabilidad permite modificar el

registro MSR (Model-Specific Register) IA32_SYSENTER_EIP para apuntar al

código deseado y que posteriormente se ejecute con el control total del

procesador.

La segunda permite modificar una entrada IDT

(Interrupt Dispatch Table) con un puntero hacia el código deseado y

ejecutar una instrucción INT n (interrupción del sistema). Un problema

de comprobación de una estructura implicada en el proceso permite la

escritura en memoria de kernel.

La tercera es similar a la

anterior, pero utiliza las sub-funciones

DebugSysReadBusData/DebugSysWriteBusData para modificar el IDT.

La cuarta aprovecha que dado que el programa en modo usuario tiene

acceso directo a hardware, también puede leer y escribir memoria del

kernel con la ayuda de hardware que tenga acceso a la RAM del

procesador. Es un proceso similar al segundo y tercero, pero más

complejo.

A efectos prácticos, un usuario con el privilegio

anteriormente nombrado podría ejecutar código arbitrario como si fuera

del kernel, además de leer y escribir cualquier dirección accesible por

el mismo. El programa podría hacer cualquier cosa que el núcleo pueda

realizar, como reprogramar el hardware del sistema, como la BIOS, o

parchear el kernel en memoria. Hay que tener en cuenta que para explotar

este problema se requiere el privilegio SeDebugPrivilege, normalmente

dado sólo a administradores, por lo que el nivel de riesgo es reducido.

La posesión de este privilegio es suficiente para comprometer el sistema

por su diseño intrínseco.

Como medida sencilla de

precaución, se recomienda conceder dicho privilegio sólo a usuarios de

confianza.

Se tiene constancia de la existencia de códigos de

prueba de concepto que aprovechan este problema.

Redacción Silicon

La redacción de Silicon está compuesta por profesionales del periodismo 2.0

Recent Posts

La desinformación y las fakes news se expanden en la red

Además de fakes news, en internet encontramos múltiples formas de desinformación: clonación de medios de…

57 mins ago

Recomendaciones de seguridad para mantener los almacenes libres de ciberdelincuencia

Sin las medidas de protección necesarias, un almacén puede convertirse en el eslabón más débil…

20 horas ago

La importancia de optimizar los pagos para generar más ingresos y reducir los costes

Adyen publica los resultados de su estudio "Estrategias para reducir el coste total de pagos",…

21 horas ago

Solamente 2 de cada 10 empresas reducen su huella medioambiental con tecnología

Del porcentaje global del 21 % se baja a un 18 % en el caso…

21 horas ago

Sophos: “El uso más frecuente de la IA en la ciberdelincuencia es para ‘turboalimentar’ sus estafas sociales”

Entrevistamos a John Shier, CTO Field de Sophos, que hace repaso de las principales amenazas…

22 horas ago

¿Cómo convertir a España en hub digital clave para Europa?

Desde fibratel comparten una serie de pautas para orientar la construcción de centros de datos…

22 horas ago