Intro
La protection SEHOP (qui signifie “Structured Exception Handling Overwrite Protection”) est implémentée dans les versions Windows 7, Vista SP1 et Windows 2008. Elle empêche théoriquement l'exploitation de “buffer overflow” par écrasement de gestionnaire d'exception.
En théorie.
Il existe toutefois une manière de contourner cette seule protection SEHOP, moyennant quelques conditions et un peu d'astuce, comme le montre le papier suivant, Bypassing SEHOP.
Principe
Le principe du contournement de SEHOP est trivial: Windows vérifiant si l'enchaînement des structures SEH (gestionnaires d'exception) est valide, il s'agit de créer une fausse chaîne de gestionnaires d'exception en prenant soin de mettre des adresses valides sur la pile, tout en maquillant du code exécutable en adresse de pile valide.
L'ensemble est décrit dans le papier, avec une preuve de concept qui exploite une vulnérabilité (un buffer overflow) locale. L'exploit n'a été testé que sous Windows 7, mais devrait a priori fonctionner sous Windows Vista avec un shellcode approprié.
Outro
L'exploitation via le contournement de SEHOP est tout de même à nuancer, la protection SEHOP ne se présentant généralement pas seule, mais couplée au DEP ou à l'espace d'adressage aléatoire (“Adress Space Layout Randomization”). La protection reste donc efficace, principalement contre les attaques distantes. A noter que cet ensemble de nouvelles protections intégrées à Microsoft Windows n'empêchent pas les dénis de service.