Lors d’une revue de code, code review, orientée vers la sécurité, il est essentiel de se concentrer sur les vulnérabilités courantes et les problèmes de sécurité qui pourraient exposer l’application à des risques significatifs. Ces vulnérabilités incluent, sans s’y limiter, le Cross-Site Scripting (XSS), les injections SQL, le suivi des sessions, l’authentification, l’autorisation, la journalisation (logging) et la fuite d’informations.
Voici comment aborder ces problématiques lors d’une revue de code :
Cross-Site Scripting (XSS)
Le XSS se produit lorsqu’une application permet l’insertion de scripts malveillants dans les données affichées aux utilisateurs. Pour prévenir le XSS, il est crucial de valider et de filtrer toutes les entrées utilisateur, ainsi que d’encoder correctement les données avant de les afficher.
Injections SQL
L’injection SQL se produit lorsque les entrées utilisateur sont utilisées dans des requêtes SQL sans une désinfection adéquate, permettant aux attaquants d’exécuter des commandes arbitraires sur la base de données. Il est fondamental d’utiliser des requêtes paramétrées ou des procédures stockées pour séparer le code SQL des données utilisateur, évitant ainsi l’insertion de commandes malveillantes.
Suivi des sessions
Le suivi des sessions est essentiel pour maintenir la sécurité de l’utilisateur pendant sa navigation. Il faut garantir que les identifiants de session sont générés de manière sécurisée et qu’ils sont correctement invalidés à la fin des sessions. De plus, il est nécessaire de protéger les sessions contre les attaques de fixation de session et de détournement de session (session hijacking).
Authentification et Autorisation
Ces deux aspects sont fondamentaux pour garantir que seuls les utilisateurs légitimes puissent accéder aux ressources appropriées. L’authentification doit être robuste, de préférence avec l’utilisation de l’authentification multi-facteurs, tandis que l’autorisation doit être rigoureusement appliquée pour garantir que les utilisateurs ne puissent accéder qu’aux données et fonctionnalités pour lesquelles ils sont autorisés.
Journalisation et fuite d’informations
La journalisation (logging) doit être mise en œuvre de manière à ne pas exposer d’informations sensibles. Les données enregistrées doivent être limitées à celles nécessaires au suivi et au diagnostic, et doivent être protégées contre tout accès non autorisé. Il est également important d’éviter que les journaux ne contiennent des données sensibles telles que des mots de passe ou des informations personnellement identifiables (PII) non masquées.
Contrôles spécifiques au langage de programmation
Chaque langage de programmation possède ses propres particularités et types de vulnérabilités courantes. Par exemple, des langages comme le C et le C++ peuvent être sujets aux dépassements de tampon (buffer overflow), tandis que des langages comme Java et C# sont moins vulnérables à ce type d’attaque grâce à leur gestion de la mémoire. Lors de la revue, il est important de connaître les vulnérabilités spécifiques au langage utilisé et d’appliquer les meilleures pratiques pour atténuer les risques associés.
Approche contextuelle et revue manuelle
Bien que les outils d’analyse statique puissent aider à identifier des vulnérabilités dans le code, une revue manuelle est toujours nécessaire pour comprendre le contexte de l’application et évaluer la gravité réelle des vulnérabilités. Cette revue humaine est cruciale pour identifier les risques spécifiques et proposer les mesures d’atténuation les plus appropriées.
🔙 Retour à la mini-série d’ISGroup SRL dédiée à la revue de code !
Leave a Reply