Sélection de la langue

Gérer les risques liés à la programmation intuitive

Les développeuses et développeurs de logiciels ont l’habitude d’écrire du code dans des langages de programmation comme Python et C++. Or, grâce aux avancées en intelligence artificielle (IA), des outils peuvent maintenant générer du code à partir d’instructions formulées en langage naturel, une approche appelée programmation intuitive, ou vibe coding en anglais.

Les conseils présentés dans cette publication s’adressent à toute personne au sein d’une organisation qui utilise ou qui supervise la programmation intuitive, notamment les responsables de l’architecture d’entreprise, de la surveillance, de la conformité et de la sécurité des données.

Table des matières

Fonctionnement de la programmation intuitive

La programmation intuitive consiste à donner des instructions à un outil d’IA pour qu’il crée un projet. Un outil d’IA est un logiciel qui traite des données, interagit avec son environnement et exécute des actions pour atteindre des objectifs définis. ChatGPT, Microsoft Copilot et Claude d’Anthropic en sont des exemples.

Les utilisatrices et utilisateurs interagissent avec l’outil d’IA de façon intuitive, travaillent à partir de ce qu’il produit, lui transmettent leurs commentaires et décident d’accepter ou non ses suggestions. Dans ce contexte, l’outil génère le code, mais il incombe toujours à la personne qui l’utilise d’orienter le travail et de valider les résultats.

La programmation intuitive peut rendre le développement de logiciels plus accessible et réduire le temps nécessaire pour créer le code base. Elle permet notamment aux personnes ayant une expérience limitée en programmation de réaliser des projets à l’aide de l’IA. Toutefois, la production de code sécurisé, fiable et prêt pour la production exige toujours une expertise technique, notamment une compréhension de la façon dont les humains donnent des instructions aux machines. Les organisations devraient donc évaluer les avantages, les limites et les risques avant d’adopter la programmation intuitive.

Comme dans d’autres domaines de la cybersécurité, les risques associés à la programmation intuitive peuvent varier considérablement. Il est donc essentiel d’adapter le niveau de surveillance au degré de risque que présente le code en cours de développement. Par exemple, un prototype ou un outil conçu à l’interne qui n’utilise pas de données sensibles présente moins de risques qu’un outil d’authentification qui traite des renseignements confidentiels ou personnels, ou qui soutient des infrastructures essentielles. Avant d’adopter la programmation intuitive, il faut évaluer les avantages attendus par rapport aux risques et renforcer les exigences en matière d’examen, de mise à l’essai et d’approbation à mesure que le niveau de risque augmente.

Avantages de la programmation intuitive

La programmation intuitive peut aider les organisations et les utilisatrices et utilisateurs à :

  • créer et améliorer plus rapidement les premiers prototypes de code;
  • raccourcir les cycles de développement et de production;
  • rendre la programmation plus accessible grâce au langage naturel;
  • se concentrer sur la vue d’ensemble et mettre des idées à l’essai;
  • consacrer moins de temps à l’écriture de code répétitif.

Par exemple, une utilisatrice ou un utilisateur peut saisir une requête en langage clair comme celle-ci :

« Crée un tableau de bord des tâches de mon équipe qui présente les tâches terminées et à venir. Ajoute une représentation graphique de l’échéancier hebdomadaire ainsi que des filtres pour chaque membre de l’équipe et ses projets. »

L’IA peut générer le code du tableau de bord à partir de ces consignes, mais le résultat initial peut contenir des erreurs ou ne pas répondre à toutes les exigences. Il faut donc examiner le résultat, apporter les corrections nécessaires et préciser la requête afin d’améliorer le code. Plusieurs cycles de formulation de requêtes, d’examen et de mise à l’essai peuvent être nécessaires avant d’obtenir un résultat exact, sûr, sécurisé et prêt à être déployé.

L’IA peut produire un résultat à partir d’une seule requête ou d’une série de requêtes. Une requête unique décrit entièrement une fonctionnalité ou une application en une seule fois. Cette approche vise à réduire le nombre de cycles d’interaction en fournissant dès le départ à l’IA tout le contexte nécessaire, ce qui permet d’obtenir un résultat rapidement. Il faut toutefois définir clairement les exigences et le résultat souhaité dans la requête, ce qui peut être difficile lorsqu’il s’agit d’idées plus vastes ou complexes. Une série de requêtes convient mieux aux tâches et aux produits qui nécessitent davantage de planification et de validation. Cette approche offre plus d’occasions de planifier, de mettre à l’essai et de valider le résultat à chaque étape.

Même si la programmation intuitive réduit le temps consacré à l’écriture du code, elle nécessite toujours une intervention humaine active pour formuler les requêtes, examiner les résultats et les approuver. Il s’agit d’un processus collaboratif dans lequel la personne et l’agent d’IA travaillent ensemble.

La programmation intuitive offre également davantage de souplesse et de possibilités d’expérimentation. Par exemple, il est possible de demander à l’outil de proposer des polices de caractères, des styles de titres, des graphiques et des mises en page. L’outil peut ainsi proposer des options auxquelles on n’aurait pas nécessairement pensé et ouvrir de nouvelles avenues créatives pour le projet. Ces résultats doivent toutefois être considérés comme des suggestions. Avant de les adopter, il faut également s’assurer qu’ils respectent les exigences de l’organisation en matière d’accessibilité, de style et de sécurité.

Limites de la programmation intuitive

Avant de recourir à la programmation intuitive, les organisations devraient tenir compte de ses limites et des risques qu’elle présente pour la cybersécurité.

Complaisance

L’une des principales limites de l’IA à l’heure actuelle vient du fait qu’elle est entraînée à donner raison aux utilisatrices et utilisateurs. Les modèles d’IA ont tendance à adapter leurs réponses en fonction de ce qu’ils perçoivent comme étant les attentes de la personne. Ce phénomène, appelé complaisance, peut présenter un risque important pour la cybersécurité. Si l’agent d’IA produit des réponses qui renforcent les attentes de la personne qui l’utilise, celle-ci risque de ne pas remarquer certaines inexactitudes ou certains risques de sécurité.

Dans le contexte de la programmation intuitive, un agent d’IA qui fait preuve de complaisance peut compromettre la robustesse et la sécurité du code généré et produire du code peu robuste ou non sécurisé. Le fait que l’IA approuve une décision de la personne qui l’utilise ne signifie pas que le code est exact, robuste ou sécurisé.

Il est important de savoir comment interagir avec un agent d’IA pour réduire les comportements complaisants. Posez des questions neutres qui ne laissent pas entendre qu’une réponse est préférable à une autre. L’agent aura ainsi plus de difficulté à déterminer votre position sur un sujet et sera moins susceptible de fournir une réponse complaisante. Tenez-vous au courant des plus récents travaux de recherche et développements dans le domaine de l’IA et offrez une formation approfondie et continue à votre personnel.

Code de faible qualité et examen du code

Il est possible que le code généré par l’IA ne fonctionne pas comme prévu et contienne des erreurs, des vulnérabilités ou des choix de conception inadéquats. Les outils d’IA produisent du code à partir de schémas appris grâce aux données provenant d’Internet et du contexte fourni dans les requêtes. Le résultat constitue un point de départ qu’il faut ensuite examiner et améliorer.

L’IA n’exerce pas de pensée critique et ne comprend pas les risques et les exigences de la même façon qu’une personne. À moins de recevoir des instructions contraires, elle emprunte généralement la voie la plus efficace pour créer une application. Cela peut entraîner :

  • des résultats inexacts;
  • du code fragile ou inutilement lourd, c’est-à-dire plus volumineux et complexe que nécessaire pour accomplir la tâche;
  • des applications qui ne peuvent pas être adaptées à l’échelle requise pour répondre aux besoins opérationnels;
  • des vulnérabilités de sécurité intégrées au code;
  • des fuites de données involontaires ou la divulgation d’information sensible.

Il n’est pas toujours facile de comprendre pourquoi un outil d’IA a fait un choix particulier. Avec une personne, il est possible de demander pourquoi elle a choisi un langage de programmation ou un style de mise en forme donné. Il est également possible de discuter de sa démarche et de comprendre pourquoi et comment certaines tâches ont été réalisées. Ce type d’échange peut être plus difficile avec l’IA, mais il demeure possible.

Même si l’IA n’a pas la capacité humaine de réfléchir et d’exercer une pensée critique, il est possible, et nécessaire, de remettre constamment ses résultats en question. On peut demander à l’outil d’IA d’expliquer ses décisions ou d’examiner le code qu’il a généré. Toutefois, ces explications ou cet autoexamen ne devraient jamais constituer le seul mécanisme de contrôle, surtout pour les tâches importantes d’une organisation. Bien qu’il soit possible de demander à un modèle d’IA d’examiner le code qu’il a lui-même généré, l’autoexamen par un seul modèle constitue à lui seul un mécanisme de contrôle peu fiable. Lorsque la situation s’y prête, utilisez un autre outil d’IA pour effectuer l’examen. Il demeure essentiel d’assurer une surveillance rigoureuse avec intervention humaine ou avec intervention de la gouvernance. Autrement dit, des personnes qualifiées doivent toujours examiner les décisions importantes et approuver le code définitif avant son déploiement.

Les spécialistes de la programmation et de l’examen du code mettent également à profit leur expérience, leur connaissance du contexte et leur jugement, ce qu’un système d’IA ne peut pas faire. Lorsqu’une requête est ambiguë ou porte sur un élément qui ne faisait pas partie de son entraînement, l’outil peut produire :

  • des conclusions erronées;
  • des adaptations étranges;
  • des résultats inexacts;
  • des hallucinations.

Dans le contexte de la programmation intuitive, les personnes ayant une expérience limitée en programmation risquent de ne pas reconnaître les défauts complexes du code généré par l’IA. Une personne qualifiée en programmation ou en examen du code devrait donc vérifier, corriger et approuver le code généré par l’IA avant son déploiement. Cette mesure peut contribuer à prévenir les atteintes à la réputation ou des coûts financiers pour l’organisation.

Testez la sécurité des logiciels à l’aide de solutions d’analyse statique de la sécurité des applications (SAST pour Static Application Security Testing) et d’analyse dynamique de la sécurité des applications (DAST pour Dynamic Application Security Testing). Ces outils permettent de vérifier si le code comporte des vulnérabilités avant son déploiement. Il convient également de configurer l’IA de façon à ce qu’elle exécute continuellement des tests de sécurité des applications tout au long du cycle de développement des logiciels.

Hallucinations

Le concept d’hallucination en IA n’est pas nouveau. Les grands modèles de langage (GML) utilisent souvent des modèles de prédiction fondés sur la reconnaissance de tendances et s’appuient sur leurs données d’entraînement ou sur d’autres données disponibles pour produire des réponses. L’IA peut donc générer du contenu inexact, trompeur ou entièrement inventé. C’est pourquoi il faut toujours examiner et vérifier les faits se trouvant dans les résultats générés par l’IA.

Dans le contexte de la programmation intuitive, un outil d’IA peut créer, ou « halluciner », des paquets ou des bibliothèques qui n’existent pas. En plus de nuire au fonctionnement du code, ce problème peut créer des possibilités d’exploitation. Des auteurs de menace peuvent enregistrer ces paquets fictifs dont le nom est prévisible et y intégrer un maliciel, une technique appelée détournement de paquets hallucinés par l’IA, ou slopsquatting en anglais. Lorsque l’agent d’IA commence à générer du code, il peut y intégrer ces paquets compromis et ainsi exposer l’organisation à des risques.

Communiquer efficacement avec l’IA

La rédactique consiste à formuler des requêtes claires et efficaces à l’intention de l’IA. Commencez par déterminer les principales exigences de l’organisation, puis traitez chacune d’elles dans une requête distincte et précise.

La programmation intuitive peut se faire dans de nombreuses langues naturelles, mais la qualité des réponses peut varier selon la langue et les données utilisées pour entraîner le modèle, qui sont le plus souvent en anglais. Il faut structurer les requêtes de façon à ce que l’IA puisse les comprendre et y donner suite. L’examen du code généré par l’IA peut également nécessiter une certaine connaissance de la terminologie anglaise de la programmation, même si la logique sous-jacente et le déroulement des opérations ne dépendent pas de la langue.

Conseils pour une rédactique efficace

  • Fournissez suffisamment de contexte sur le projet pour réduire les suppositions que fait l’IA à partir de schémas prédictifs.
  • Exercez-vous avec des exemples de requêtes avant d’entreprendre le projet principal afin de mieux comprendre comment l’IA répond.
  • Décrivez le résultat attendu et réitérez-le tout au long du développement.
  • Axez chaque requête sur une tâche principale.
  • Précisez les exigences en matière de sécurité, de protection de la vie privée et de conformité.
  • Utilisez des consignes ouvertes pour favoriser l’expérimentation et la recherche d’idées.
  • Utilisez des requêtes de suivi pour préciser le résultat.
  • Fournissez à l’outil d’IA des exemples de projets semblables auxquels il peut se reporter.

Risques liés à la cybersécurité

La programmation intuitive peut présenter de nombreux risques pour la cybersécurité. Évaluez les risques ci-dessous avant de choisir un outil ou de déployer du code généré par l’IA.

Intégrité de la chaîne d’approvisionnement

L’intégrité de la chaîne d’approvisionnement dépend du fournisseur de l’outil d’IA et de ses dépendances, ainsi que des renseignements qui lui sont communiqués. Examinez les politiques de sécurité, les conditions relatives au traitement des données et les processus de chaque fournisseur afin de vous assurer qu’ils concordent avec ceux de votre organisation. Il est important d’effectuer une analyse des niveaux de confiance des fournisseurs d’outils d’IA afin de préserver l’intégrité de la chaîne d’approvisionnement. Cette analyse permet d’attribuer et de gérer différents niveaux d’accès et de contrôle selon les systèmes et les outils d’IA. Voici certains critères à prendre en compte pour évaluer les fournisseurs :

  • l’endroit où le service d’IA et les données sont hébergés :
    • la propriété et la responsabilité juridique;
    • l’hébergement public ou privé;
  • le contexte géopolitique;
  • les politiques d’utilisation et de conservation des données;
  • les pratiques commerciales et de sécurité du fournisseur;
  • les vulnérabilités du produit, sa disponibilité et le soutien offert.

Les fournisseurs approuvés par le gouvernement ou qui hébergent leurs services et leurs données au pays peuvent présenter moins de risques. Consultez Évaluations des risques liés à l’intégrité de la chaîne d’approvisionnement : Critères d’évaluation (ITSAP.10.071) pour en savoir plus sur l’évaluation des profils de risque.

La souveraineté numérique et la souveraineté des données contribuent à renforcer la sécurité de la chaîne d’approvisionnement. Utilisez une nomenclature logicielle (SBOM pour Software Bill of Materials) pour répertorier les dépendances de source ouverte, en faire le suivi et en retracer la provenance. Pour en savoir plus sur la nomenclature logicielle et la façon d’établir un cadre résilient pour la chaîne d’approvisionnement, consultez le Bulletin conjoint sur les éléments de base d’une nomenclature logicielle.

En plus d’effectuer les recherches et les évaluations des risques appropriées, vous pouvez prendre certaines des mesures ci-dessous pour protéger l’intégrité de votre chaîne d’approvisionnement :

  • Analysez et vérifiez continuellement le code généré par l’IA pour détecter les vulnérabilités courantes connues et les dépendances.
  • Classez les menaces selon leur niveau de risque : critique, élevé, moyen ou faible.
  • Appliquez les principes du droit d’accès minimal et de la vérification systématique.
  • Surveillez continuellement les fournisseurs et les dépendances.
  • Utilisez des images de conteneur minimales et renforcées.
  • Effectuez périodiquement des audits de sécurité et des tests d’intrusion.
  • Mettez à l’essai les procédures d’intervention en cas d’incident en simulant des attaques contre la chaîne d’approvisionnement afin de vérifier que les équipes peuvent détecter et isoler rapidement les menaces.

Utilisez des systèmes de détection et d’intervention réseau ainsi que l’analyse comportementale pour repérer les activités inhabituelles.

Provenance du code

Il peut être difficile de déterminer l’origine, ou la provenance, du code généré par l’IA. Pour générer du code, l’IA s’appuie sur des schémas appris à partir de ses données d’entraînement. Ces données peuvent comprendre des logiciels libres, des vulnérabilités, des pratiques désuètes et du code délibérément malveillant. Des schémas semblables peuvent se retrouver dans les résultats générés et accroître le nombre de menaces possibles. Comme les données utilisées par l’IA peuvent provenir de n’importe quelle source, il ne faut pas présumer que le code généré est sécurisé ou robuste.

Le code généré à partir de sources inconnues peut :

  • hériter des vulnérabilités présentes dans le matériel source;
  • entraîner des obligations liées aux licences, au droit d’auteur ou à l’attribution;
  • être de qualité variable;
  • contenir du code délibérément modifié par des auteurs de menace.

Il est possible de demander au modèle d’IA d’examiner et d’évaluer son propre code ou d’utiliser un autre outil d’IA pour en vérifier les vulnérabilités. Toutefois, de nombreuses vulnérabilités peuvent passer inaperçues, et un outil d’IA utilisé pour l’examen pourrait ne pas détecter celles que l’IA a délibérément introduites. Une surveillance avec intervention humaine ou avec intervention de la gouvernance demeure nécessaire pour confirmer que le code ne contient aucun paquet malveillant. Pour en savoir plus sur l’utilisation sécurisée des logiciels ouverts, consultez la publication Considérations liées à la sécurité dans le cadre de l’utilisation de logiciels libres (ITSAP.10.059).

Fuites de renseignements et architecture

Avant de recourir à la programmation intuitive, les organisations devraient tenir compte de la sécurité de l’information et de la robustesse des systèmes. Donner à l’IA accès à des renseignements sensibles peut entraîner une fuite de données, que ce soit par le code produit ou par l’outil d’IA lui-même. Il faut savoir où le fournisseur du service d’IA stocke les renseignements et comment il peut utiliser les données saisies. Selon le service d’IA choisi, le fournisseur peut conserver ces renseignements ou les utiliser pour entraîner ses modèles. Examinez les conditions du fournisseur relatives au traitement des données avant de saisir toute information de l’organisation. Choisissez des fournisseurs dont les conditions de service ou les ententes destinées aux entreprises interdisent contractuellement l’utilisation des données de la clientèle pour entraîner leurs modèles.

Il faut également tenir compte de la sécurité de l’architecture du code. Lorsqu’une programmeuse ou un programmeur écrit du code manuellement, cette personne établit la structure et les paramètres de sécurité de l’architecture, notamment l’information autorisée. Lorsque l’IA génère le code, elle produit plutôt ce qu’elle juge le mieux adapté au projet, sans nécessairement tenir compte de tous les risques de cybersécurité qu’elle peut introduire. Si l’organisation ne valide pas et ne vérifie pas la sécurité du code produit par l’IA, elle risque de s’exposer à des accès non autorisés et à des cyberattaques.

Les organisations, y compris les ministères du gouvernement du Canada et les sociétés d’État, doivent aussi accorder une attention particulière aux risques liés à la résidence des données et au transfert transfrontalier de données. Ces considérations vont de pair avec l’utilisation de la nomenclature logicielle et l’évaluation du cadre de gestion des risques liés à la chaîne d’approvisionnement. Pour en savoir plus sur les exigences relatives aux données et aux actifs numériques canadiens ainsi qu’à leur stockage, consultez Souveraineté numérique.

Maliciels intégrés et accès par l’intermédiaire de bibliothèques

Le code généré par l’IA peut utiliser des paquets ou des bibliothèques de source ouverte pouvant contenir des composants vulnérables ou désuets. L’organisation peut alors être exposée à des risques comme :

  • des paquets malveillants, des maliciels ou des portes dérobées;
  • des vulnérabilités inconnues;
  • des configurations non sécurisées qui permettent à des auteurs de menace d’accéder aux réseaux ou aux systèmes de l’organisation.

Maintien de la cybersécurité de l’organisation

Pour maintenir la cybersécurité de l’organisation, il est important d’effectuer régulièrement les mises à jour et l’application de correctifs. Comme les auteurs de menace utilisent de plus en plus l’IA agentive et l’IA de pointe, il demeure essentiel d’assurer la maintenance et la gestion des vulnérabilités en temps opportun.

Il faut notamment tenir compte des difficultés de maintenance suivantes :

  • la difficulté à comprendre et à dépanner le code généré par l’IA :
    • la succession de requêtes peut compliquer la recherche des raisons pour lesquelles le code généré par l’IA ne fonctionne pas comme prévu;
    • des requêtes répétées ou reformulées peuvent modifier le code et son fonctionnement et compliquer le suivi de sa provenance;
    • une requête visant à corriger un problème, comme une erreur de code ou une faille logique, peut ajouter une complexité inutile;
    • la nécessité de recréer entièrement un logiciel produit par programmation intuitive ou d’en créer plusieurs sous-versions;
  • la quantité de code que l’IA génère pour accomplir une tâche peut devenir excessive, ce qui risque de compliquer la maintenance à mesure que le code prend de l’ampleur.

La programmation intuitive peut permettre aux personnes qui ont une expérience limitée en programmation de créer du code, mais les outils d’IA ne peuvent pas, à eux seuls, assurer la maintenance d’un code base fonctionnel. Il faut que des programmeuses et programmeurs compétents assurent une surveillance humaine continue.

Les personnes qui examinent le code jouent un rôle essentiel dans son examen et sa maintenance, mais elles peuvent tout de même commettre des erreurs. Les organisations devraient tenir compte des facteurs humains ci-dessous lorsqu’elles établissent leurs mécanismes de surveillance.

Biais d’automatisation

Le biais d’automatisation est la tendance à faire davantage confiance aux systèmes automatisés qu’à son propre jugement et à sa propre expérience. Les personnes qui examinent le code peuvent accepter les suggestions de l’IA même lorsqu’elles sont erronées parce qu’elles croient que la technologie repose sur un meilleur processus d’analyse. Un manque d’esprit critique lors de l’examen humain peut nuire à la qualité et à la sécurité du produit.

Fatigue liée à la surveillance

La fatigue liée à la surveillance peut survenir lorsque les personnes responsables de la surveillance s’épuisent ou se sentent dépassées par un grand nombre d’alertes et de menaces ou par l’exécution de tâches répétitives. La quantité de code généré par la programmation intuitive, en plus des tâches de surveillance et de prise de décisions qui en découlent, peut contribuer à cette fatigue.

Selon l’ampleur de vos activités et les exigences de votre projet, vous pouvez prendre diverses mesures à l’interne pour atténuer ce risque. Veillez à ce que votre personnel soit bien informé et formé et qu’il possède les connaissances nécessaires pour accomplir ses tâches avec assurance. Les organisations devraient également élaborer des stratégies pour gérer la charge cognitive et favoriser l’analyse critique chez les personnes qui ont recours à la programmation intuitive.

Attaques et vulnérabilités courantes

La section ci-dessous présente les attaques et les vulnérabilités les plus courantes associées à la programmation intuitive.

Détournement de paquets hallucinés par l’IA

L’attaque par détournement de paquets hallucinés par l’IA cible la chaîne d’approvisionnement logicielle et exploite des dépendances logicielles inventées par l’IA. Des auteurs de menace enregistrent des noms de paquets fictifs que les outils de programmation fondés sur l’IA génèrent fréquemment, puis attendent que des développeuses ou développeurs les installent. Contrairement au typosquattage, qui exploite les erreurs humaines, le détournement de paquets hallucinés par l’IA tire parti des erreurs générées par l’IA et d’une confiance mal placée dans le code qu’elle produit. Pour atténuer ce risque, vous devriez prendre les mesures suivantes :

  • empêcher les agents d’IA d’installer les paquets de façon autonome;
  • exiger l’utilisation d’une liste d’autorisation ou une vérification humaine;
  • épingler les versions des dépendances et vérifier les valeurs de hachage des paquets dans le pipeline de compilation;
  • utiliser la nomenclature logicielle.

Injection ou manipulation de requêtes

L’injection de requêtes est une technique qui exploite l’incapacité de l’IA à distinguer les requêtes légitimes des requêtes malveillantes. Un auteur de menace peut dissimuler une requête malveillante et manipuler l’IA afin qu’elle ignore ses instructions habituelles ou extraie des données sensibles. Comme la programmation intuitive repose sur le langage naturel pour produire du code, un auteur de menace peut concevoir une entrée qui ressemble à la requête d’une développeuse ou d’un développeur afin de contourner les instructions établies du système. Pour contrer cette menace, vous devriez :

  • déterminer les sujets sensibles et mettre en place des mécanismes distincts pour vérifier les entrées et les sorties;
  • exiger une surveillance régulière ainsi qu’une approbation humaine ou de la gouvernance pour toutes les requêtes à risque élevé ou à incidence élevée;
  • effectuer régulièrement les mises à jour et l’application des correctifs;
  • utiliser l’agent d’IA et ses outils dans un bac à sable, c’est-à-dire un environnement contrôlé qui permet d’exécuter le code généré par l’IA tout en limitant l’accès aux systèmes et aux données, afin de contenir et de limiter les dommages.

Scripts intersites (XSS)

Les scripts intersites sont utilisés par les auteurs de menace pour injecter des entrées ou des scripts malveillants dans un site Web, ce qui amène le navigateur d’une utilisatrice ou d’un utilisateur à exécuter des commandes non autorisées. Cette vulnérabilité peut découler de code non sécurisé généré par l’IA, notamment lorsque celui-ci présente des schémas prévisibles ou des lacunes de sécurité. Le code qui ne valide pas et n’authentifie pas les entrées des utilisatrices et utilisateurs est vulnérable aux attaques par scripts intersites. Pour atténuer les risques d’attaques par scripts intersites, vous devriez :

  • valider et nettoyer toutes les entrées non fiables et appliquer un codage de sortie sensible au contexte;
  • utiliser le codage de sortie et le nettoyage du code HTML dans votre cadre de développement;
  • utiliser des stratégies de sécurité du contenu pour limiter les sources à partir desquelles le contenu peut être chargé;
  • utiliser un pare-feu d’applications Web (WAF pour Web Application Firewall) afin de surveiller et de filtrer le trafic HTTP.

Injection SQL

L’attaque par injection SQL cible le langage SQL (Structured Query Language) utilisé pour gérer les données dans les bases de données. La programmation intuitive génère souvent la requête la plus directe et la plus facile à lire. Les auteurs de menace peuvent exploiter cette tendance en insérant leurs propres requêtes SQL afin de voler ou de modifier des données, d’exécuter des opérations d’administration ou d’usurper l’identité d’une cliente ou d’un client. Pour contrer cette vulnérabilité, vous devriez :

  • utiliser des requêtes de base de données sécurisées et des instructions préparées qui séparent les entrées des utilisatrices et utilisateurs des commandes de la base de données;
  • préciser clairement à l’agent d’IA les exigences de sécurité de la base de données pendant la phase de production, notamment l’obligation d’utiliser des méthodes sécurisées pour interagir avec celle-ci.

Points à considérer avant d’adopter la programmation intuitive

Pour déterminer si la programmation intuitive convient à votre organisation, tenez compte des éléments suivants :

  • Quels renseignements seront saisis dans l’outil par la personne ayant recours à la programmation intuitive?
    • Est-il possible d’isoler et de segmenter les données ou les systèmes sensibles pour les séparer de l’outil d’IA?
    • Évitez la programmation intuitive lorsque de l’information sensible est en cause.
  • Le système dans lequel le code issu de la programmation intuitive sera utilisé assure-t-il une fonction essentielle à la sécurité, par exemple la surveillance d’un réseau électrique?
    • Quelles seraient les conséquences d’une défaillance, d’un mauvais fonctionnement ou d’une compromission du système?
    • Évitez la programmation intuitive lorsqu’une faille de sécurité pourrait avoir de graves conséquences.
  • Quel modèle d’IA répond le mieux aux besoins et aux exigences de cybersécurité de votre organisation?
    • Renseignez-vous sur les antécédents de l’entreprise, ses liens géopolitiques et son énoncé de mission afin de vérifier qu’ils concordent avec la vision de votre organisation.
    • Au moment d’adopter un outil d’IA, précisez les exigences de votre organisation dans un accord sur les niveaux de service (ANS) qui porte notamment sur l’éthique, les biais ainsi que l’exactitude et la disponibilité du modèle.
  • Des membres de votre équipe possèdent-ils déjà des compétences en programmation informatique?
    • Si ce n’est pas le cas, évaluez les coûts et les risques associés à l’embauche d’une personne à l’interne pour concevoir et surveiller le code par rapport au recours à un logiciel-service.
  • Quelles exigences juridiques et politiques encadrent l’utilisation d’un tel outil?
    • Effectuez une évaluation des facteurs relatifs à la vie privée (EFVP) avant de déployer des outils d’IA destinés à la programmation, conformément à la Loi sur la protection des renseignements personnels.
    • Examinez les répercussions juridiques possibles de l’utilisation de logiciels libres ou tiers et assurez-vous de disposer des licences et des droits d’auteur nécessaires.
    • Déterminez à qui appartiennent le code, la propriété intellectuelle (PI) et les données recueillies.

Pratiques exemplaires en programmation intuitive

Si vous déterminez que la programmation intuitive convient à votre organisation, adoptez-la en toute sécurité. Les pratiques exemplaires ci-dessous aideront votre organisation à utiliser la programmation intuitive de façon plus sécurisée :

  • Examinez les politiques et les conditions du fournisseur d’IA en matière de sécurité, de protection de la vie privée et de traitement des données;
  • Examinez la nomenclature logicielle de tout code base créé à l’aide de l’IA avant sa mise en production;
  • Déterminez et gérez les autorisations d’accès de l’application de programmation intuitive :
    • Désactivez l’acceptation automatique des autorisations pour les opérations importantes;
    • Trouvez un juste équilibre entre la confiance et l’efficacité, tout en appliquant le principe du droit d’accès minimal;
  • Ne saisissez jamais d’information sensible, protégée ou exclusive dans un service d’IA non approuvé :
    • Les ministères et organismes du gouvernement du Canada (GC) ne devraient saisir aucune information de niveau Protégé A ou supérieur dans le cadre de la programmation intuitive;
    • Pour en savoir plus, consultez la page Niveaux de sécurité du GC;
  • Définissez vos objectifs, vos mandats et vos exigences avant de commencer à utiliser la programmation intuitive;
  • Exercez-vous à la rédactique avant de commencer à utiliser la programmation intuitive;
  • Évitez la « dérive intuitive » en répétant régulièrement le résultat souhaité tout au long du processus de programmation intuitive;
  • Ne permettez pas aux outils d’IA d’exécuter des actions de façon autonome dans vos systèmes sans avoir mis en place des mécanismes de gouvernance et de visibilité ainsi que des contrôles fondés sur le droit d’accès minimal;
  • Exigez qu’une personne qualifiée examine le code à chaque étape;
  • Établissez des politiques et sensibilisez les utilisatrices et utilisateurs à la programmation intuitive, notamment en ce qui concerne les autorisations et les normes de responsabilisation;
  • Segmentez et isolez les applications sensibles, et exigez des privilèges d’administrateur pour modifier les autorisations;
  • Tenez-vous au courant des plus récentes nouvelles et avancées dans le domaine de l’IA;
  • Mettez votre code à l’essai dans un environnement de développement ou un environnement intermédiaire isolé avant de le déployer.

Les modèles d’IA évoluent et s’améliorent rapidement. Leurs limites et les risques connexes sont donc appelés à évoluer eux aussi. Examinez régulièrement l’évaluation des risques et les contrôles de votre organisation et la formation de votre personnel.

Les modèles d’IA peuvent générer du code, mais ils peuvent également servir à le vérifier. Si votre organisation dispose des capacités et des ressources nécessaires, utilisez plusieurs outils d’IA pour examiner le code généré par l’IA. Il convient également d’avoir recours à des tests indépendants et à des personnes qualifiées pour effectuer l’examen en fonction du profil de risque du système.

Avant d’adopter la programmation intuitive dans votre organisation, assurez-vous d’avoir mis en place des protocoles et des mesures de protection. Élaborez et tenez à jour un plan d’intervention en cas d’incident (PII) afin de pouvoir intervenir si la programmation intuitive entraîne des failles de sécurité, des intrusions ou des compromissions. Mettez régulièrement le plan à l’essai et conservez des copies de sauvegarde protégées et récupérables. Pour en savoir plus sur les PII, consultez Élaborer un plan d’intervention en cas d’incident (ITSAP.40.003). Si un incident de cybersécurité se produit, veuillez le signaler dans le portail de gestion des incidents du Centre pour la cybersécurité.

Pour en savoir plus

Date d’entrée en vigueur

Cette publication entre en vigueur le 29 octobre 2026.

Il s’agit d’un document NON CLASSIFIÉ publié avec l’autorisation du dirigeant principal du Centre canadien pour la cybersécurité (Centre pour la cybersécurité). Pour obtenir de plus amples renseignements ou suggérer des modifications, veuillez communiquer avec le Centre pour la cybersécurité :

Historique des révisions

  1. Première version  29 octobre 2026
Date de modification :