Un problème systémique

Magazine
Marque
MISC
HS n°
Numéro
30
Mois de parution
octobre 2024
Spécialité(s)


Résumé

La fonction system(3), disponible dans la bibliothèque C standard et standardisée dès C89, est symptomatique d’une époque où la sécurité n’était pas la priorité des développeurs. La lecture de sa page de manuel est pleine d’avertissements, qui sont autant d’enseignements potentiels. Allez, c’est parti, man 3 system.


La fonction system de la libc a la signature suivante :

int system(const char *command).

Un code retour, une chaîne de caractères en entrée, derrière cette simplicité désarmante (la page de manuel dit bien « provides simplicity and convenience ») se cachent une multitude d’écueils que nous allons parcourir ensemble.

1. Séparation des arguments

La fonction se comporte comme si l’on exécutait :

execl("/bin/sh", "sh", "-c", command, (char *) NULL)

c’est donc le shell par défaut qui se charge de transformer notre chaîne de caractères en…

Cet article est réservé aux abonnés. Il vous reste 90% à 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