Parce que… c’est l’épisode 0x586!

Shameless plug

Description

Introduction et contexte de la recherche

Gabriel St-Hilaire, enseignant au Cégep Seigneur de Sichel depuis une dizaine d’années et spécialiste en développement d’applications web, a mené une recherche dans le cadre de sa maîtrise en cybersécurité à l’Université de Sherbrooke. Sa recherche porte sur l’utilisation de ChatGPT pour aider au développement sécuritaire.

La problématique qui a motivé cette recherche est simple : pourquoi les programmeurs continuent-ils à faire des erreurs de sécurité dans leur code malgré l’enseignement des bonnes pratiques ? Pour répondre à cette question, Gabriel a exploré la littérature scientifique et identifié trois constats majeurs :

  1. Les programmeurs en entreprise cherchent à déléguer la responsabilité de la sécurité, pensant que quelqu’un d’autre fera la revue de code et trouvera les problèmes.
  2. La cybersécurité passe souvent au second plan, sacrifiée au profit des délais et des fonctionnalités à livrer rapidement.
  3. Il existe un manque de connaissances : même quand des outils signalent des problèmes de sécurité, les développeurs ne savent pas comment les résoudre.

État actuel des méthodes de détection

Gabriel a ensuite examiné l’efficacité des méthodes actuelles pour détecter les vulnérabilités :

  • Les revues de code par des pairs ont un taux de détection inférieur à 50%, et même ceux qui trouvent les vulnérabilités ne savent souvent pas comment les corriger.
  • Les outils d’analyse statique de sécurité sont encore moins efficaces, avec un taux de détection moyen d’environ 18% (35% pour les meilleurs outils). Ces outils ont également un taux élevé de faux positifs et se concentrent souvent sur certaines catégories de vulnérabilités au détriment d’autres.

Potentiel de l’intelligence artificielle

Face à ces lacunes, Gabriel s’est intéressé au potentiel de l’intelligence artificielle pour améliorer la détection des vulnérabilités. Deux éléments sont ressortis de ses recherches :

  1. Des modèles d’IA spécialisés peuvent être très performants (jusqu’à 98% de taux de détection) pour des types spécifiques de vulnérabilités comme les injections SQL, mais ne sont pas adaptés à la variété de technologies et vulnérabilités rencontrées en pratique.
  2. L’IA générative, particulièrement GPT-4, montre une excellente compréhension du code (97% de taux de compréhension), même lorsque le code est obscurci (87%).

Gabriel souligne que l’IA générative présente un double avantage : non seulement elle peut analyser le code, mais elle permet aussi d’entamer un dialogue pour comprendre les problèmes détectés, ce qui en fait un excellent outil pédagogique.

Méthodologie de la recherche

Pour tester l’efficacité de ChatGPT dans un contexte réaliste, Gabriel a :

  1. Développé une application PHP de base sans failles de sécurité
  2. Ajouté 86 vulnérabilités différentes dans des fonctionnalités réalistes
  3. Soumis ces modifications à ChatGPT en lui demandant de faire une revue de code de sécurité
  4. Demandé à ChatGPT d’identifier les lignes problématiques, de décrire les vulnérabilités et de fournir les codes CWE (Common Weakness Enumeration) correspondants

Résultats et conclusions

Les résultats ont été analysés selon trois critères :

  • “Trouvé” : ChatGPT a identifié la ligne problématique, donné la bonne description et le bon code CWE
  • “Partiellement trouvé” : ChatGPT a identifié la ligne et la bonne description, mais pas le bon code CWE
  • “Non trouvé” : ChatGPT n’a pas détecté la vulnérabilité

ChatGPT a atteint un taux de détection complète (avec le bon code CWE) d’environ 17-19%, ce qui est faible. Cependant, en incluant les détections partielles, le taux monte à environ 56%, ce qui est supérieur aux revues de code humaines et aux outils d’analyse statique actuels.

Limites et perspectives

Gabriel a identifié plusieurs limites et pistes d’amélioration :

  1. La documentation des codes CWE est inégale, ce qui complique la tâche de ChatGPT pour les classifier correctement.
  2. ChatGPT a du mal à détecter les vulnérabilités qui concernent l’absence de quelque chose (comme l’absence de journalisation).
  3. La nature non déterministe de ChatGPT pose problème pour une utilisation rigoureuse en entreprise (résultats différents pour la même question).
  4. Le manque de contexte lors de l’analyse de modifications de code isolées peut conduire à des faux positifs.

Pour améliorer ces résultats, Gabriel suggère :

  • Fournir plus de contexte à ChatGPT (l’ensemble du projet)
  • Réduire le paramètre de température de ChatGPT pour avoir des réponses plus déterministes
  • Poser des questions plus spécifiques pour détecter les vulnérabilités liées à l’absence de certains mécanismes
  • Explorer des modèles d’IA plus spécialisés ou personnalisés (RAG)

Cette recherche ouvre la voie à une meilleure intégration de l’IA dans les processus de développement sécuritaire, non seulement pour détecter les vulnérabilités mais aussi pour aider les développeurs à les comprendre et les corriger.

Collaborateurs

Crédits

Télécharger .m4a (31.0M) Télécharger .mp3 (25.7M)

Tags: code, cybereco, developpement, ia


Tweet