Réalisation d’une preuve de concept pour la vulnérabilité CVE-2017-5123

Magazine
Marque
MISC
Numéro
96
Mois de parution
mars 2018
Spécialité(s)


Résumé

Début octobre 2017, une vulnérabilité a été découverte par Chris Salls dans l’implémentation de l’appel système waitid [1] au sein du noyau GNU/Linux, permettant notamment d’écrire des données dans l’espace mémoire réservé au noyau. Cet article tente de retracer de façon détaillée l’étude de la cause de celle-ci ainsi que les différents obstacles rencontrés lors de son exploitation.


1. Premier coup d’œil

1.1 Détails de la vulnérabilité

Un coup d’œil sur le correctif [PATCH] permet de voir que la vulnérabilité est présente au sein du syscallwaitid. Pour rappel, celui-ci permet de mettre une tâche en attente de la complétion d’une autre. Le message de commit est assez sommaire (waitid(): Add missing access_ok() checks) et la modification apportéene fait que deux lignes :

+ if (!access_ok(VERIFY_WRITE, infop, sizeof(*infop)))

+ goto Efault;

Après une rapide lecture de la documentation sur access_ok, on découvre que cet appel de fonction permet de s’assurer de l’innocuité de l’accès pour une taille donnée à une adresse passée en argument. Par innocuité et dans notre cas d’une architecture x86, on entend ici deux choses :

  • cette adresse pointe vers l’espace utilisateur ; ne pas oublier que nous sommes en train de traiter un appel système et que nous sommes donc en espace noyau en train d’exécuter du...
Cet article est réservé aux abonnés. Il vous reste 96% à découvrir.
S'abonner à Connect
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Je m'abonne


Article rédigé par

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous