« GitHub Copilot, l'assistant de codage de GitHub alimenté par l'IA, peut suggérer du code non sécurisé quand la base de code existante de l'utilisateur contient des problèmes de sécurité », a alerté l’éditeur Snyk. « GitHub Copilot peut reproduire les problèmes de sécurité existants dans le code », a déclaré Snyk dans un article de blog publié le 22 février. « Cela signifie que la dette de sécurité existante dans un projet peut faire que les développeurs dont le code est mal sécurisé, livrent un code encore moins sûr quand ils utilisent Copilot », a ajouté l'entreprise. Cependant, la probabilité pour GitHub Copilot de suggérer du code non sécurisé dans des projets sans problèmes de sécurité, est moins élevée, car le contexte de code dont s’inspire l’assistant est moins incertain.
« Les assistants de codage basés sur l’IA générative comme GitHub Copilot, Amazon CodeWhisperer et ChatGPT représentent un progrès considérable en termes de productivité et d'efficacité du code », a déclaré Snyk. Mais ces outils ne comprennent pas la sémantique du code et ne peuvent donc pas juger de sa qualité. GitHub Copilot génère des extraits de code en se basant sur des modèles et des structures qu'il a appris à partir d'un vaste référentiel de code existant. « Si cette approche présente des avantages, elle peut aussi présenter un inconvénient flagrant dans le contexte de la sécurité », a ajouté Snyk.
40 vulnérabilités en moyenne dans un logiciel commercial
Les suggestions de code de Copilot peuvent reproduire par inadvertance les vulnérabilités de sécurité existantes et les mauvaises pratiques présentes dans les fichiers voisins. Pour atténuer ce report des problèmes de sécurité existants dans le code généré par les assistants d'IA, Snyk conseille aux développeurs les choses suivantes :
- de procéder à des examens manuels du code. Les équipes de sécurité doivent mettre en place un garde-fou SAST (Security Application Security Testing), y compris des politiques.
- de respecter les directives de codage sécurisé. Les équipes de sécurité doivent former et sensibiliser les équipes de développement, hiérarchiser et trier les problèmes en attente par équipe. Les équipes de direction devraient imposer des garde-fous de sécurité.
Les données de Snyk indiquent qu’un projet logiciel commercial normal comporte en moyenne 40 vulnérabilités dans le code de première partie, et que près d'un tiers de ces vulnérabilités sont de haute gravité. « Les outils de génération d'IA peuvent tout à fait dupliquer le code en utilisant ces vulnérabilités comme contexte », a insisté Snyk. Les problèmes les plus courants constatés par Snyk dans les projets commerciaux sont les scripts intersites XSS, les vulnérabilité Path Traversal, l'injection SQL et les secrets et informations d'identification codés en dur. GitHub n'a pas pu être joint hier en fin d'après-midi pour répondre aux commentaires de Snyk sur GitHub Copilot.