{"meta":{"title":"Injections de script","intro":"Comprendre les risques de sécurité associés aux injections de scripts et GitHub Actions aux flux de travail.","product":"GitHub Actions","breadcrumbs":[{"href":"/fr/actions","title":"GitHub Actions"},{"href":"/fr/actions/concepts","title":"Concepts"},{"href":"/fr/actions/concepts/security","title":"Sécurité"},{"href":"/fr/actions/concepts/security/script-injections","title":"Injections de script"}],"documentType":"article"},"body":"# Injections de script\n\nComprendre les risques de sécurité associés aux injections de scripts et GitHub Actions aux flux de travail.\n\n## Compréhension du risque d'injections de scripts\n\nLors de la création de workflows, d'[actions personnalisées](/fr/actions/concepts/workflows-and-actions/custom-actions) et d'[actions composites](/fr/actions/tutorials/create-actions/create-a-composite-action), vous devez toujours déterminer si votre code peut exécuter des entrées non approuvées provenant d'attaquants. Cela peut se produire lorsqu'un attaquant ajoute des commandes et des scripts malveillants à un contexte. Lorsque votre workflow s'exécute, ces chaînes peuvent être interprétées comme du code qui est ensuite exécuté sur l'exécuteur.\n\nLes attaquants peuvent ajouter leur propre contenu malveillant au [contexte `github`](/fr/actions/reference/workflows-and-actions/contexts#github-context), qui doit être traité comme une entrée potentiellement non approuvée. Ces contextes se terminent généralement par `body`, `default_branch`, `email`, `head_ref`, `label`, `message`, `name`, `page_name`,`ref` et `title`. Par exemple : `github.event.issue.title` ou `github.event.pull_request.body`.\n\nVous devez vous assurer que ces valeurs ne sont pas directement transmises aux workflows, actions, appels d'API, ni ailleurs où elles peuvent être interprétées comme du code exécutable. En adoptant la même posture de programmation défensive que celle utilisée pour tout autre code d’application privilégié, vous pouvez renforcer la sécurité de GitHub Actionsvotre utilisation. Pour plus d’informations sur certaines des étapes qu’un attaquant pourrait suivre, consultez « [Informations de référence sur l’utilisation sécurisée](/fr/actions/reference/security/secure-use) ».\n\nEn outre, il existe d'autres sources moins évidentes d'entrées potentiellement non approuvées, telles que les noms de branche et les adresses e-mail, qui peuvent être assez flexibles en termes de contenu autorisé. Par exemple, `zzz\";echo${IFS}\"hello\";#` pourrait être un nom de branche valide et un vecteur d'attaque possible pour un dépôt cible.\n\nLes sections suivantes expliquent comment vous pouvez atténuer le risque d'injection de script.\n\n### Exemple d'attaque par injection de script\n\nUne attaque par injection de script peut se produire directement dans le script Inline d'un workflow. Dans l’exemple suivant, une action utilise une expression pour tester la validité d’un titre de demande de tirage, mais ajoute également le risque d’injection de script :\n\n```yaml\n      - name: Check PR title\n        run: |\n          title=\"${{ github.event.pull_request.title }}\"\n          if [[ $title =~ ^octocat ]]; then\n          echo \"PR title starts with 'octocat'\"\n          exit 0\n          else\n          echo \"PR title did not start with 'octocat'\"\n          exit 1\n          fi\n```\n\nCet exemple est vulnérable à l'injection de script, car la commande `run` s'exécute dans un script shell temporaire sur l'exécuteur. Avant l’exécution du script shell, les expressions à l’intérieur `${{ }}` sont évaluées, puis remplacées par les valeurs résultantes, ce qui peut le rendre vulnérable à l’injection de commandes de l’interpréteur de commandes.\n\nPour injecter des commandes dans ce workflow, l’attaquant peut créer une demande de tirage portant le titre `a\"; ls $GITHUB_WORKSPACE\"` :\n\n![Capture d’écran du titre d’une demande de tirage en mode édition. Un nouveau titre a été entré dans le champ : a\"; ls $GITHUB\\_WORKSPACE\".](/assets/images/help/actions/example-script-injection-pr-title.png)\n\nDans cet exemple, le `\"` caractère est utilisé pour interrompre l’instruction`title=\"${{ github.event.pull_request.title }}\"`, ce qui permet à la `ls` commande d’être exécutée sur l’exécuteur. Vous pouvez voir la sortie de la commande `ls` dans le journal :\n\n```shell\nRun title=\"a\"; ls $GITHUB_WORKSPACE\"\"\nREADME.md\ncode.yml\nexample.js\n```\n\nPour connaître les meilleures pratiques en matière de sécurité des exécuteurs, consultez [Informations de référence sur l’utilisation sécurisée](/fr/actions/reference/security/secure-use#good-practices-for-mitigating-script-injection-attacks)."}