Copilot, à utiliser avec précaution ? GitHub ne l’a pas caché : cet outil de complétion de code présente encore bien des limites. En premier lieu, sur la qualité des suggestions.
À l’origine du modèle d’apprentissage automatique sur lequel repose Copilot*, OpenAI pointe un autre aspect : la sécurité du code généré. L’entreprise a abordé la question dans un rapport technique. Avec des observations néanmoins restreintes. En l’occurrence, à deux aspects cryptographiques : la création de clés RSA trop courtes et l’usage d’AES en mode ECB.
Répondant à l’appel d’OpenAI, une étude en provenance de l’université de New York est finalement venue compléter cette première approche. Et la mettre en chiffres. Avec le top 25 CWE comme référentiel, elle s’est étendue sur trois axes :
Dans les grandes lignes, la démarche a consisté à créer, sur chacun de ces volets, plusieurs scénarios susceptibles d’engendrer telle ou telle CWE. Et à laisser Copilot faire ses suggestions – jusqu’à 25 par scénario. Au global, sur les 1 692 programmes corrects générés, 40,48 % se sont révélés vulnérables.
Les chercheurs reconnaissent que leur démonstration a des limites. Entre autres, celles de l’outil CodeQL, utilisé pour réaliser une part importante des tests de sécurité. Mais aussi l’inconstance de la « boîte noire » que constitue Copilot : ses suggestions sur un même scénario peuvent varier avec le temps.
Sur le premier axe, l’analyse a couvert 18 CWE. Avec, pour chacune, trois scénarios. Parfois créés sur mesure ; éventuellement tirés de la base MITRE ou issus du catalogue CodeQL. Des 1087 programmes valides, 477 (43,88 %) contenaient la CWE pour laquelle les scénarios associés avaient été conçus. Dans 44,44 % des scénarios, la suggestion principale de Copilot s’est avérée vulnérable.
Le taux de vulnérabilité apparaît plus important en C (50 % des programmes) qu’en Python (38,4 %). De manière générale, il aurait pu, soulignent les chercheurs, être plus élevé si on n’avait écarté les suggestions incomplètes mais probablement sujettes à faille. Ou encore si on avait tenu compte des programmes susceptibles d’abriter d’autres CWE que celles ciblées (par exemple, dans une fonction de login, injection SQL et divulgation de secrets).
Par CWE, les taux les plus élevés se constatent sur :
Pour le deuxième axe, l’étude s’est focalisée sur une CWE : l’injection SQL. Elle s’est restreinte au langage Python, exclusivement avec des modèles issus de CodeQL et des tests de sécurité manuels. Sur 407 programmes générés pour 17 scénarios, 152 (37,35 %) se sont révélés vulnérables. Les chercheurs ont joué sur trois dimensions :
Le troisième axe s’est incarné à travers la génération de code RTL (description d’architectures électroniques) en Verilog. Avec comme référence une classe particulière de CWE : celles qui touchent au hardware. À défaut de top 25, les chercheurs en ont sélectionné six, avec trois scénarios chacune. Sur 198 programmes, 56 (28,28 %) ont présenté des vulnérabilités. Sur 7 scénarios (38,89 %), la principale suggestion était problématique.
* Copilot s’appuie sur Codex, une famille de modèles elle-même fondée sur GPT-3. Il hérite de certains de ses attributs, dont le fait de générer la suggestion la plus « logique » vis-à-vis de ses données d’entraînement – et non pas la plus optimisée. GitHub a récemment élargi son périmètre d’expérimentation, sur invitation.
Photo d’illustration © maciek905 – Adobe Stock
Pour développer une version 7B de son modèle Codestral, Mistral AI n'a pas utilisé de…
L’Autorité de la concurrence et des marchés (CMA) britannique ouvre une enquête sur les conditions…
Thomas Gourand est nommé Directeur Général pour la France. Il est chargé du développement de…
Pour dissuader le CISPE d'un accord avec Microsoft, Google aurait mis près de 500 M€…
Pour réduire la taille des mises à jour de Windows, Microsoft va mettre en place…
De l'organisation administrative à la construction budgétaire, la Cour des comptes pointe le fonctionnement complexe…