J'ai une question sur la randomisation de l'espace d'adressage (ALSR) sur macOS. Selon Apple (2016), " Si vous compilez un exécutable qui cible macOS 10.7 et plus ou iOS 4.3 et plus, les drapeaux nécessaires [pour l'ASLR] sont activés par défaut ". Dans l'esprit de la science, j'ai décidé de tester cela sur Xcode 11.3 et macOS Catalina 10.15.2 avec le programme suivant :
#include <stdio.h>
int main(int argc, const char * argv[]) {
int stack = 0;
printf("%p\n", &stack);
return 0;
}
Selon Arpaci-Dusseau & Arpaci-Dusseau (2018), avec l'ASLR activé, ce programme devrait produire une adresse virtuelle différente à chaque exécution (p. 16). Cependant, chaque fois que j'exécute le programme dans Xcode, la sortie est la même, par exemple :
0x7ffeefbff52c
Program ended with exit code: 0
Qu'est-ce que je rate ?
Références
Pomme. (2017). Éviter les débordements et les sous-exécutions de mémoire tampon. Récupéré de https://developer.apple.com/library/archive/documentation/Security/Conceptual/SecureCodingGuide/Articles/BufferOverflows.html
Arpaci-Dusseau, R. H., & Arpaci-Dusseau, A. C. (2018). Systèmes complets de mémoire virtuelle. Dans Systèmes d'exploitation : Trois pièces faciles . Récupéré de http://pages.cs.wisc.edu/~remzi/OSTEP/vm-complete.pdf