Copilot cloud agent est un agent autonome qui a accès à votre code et peut envoyer des modifications à votre référentiel. Cela implique certains risques.
Dans la mesure du possible, GitHub a appliqué les atténuations appropriées. Cela donne Copilot cloud agent une base forte de protections de sécurité intégrées que vous pouvez compléter en suivant les conseils de bonnes pratiques.
Le code non validé peut introduire des vulnérabilités
Par défaut, Copilot cloud agent vérifie le code qu’il génère pour les problèmes de sécurité et obtient un deuxième avis sur son code avec Copilot code review. Il cherche à résoudre les problèmes identifiés avant de finaliser la pull request. Cela améliore la qualité du code et réduit la probabilité du code généré en Copilot cloud agent introduisant des problèmes tels que des secrets codés en dur, des dépendances non sécurisées et d’autres vulnérabilités. Copilot cloud agentla validation de sécurité ne nécessite pas de GitHub Secret Protection, GitHub Code Security, or GitHub Advanced Security licence.
- CodeQL est utilisé pour identifier les problèmes de sécurité du code.
- Les dépendances nouvellement introduites sont vérifiées par rapport aux GitHub Advisory Database avis de programmes malveillants et pour toutes les vulnérabilités élevées ou critiques de CVSS.
- Secret scanning permet de détecter des informations sensibles telles que des clés API, des jetons et d’autres secrets.
- Des détails sur l’analyse effectuée et les actions effectuées Copilot cloud agent par peuvent être examinés dans le journal de session. Consultez « Gestion des sessions des agents ».
Si vous le souhaitez, vous pouvez désactiver un ou plusieurs outils de validation de la qualité du code et de la sécurité utilisés par Copilot cloud agent. Consultez « Configuration des paramètres pour GitHub Copilot agent cloud ».
Copilot cloud agent peut envoyer (push) des modifications de code à votre référentiel
Pour atténuer ce risque, GitHubprocédez comme suit :
- Limite qui peut déclencher l’agent. Seuls les utilisateurs disposant d’un accès en écriture au référentiel peuvent déclencher Copilot cloud agent pour fonctionner. Les commentaires des utilisateurs sans accès en écriture ne sont jamais transmis à l'agent.
- Limite la branche vers laquelle l'agent peut pousser.
Copilot cloud agent a uniquement la possibilité d’envoyer (push) vers une seule branche. Lorsque l’agent est déclenché en mentionnant
@copilotsur une demande de tirage existante, Copilot dispose d’un accès en écriture à la branche de la demande de tirage. Dans d’autres cas, une nouvellecopilot/branche est créée pour Copilot, et l’agent ne peut envoyer (push) qu’à cette branche. L'agent est également soumis à toutes les protections de branche et aux vérifications requises pour le référentiel de travail. - Limite les informations d’identification de l’agent.
Copilot cloud agent peut uniquement effectuer des opérations push simples. Il n’est pas en mesure d’exécuter directement
git pushou d’autres commandes Git. - Nécessite une révision humaine avant de fusionner. Les pull requests en brouillon créées par Copilot cloud agent doivent être examinées et fusionnées par un humain. Copilot cloud agent ne peut pas marquer ses demandes de tirage comme « Prêt pour révision » et ne peut pas approuver ou fusionner une demande de tirage.
- Limite les exécutions GitHub Actions de flux de travail. Par défaut, les flux de travail ne sont pas déclenchés tant Copilot cloud agentque le code n’est pas examiné et qu’un utilisateur disposant d’un accès en écriture au référentiel clique sur le bouton Approuver et exécuter les flux de travail . Si vous le souhaitez, vous pouvez configurer Copilot pour autoriser l’exécution automatique des flux de travail. Consultez « Passer en revue la sortie de Copilot ».
- Empêche l’utilisateur qui a créé Copilot cloud agent une demande de tirage de l’approuver. Cela permet de conserver les contrôles attendus dans la règle « Approbations requises » et la protection des branches. Consultez « Règles disponibles pour les ensembles de règles ».
- Nécessite une approbation supplémentaire lorsqu’une pull request n’est pas attribuée à une personne. Lorsque Copilot cloud agent ouvre une pull request avec sa propre identité d’application, une approbation supplémentaire est requise avant qu’elle puisse être fusionnée, à condition que le dépôt exige déjà au moins une approbation. Cela est activé par défaut dans les ensembles de règles, où les administrateurs peuvent le désactiver et s’appliquent toujours aux règles de protection des branches. Consultez « Règles disponibles pour les ensembles de règles ».
Copilot cloud agent a accès aux informations sensibles
Copilot cloud agent a accès au code et à d’autres informations sensibles, et peut le fuiter, accidentellement ou en raison d’une entrée utilisateur malveillante.
Pour atténuer ce risque, GitHublimite Copilot cloud agentl’accès à Internet. Consultez « Personnalisation ou désactivation du pare-feu pour GitHub Copilot ».
Les commandes d’IA peuvent être vulnérables aux attaques par injection
Les utilisateurs peuvent inclure des messages cachés dans les issues assignées à Copilot cloud agent ou dans les commentaires laissés pour Copilot cloud agent comme une forme de injection de prompt.
Pour atténuer ce risque, GitHubfiltre les caractères masqués avant de passer l’entrée utilisateur à Copilot cloud agent: par exemple, le texte entré en tant que commentaire HTML dans un problème ou un commentaire de demande de tirage n’est pas passé à Copilot cloud agent.
Les administrateurs peuvent perdre de vue le travail des agents
Pour atténuer ce risque, Copilot cloud agent il est conçu pour être auditable et traçable.
- Copilot cloud agentLes commits sont rédigés par Copilot, le développeur qui a attribué le problème ou demandé le changement du pull request étant identifié comme co-auteur. Cela facilite l’identification du code généré par Copilot cloud agent et par qui a démarré la tâche.
- Copilot cloud agentLes commits de, sont signés, ils apparaissent donc comme « Verified » sur GitHub. Cela garantit que les validations ont été effectuées par Copilot cloud agent et n’ont pas été modifiées.
- Les journaux de session et les événements du journal d’audit sont disponibles pour les administrateurs.
- Le message de validation de chaque validation créée par l’agent inclut un lien vers les journaux de session de l’agent, pour la révision et l’audit du code. Consultez « Gestion des sessions des agents ».
Les automatisations s’exécutent sans personne qui lance chaque tâche
Automations s’exécuter Copilot cloud agent automatiquement, selon une planification définie ou en réponse à des événements, sans intervention humaine pour lancer chaque tâche. Consultez « À propos des automatisations de Copilot ». Cela entraîne certains risques supplémentaires, que GitHub atténue comme suit.
- Le travail est attribué à la personne qui a créé l’automatisation. Les pull requests ouvertes et le code poussé par un automation sont attribués à l’utilisateur qui a créé le automation. Comme lorsque cet utilisateur crée lui-même une pull request, il ne peut pas l'approuver, ce qui préserve les contrôles « Approbations requises » prévus.
- Vous contrôlez les outils qu’une automatisation peut utiliser. Lorsqu’un automation est déclenché par un événement, des données provenant d’utilisateurs non fiables peuvent être intégrées au prompt. Pour limiter l’impact de l’injection d’invites, vous choisissez exactement les outils qu’un automation utilisateur peut utiliser, afin qu’il puisse uniquement effectuer les actions requises par la tâche.
- Les événements des utilisateurs non approuvés sont ignorés par défaut. Automations ignorer par défaut les événements déclenchés par des utilisateurs sans accès en écriture au dépôt, avec un paramètre permettant d’activer cette option.
- Les flux de travail nécessitent toujours une approbation humaine. Un problème ou une pull request ouvert(e) par un automation peut déclencher un autre automation. Comme pour tout Copilot cloud agent travail, les GitHub Actions flux de travail ne s’exécutent pas sur une pull request tant qu’un utilisateur disposant d’un accès en écriture ne les a pas approuvés, ce qui empêche les flux de travail de s’exécuter automatiquement dans le cadre d’une telle séquence.