Entering and Breaking the Avast Antivirus Sandbox Part 2
L'article détaille l'exploitation d'une double-fetch dans le pilote noyau d'Avast (CVE-2025-13032) qui permet, via une lecture multiple du champ Length d'un _UNICODE_STRING, d'induire un débordement de pool en PAGED_POOL en synchronisant deux threads. Les auteurs ciblent l'allocation RegBuffers des objets I/O Ring en sprayant le pool pour positionner une allocation adjacente et corrompre un pointeur d'entrée, l'allocation RegBuffers étant entièrement contrôlable depuis l'espace utilisateur. En redirigeant une entrée RegBuffers vers une _IOP_MC_BUFFER_ENTRY factice résidant en espace utilisateur, ils transforment IoRingReadFile et IoRingWriteFile en primitives arbitraires d'écriture et de lecture noyau en modifiant le champ Address de la structure factice. Ils obtiennent une adresse d'_EPROCESS exploitable en forçant la création d'un MDL pour la structure factice, lisent le champ Process depuis cet MDL, puis réparent l'état corrompu du pool (champ ProcessBilled et références) pour éviter un plantage lors du nettoyage. Avec la primitive de lecture/écriture et l'adresse d'_EPROCESS, ils remplacent le token de leur processus par celui de SYSTEM pour l'élévation de privilèges, et indiquent que la vulnérabilité a été corrigée en recommandant de mettre Avast à jour.