6
votes

Randomisation de la mémoire en tant qu'amanciement de la sécurité des applications?

Je suis récemment venu sur un article Microsoft qui a vu de nouvelles "améliorations défensives" de Windows 7. Plus précisément:

  • Adresse Space Disposition Randomisation (ASLR)
  • Randomisation en tas
  • Randomisation de la pile

    L'article a ajouté que "... Certaines de ces défenses sont dans le système d'exploitation de base, et le compilateur Microsoft Visual C ++ offre d'autres" mais n'a pas expliqué comment ces stratégies augmenteraient réellement la sécurité.

    Quelqu'un sache pourquoi la randomisation de la mémoire augmente la sécurité, si du tout? Les autres plates-formes et compilateurs utilisent-ils des stratégies similaires?


1 commentaires

Un petit NIT: ASLR a été ajouté à Vista, pas Win7.


3 Réponses :


2
votes

Cela fait des attaques comme Retour à Libc (ou retourner à l'utilisateur- fourni un tampon de données dans le cas des deux derniers) beaucoup plus difficiles. Et oui, il est disponible dans Linux, BSD et Mac OS. Comme vous l'attendez, les détails varient selon les systèmes d'exploitation. Voir Wikipedia pour une introduction .


0 commentaires

9
votes

Il augmente la sécurité en rendant difficile la prédiction où quelque chose sera en mémoire. Un dépassement de tampon tout à fait fonctionne de fonctionner en mettant (par exemple) l'adresse d'une routine connue sur la pile, puis de revenir à elle. Il est beaucoup plus difficile de le faire sans connaître l'adresse de la routine pertinente.

Autant que je sache, OpenBSD était à peu près le premier à le faire, au moins parmi les différents systèmes d'exploitation raisonnablement connus pour les PC.


4 commentaires

Liens pour soutenir vos revendications, j'aimerais en savoir plus sur eux.


en.wikipedia.org/wiki/stack_buffer_overflow , Kerneltrap.org/node/573


Est-ce que cela romise de DLL pour le système d'exploitation ou pour mon application? Ou les deux?


Définitivement les DLL du système d'exploitation. Pour votre code, vous devez spécifier / dynamicbase lors de la liaison pour l'activer.



0
votes

En randomisant la pile, vous faites des attaques de débordement de tampon de vanille comme Aleph One brisant la pile pour le fun bénéfice impossible. La raison en est que l'attaque s'appuie sur la mise en place d'une petite ammé de code exécutable Calld shellcode dans un emplacement prévisible en mémoire. Le cadre de pile de fonctions est corrompu et son adresse de retour remplacée par une valeur que l'attaquant choisit. Lorsque la fonction corrompue renvoie le flux d'exécution se déplace sur le coquillage de l'attaquant. Traditionnellement, cette adresse mémoire est si prévisible qu'il serait identique sur toutes les machines qui exécutent la même version du logiciel.

Malgré la protection de la mémoire avancée implémentée sur l'exécution du code à distance Windows 7 est toujours possible. Récemment à CANSECWest une machine à exécuter des fenêtres 7 et IE 8 a été piratée en quelques secondes. Voici un Description technique d'une attaque de corruption moderne de mémoire utilisant un pointeur pendling dans conjonction avec un débordement de tas.


0 commentaires