21
déc.
'09

Bypassing SEHOP

Publié le 21 décembre 2009

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.



Les contenus disponibles sur ce blog sont publiés sous licence Creative Commons BY-NC-SA.
Vous pouvez réutiliser tout ou partie de ces contenus à condition de citer l'auteur et l'origine, vous ne pouvez en faire une utilisation commerciale, et enfin vous devez partager tout travail ou œuvre dérivée sous les mêmes conditions — c'est-à-dire avec la même licence d'utilisation Creative Commons.