Éditeurs de liens, chargeurs et exécutables

Quelle attaque est plus facile à prévenir en n'autorisant jamais simultanément « inscriptible » et « exécutable » sur une page mémoire (W^X, séparation écriture-exécution) ?

  1. AL'attaque qui essaie les mots de passe par force brute
  2. BL'attaque qui envoie un trafic massif pour arrêter un serveur
  3. CL'attaque qui écrit du code machine malveillant dans une zone de données comme la pile et y fait sauter l'exécution
Afficher la réponse et l'explication

Réponse : C. L'attaque qui écrit du code machine malveillant dans une zone de données comme la pile et y fait sauter l'exécution

Les anciennes attaques écrivaient souvent du langage machine sur la pile par débordement de tampon, puis redirigeaient l'adresse de retour vers celui-ci pour l'exécuter. Les tables de pages du CPU comportent un bit d'interdiction d'exécution (bit NX, etc.) ; si l'OS interdit l'exécution sur la pile, le tas et .data, et l'écriture sur .text, cette méthode devient inutilisable. Lorsque du code est généré à l'exécution, comme par un compilateur JIT, on bascule entre droits d'écriture et d'exécution.

S'entraîner sur ce thème Retour au thème

Autres questions sur Éditeurs de liens, chargeurs et exécutables

  1. Sous Linux, dans quel cas incrémente-t-on généralement le numéro de version du soname, comme le « .1 » de libfoo.so.1 ?
  2. Que permet de savoir la commande ldd appliquée à un exécutable sous Linux ?
  3. Quelle combinaison des formats d'exécutables utilisés par les principaux OS est correcte ?
  4. Lorsqu'une récursion trop profonde dépasse la limite de la pile, que se passe-t-il généralement sous Linux notamment ?
  5. En C, quelle affirmation concernant la valeur initiale d'une variable locale et d'une variable globale déclarées sans valeur initiale est correcte ?

Comparatifs sur ce thème