[Sécurité] Secure Coding - Eviter les TOCTTOU
|
13-08-2014, 14h22
Message : #1
|
|
b0fh
Membre actif Messages : 210 Sujets : 17 Points: 309 Inscription : Jul 2012 |
[Sécurité] Secure Coding - Eviter les TOCTTOU
Hello,
Aujourd'hui, un petit rappel sur les vulnérabilités de type TOCTTOU (Time-of-Check-to-Time-of-Use), et comment les éviter. Une vulnérabilité TOCCTOU se présente lorsqu'on vérifie une condition (time-of-check) avant d'exécuter une action (time-of-use), de manière non-atomique, c'est-à-dire que l'état du système (donc le résultat de la condition) risque de changer entre ces deux opérations. Le risque existe donc quand on manipule des structures de données partagées entre plusieurs threads, ou qu'on utilise de l'IPC (fichiers, pipes) en présence de process hostiles. Dans ce cas, la mantra a appliquer est: "mieux vaut demander pardon que permission", i.e. exécuter l'action et traiter l'erreur si elle se produit, plutôt que d'essayer de l'empêcher à l'avance.. Dans un post récent, j'ai vu passer quelque chose du genre: Code PYTHON :
Prenez l'habitude de faire plutôt: Code PYTHON :
ou, si vous ne désirez pas intercepter une KeyError lancée ailleurs dans do_something_with(): Code PYTHON :
En utilisant systématiquement les exceptions et les retours d'erreurs plutôt que les vérifications d'avance, vous éviterez ces vulnérabilités. Si l'API ne le permet pas, c'est que l'API n'est pas adaptée a la programmation concurrente et qu'il faut la changer ! Quand ce n'est pas possible, il faut essayer de rentre l'ensemble des opérations atomique, en utilisant par exemple un verrou. |
|
« Sujet précédent | Sujet suivant »
|
Utilisateur(s) parcourant ce sujet : 1 visiteur(s)