La recherche d'Adam portait initialement sur l'API SetWindowSubclass, une fonction du système d'exploitation Windows qui gère les fenêtres d'application de l'interface utilisateur graphique dans leur processus parent. Adam a découvert qu'il pouvait abuser des propriétés de fenêtre GUI légitimes (UxSubclassInfo et CC32SubclassInfo) utilisées en interne par la fonction SetWindowSubclass pour charger et exécuter du code malveillant dans d'autres applications (légitimes).
« Tous les processus ne peuvent pas être injectés », a-t-il expliqué. « Seules les [applications] qui utilisent les contrôles d'interface graphique de Windows et les frameworks GUI populaires. »
« Ce n'est pas vraiment une limitation », a-t-il continué, « le bogue couvre la majorité des applications populaires, y compris Windows Explorer - une cible populaire pour l'injection de code. »
Dans un billet de blog publié il y a deux semaines, Adam a indiqué avoir réalisé une PoC de PROPagate dans laquelle il a injecté du code dans « Windows Explorer, Total Commander, Hacker, Ollydbg et quelques autres applications. » Bien entendu, il n’est pas question pour lui de diffuser le code source en ligne, mais il a donné quelques indications et a assuré qu’elle fonctionnait aussi bien sur Windows XP que sur Windows 10.
Dans une étude ultérieure publiée par Adam vendredi dernier, il a également découvert que les attaques par injection de code PROPagate fonctionnent à la fois sur des processus 32 bits et 64 bits, avec peu de modifications.
En outre, outre les propriétés de l'API SetWindowSubclass UxSubclassInfo et CC32SubclassInfo, Adam a indiqué que d'autres « propriétés génériques ou légitimes peuvent potentiellement être exploitées de la même manière. »
« Il y a de la place pour d'autres recherches », a-t-il déclaré. « De nombreuses applications créent des propriétés Windows qui utilisent des propriétés qui semblent inclure des pointeurs de mémoire référençant des fonctions de rappel ou des méthodes qui pourraient être modifiées pour pointer vers un code malveillant. »
Aussi, il a énuméré des pistes à explorer pour de futures recherches dans les attaques PROPagate :
- la bibliothèque Microsoft Foundation Class (MFC), qui utilise la propriété 'AfxOldWndProc423' pour sous-classer ses fenêtres ;
- ControlOfs [HEX] - les propriétés associées aux applications Delphi font référence à des objets VCL (Visual Component Library) en mémoire ;
- un certain nombre de contrôles personnalisés utilisent 'subclass' et ils peuvent être modifiés de la même manière ;
- certaines propriétés exposent des interfaces COM / OLE, par exemple. OleDropTargetInterface ;
- SetWindowWord et SetClassWord.
Adam a insisté sur le fait qu’il ne s’agit pas là d’une cause sérieuse de préoccupation comparée à d'autres types de bogues de sécurité, tels que l'exécution de code à distance ou l'escalade des privilèges.
« C'est une technique d'évasion. Je n'ai pas contacté Microsoft parce que ce n'est pas un RCE ou un EoP et je ne pense pas que cela mérite d'être signalé. Pour utiliser l'attaque, il faut déjà exécuter du code sur votre système, c'est-à-dire que les jeux sont déjà faits et en tant que tel, cela a une portée limitée. »
Source : BC, billet Adam, billet Adam 2