
Proof-of-concept per la corruzione della memoria 0day di NVIDIA GreenSection, che dimostra una scrittura fuori dai limiti tramite una sezione di memoria condivisa, consentendo il compromesso tra utenti diversi.
Vulnerabilità 0day di corruzione della memoria Nvidia GreenSection
Molti componenti in modalità utente NVIDIA condividono una sezione di memoria globale in \BaseNamedObjects\{52813408-3561-4705-820a-2b3b78be92ba} con accesso completo in lettura/scrittura per tutti; questa sezione memorizza al suo interno strutture dati importanti, ma ci sono controlli in fase di esecuzione che impediscono che qualcosa vada storto. Sfortunatamente gli stessi dati della sezione vengono riutilizzati in fase di esecuzione causando una scrittura in memoria fuori dai limiti.
Sebbene questo bug non fornisca immediatamente privilegi SYSTEM, può essere facilmente usato per attraversare il confine tra utenti o persino compromettere il processo dwm.exe. Non ho approfondito la questione, ma sarei felice di vedere qualcuno sviluppare un exploit completo a partire da esso.
Riproduzione:
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