Une vulnérabilité de type débordement de tampon, c'est toujours marrant.
Une fois découverte, il ne reste plus qu'à écrire l'exploit, si cette vulnérabilité est exploitable.
Compte tenu des contraintes techniques et de l'architecture des noyaux Windows récents, une méthode répandue est d'exploiter le mécanisme de gestion des exceptions de Windows, le SEH (Structured Exception Handler).
On écrase l'offset d'un exception handler, on provoque une exception et le flot d'exécution est redirigé vers notre code. Pratique...
Mais les Microsoft guys se sont penchés sur le sujet. En effet, interdire l'exploitation du SEH pour exécuter du code injecté pourrait rendre inutile pas mal d'exploits.
C'est exactement le but du SEHOP (Structured Exception Handler Overwrite Protection).
Le principe est simple, on ajoute un enregistrement symbolique à la fin du SEH, qui est une liste chainée.
Lorsqu'une exception est levée, le dispatcher d'exception récupère l'adresse de l'enregistrement du SEH courant (qui contient un pointeur vers le gestionnaire d'exception à exécuter) et, au lieu d'exécuter directement le gestionnaire d'exception associé, commence par vérifier la chaîne de gestionnaires.
Si l'enregistrement symbolique ne se trouve pas en bout de chaîne, on considère que le SEH a été modifié de façon suspecte et le processus est terminé.
Le SEHOP est, par défaut, activé sur Windows Server 2008 et désactivé sur Vista SP1.
Alors, est-ce la mort des exploits Win32 avec le SEHOP? Mmmm, pas si sûr... 
Derniers commentaires