Remote Command Execution
Exécution de Commandes à Distance
Description
L'injection de commandes est une attaque dont l'objectif est l'exécution de commandes arbitraires sur le système d'exploitation Android via une application vulnérable. Les attaques par injection de commandes sont possibles lorsqu'une application transmet au shell du système des données non sécurisées fournies par l'utilisateur (formulaires, cookies, en-têtes HTTP, etc.). Lors de cette attaque, les commandes du système d'exploitation fournies par l'attaquant sont généralement exécutées avec les privilèges de l'application vulnérable. Les attaques par injection de commandes sont principalement possibles en raison d'une validation insuffisante des entrées.
Recommandation
Pour atténuer la vulnérabilité d'injection de commandes, voici quelques recommandations :
- Dans la mesure du possible, évitez de construire des commandes système à partir des entrées des utilisateurs.
- Utilisez des requêtes paramétrées pour transmettre des paramètres à une requête ou à une chaîne de commandes de manière sécurisée.
- Utilisez la validation des entrées pour vous assurer que les données fournies par l'utilisateur sont assainies et ne contiennent que les valeurs attendues.
Vous trouverez ci-dessous des exemples de code dans lesquels nous utilisons des requêtes paramétrées pour exécuter des commandes système plutôt que la concaténation brute.
val cmd = listOf("ls", "-al", "/path/to/directory")
val pb = ProcessBuilder(cmd)
val process = pb.start()
ProcessResult result = await Process.run(
"ls",
['-al', '/path/to/directory'],
includeParentEnvironment: false,
environment: {});
Liens
Normes
- OWASP_MASVS_L1:
- MSTG_PLATFORM_2
- OWASP_MASVS_L2:
- MSTG_PLATFORM_2
- CWE_TOP_25:
- CWE_20
- CWE_78
- GDPR:
- ART_5
- ART_32
- PCI_STANDARDS:
- REQ_6_2
- REQ_6_3
- REQ_11_3
- OWASP_MASVS_v2_1:
- MASVS_CODE_4
- SOC2_CONTROLS:
- CC_2_1
- CC_3_4
- CC_4_1
- CC_7_1
- CC_7_2
- CC_7_4
- CC_7_5
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213
- SECURITY255