Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sécuriser son code grâce à l'analyse statique, ...

Avatar for lizard lizard
August 27, 2020

Sécuriser son code grâce à l'analyse statique, exemple avec les XSS

Présentation effectuée par Guillaume Klaus sur "Sécuriser son code grâce à l'analyse statique, exemple avec les XSS" lors du Meetup d'Aout 2020

Avatar for lizard

lizard

August 27, 2020
Tweet

More Decks by lizard

Other Decks in Technology

Transcript

  1. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen Sécuriser son code grâce à l’analyse statique 27/08/2020 Guillaume Klaus, Web Architect @Theodo 1
  2. Qui suis-je ? Guillaume Klaus, Web Architect @Theodo Mes technos

    ❤ : React, Django, Flask & NestJS Membre de la team sécu de Theodo : - audit des apps - formation des équipes 2
  3. Plan 1 - Comment vérifier la sécurité de nos applis

    web ? 2 - Comment tirer profit de l’analyse statique pour sécuriser nos apps ? 3 - Exemple de création d’une règle pour éviter les failles XSS 3
  4. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen - définir une liste de catégories et des protocoles de vérifications associées - promouvoir les bons gestes pour chaque catégorie 5
  5. Pour chaque catégorie, on peut : - Vérifier à la

    main : pas infaillible et pas scalable - Utiliser des outils de détection au runtime : - plus proche de la réalité - souvent beaucoup de faux positifs, - détections tardives car après la phase de dév - Utiliser des outils utilisant l’analyse statique : - tout n’est pas détectable (e.g. input utilisateur malveillant) - MAIS la détection se fait pendant la phase de dév 6
  6. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 8 L’analyse statique, comment ça marche ? Parseur Abstract Syntax Tree (AST)
  7. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 9 L’analyse statique, comment ça marche ? Démarche de détection en analyse statique recherche de patterns intéressants dans l’AST On peut ensuite écrire nos propres règles, spécifiques à nos besoins
  8. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 10 Exemples de détections possibles : - Détection de secrets dans le code : - recherche du pattern correspondant à une déclaration de string - mesure du “désordre” de la string (par exemple entropie de Shannon) & comparaison par rapport à un seuil
  9. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 11 Exemples de détections possibles : - Détection de l’utilisation de fonctions de hashages pour les modèles : - comparaison des patterns rencontrés dans les fichiers de modèles de BDD avec un pattern correct
  10. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 12 3 - Et pourquoi pas également la détection de failles XSS ?
  11. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 13 Petit rappel sur les XSS Injection de code potentiellement malveillant dans les pages Impact : vol possible de cookies mal protégés, de tokens JWT, et tout ce qui est possible de faire avec du code
  12. 5 utilisateurs permettent de détecter plus de 80% des comportements

    Jakob Nielsen 16 En utilisant les méthodes d’injection : dangerouslySetInnerHTML v-html bypassSecurityTrustHtml
  13. 17 Stratégie pour éviter les XSS : Si injection de

    code => utiliser une librairie de sanitizing Exemple DOMPurify en JS :
  14. 18 Stratégie pour créer la règle : - détecter le

    pattern d’utilisation des méthodes d’injection - vérifier qu’une méthode de sanitizing est utilisée