
Prueba de concepto para la vulnerabilidad de corrupción de memoria 0day en NVIDIA GreenSection, que demuestra una escritura fuera de los límites a través de una sección de memoria compartida, permitiendo el compromiso entre usuarios.
Vulnerabilidad 0day de corrupción de memoria en Nvidia GreenSection
Múltiples componentes en modo usuario de NVIDIA comparten una sección de memoria global en \BaseNamedObjects\{52813408-3561-4705-820a-2b3b78be92ba} con acceso completo de lectura/escritura para todos. Esta sección almacena estructuras de datos importantes en su interior, pero existen comprobaciones en tiempo de ejecución que evitan que algo salga mal. Desafortunadamente, los mismos datos de la sección se reutilizan en tiempo de ejecución, lo que provoca una escritura de memoria fuera de los límites.
Aunque este fallo no otorga privilegios de SYSTEM de inmediato, puede usarse fácilmente para cruzar la frontera entre usuarios o incluso comprometer el proceso dwm.exe. No lo investigué a fondo, pero me encantaría ver a alguien crear un exploit completo a partir de él.
Reproducción:
STACK_TEXT:
00000089`75bfed00 00007ff9`7564e3a4 : 00000000`00000001 00000000`00000001 000001da`b5201340 00000000`00000000 : nvoglv64!DrvPresentBuffers+0xbcdf8
00000089`75bfed30 00007ff9`7564b62a : 000001da`b7910080 00000000`00000000 000001da`b5201301 00000000`00000009 : nvoglv64!DrvPresentBuffers+0xbbc84
00000089`75bfefe0 00007ff9`7592d738 : 00000000`00000000 00000000`00001760 00000000`00000000 000001da`b58a1e80 : nvoglv64!DrvPresentBuffers+0xb8f0a
00000089`75bff020 00007ff9`7592dc6b : 000001da`00000000 000001da`b7910080 00000000`00000000 00000089`75bff150 : nvoglv64!vk_gr2608GetInstanceProcAddr+0x3a5e8
00000089`75bff080 00007ff9`75acd90a : 00000089`75bff300 00000000`00000000 000001da`b52d1480 00000000`00000000 : nvoglv64!vk_gr2608GetInstanceProcAddr+0x3ab1b
00000089`75bff0f0 00007ff9`6eca26dd : 000001db`3ef2a000 00000089`75bff300 000001da`00000400 00006a2d`00000000 : nvoglv64!vkGetInstanceProcAddr+0x16698a
00000089`75bff2e0 00007ff9`6ed1c086 : 00000000`04bf151e 00000000`00000000 00000000`00000000 00000000`04bf151e : plugin_gxc_vulkan2_x64!ImGuiTextFilter::`default constructor closure'+0x11e3d
00000089`75bff370 00007ff9`6ed15239 : 00000000`00000000 000001da`f3b548b0 000001da`f3b2d3f0 00000000`00000000 : gpumagick_sdk_x64!gm::app_set_param_bool+0xbb5e
00000089`75bff770 00007ffa`3aede8d7 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : gpumagick_sdk_x64!gm::app_set_param_bool+0x4d11
00000089`75bff7b0 00007ffa`3bccc48c : 00000000`00000000 00000000`00000000 000004f0`fffffb30 000004d0`fffffb30 : kernel32!BaseThreadInitThunk+0x17
00000089`75bff7e0 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x2c