Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

OS Command Injection

hacking

Définition

L'OS Command Injection, ou injection de commandes système, est une vulnérabilité critique par laquelle une application exécute des commandes du système d'exploitation sous-jacent, via des fonctions comme system(), exec() ou des équivalents selon le langage, en intégrant directement des entrées fournies par l'utilisateur sans validation ni neutralisation appropriée des caractères spéciaux interprétés par l'interpréteur de commandes (shell), tels que le point-virgule, l'esperluette ou les pipes qui permettent d'enchaîner plusieurs commandes. Un cas typique survient lorsqu'une fonctionnalité applicative légitime, par exemple un outil de diagnostic réseau intégré qui exécute une commande ping vers une adresse fournie par l'utilisateur, transmet cette adresse directement à l'interpréteur shell sans validation stricte de son format, permettant à un attaquant de fournir une valeur comme une adresse suivie d'un séparateur de commande et d'une commande arbitraire supplémentaire, exécutée avec les mêmes privilèges que l'application vulnérable elle-même. Cette classe de vulnérabilité, référencée dans le classement CWE-78, figure parmi les plus critiques identifiées car elle permet généralement une exécution de code arbitraire complète sur le serveur, ouvrant la voie à une compromission totale du système, une exfiltration de données ou un pivot vers le reste du réseau interne. La remédiation privilégiée consiste à éviter totalement l'appel à un interpréteur shell en utilisant des API natives du langage, ou à défaut une liste blanche stricte de valeurs autorisées.

Description

L'injection de commandes OS dans des applications exécutant des commandes shell avec des entrées utilisateur non sanitisées permet d'exécuter du code arbitraire. Distincte de la Command Injection classique, elle cible spécifiquement les appels système directs sans interpréteur shell intermédiaire.

Exploitation

Des paramètres comme le nom de fichier ou l'adresse IP passés directement à popen() ou exec() permettent d'injecter des commandes via ; whoami, && cat /etc/passwd. L'impact est une compromission complète du serveur hôte.

Défense

  • Utiliser des bibliothèques système natives sans passage par un shell (execve, subprocess avec liste)
  • Valider les entrées par whitelist stricte et typer les paramètres (IP, nom de fichier)
  • Exécuter les processus avec le principe du moindre privilège et en sandbox si possible

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis