← Retour au blog
tech 21 juillet 2026

Comprendre l'option git --end-of-options : une sécurité accrue pour vos scripts

Découvrez comment l'option git --end-of-options améliore la sécurité de vos scripts en ligne de commande, en évitant les erreurs d'injection d'arguments.

Article inspiré de la source originale
git --end-of-options ↗ nesbitt.io

Introduction

Si vous manipulez Git régulièrement, vous connaissez sûrement la diversité de ses options et commandes. Toutefois, certaines d'entre elles restent méconnues alors qu'elles jouent un rôle crucial pour la sécurité et la robustesse de vos scripts. C'est le cas de --end-of-options, une option ajoutée à Git en version 2.24.0, en novembre 2019. Mais pourquoi a-t-on besoin de cette option, et comment peut-elle sécuriser nos opérations Git ?

Le rôle de --end-of-options

Dans la plupart des outils Unix, -- marque la fin de l'analyse des options, ce qui signifie que tous les arguments qui suivent sont traités comme des fichiers ou des données et non comme des options. Par exemple, rm -- -f supprime un fichier nommé -f au lieu de passer l'option de force. Cependant, Git utilise déjà -- pour séparer les révisions des pathspecs (spécifications de chemin), créant une ambiguïté : lorsqu'une révision commence par un tiret, elle peut être interprétée comme une option.

C'est ici qu'intervient --end-of-options, une option qui précise clairement la fin des options et le début des révisions dans des commandes comme git log. Par exemple, git log --end-of-options "$rev" -- "$path" garantit que toutes les interprétations erronées sont évitées.

Adoption et support progressifs

L'option --end-of-options n'a pas été adoptée uniformément par tous les sous-commandes Git. Par exemple, git rev-parse n'a intégré cette option qu'à partir de la version 2.30.0 et git checkout ou git reset l'ont acceptée à partir de la version 2.43.1. Cette adoption progressive souligne l'importance de vérifier la compatibilité des versions de Git utilisées dans vos environnements de développement.

Sécurité renforcée : éviter l'injection d'arguments

L'injection d'arguments est une vulnérabilité bien documentée (CWE-88) qui se produit lorsque des chaînes non fiables sont passées dans une liste d'arguments. Git, Mercurial, et ssh offrent tous des options permettant de configurer des commandes spécifiques. Par exemple, git clone accepte --upload-pack=<cmd> pour spécifier le binaire côté serveur. Si ces options sont mal utilisées avec des données non vérifiées, elles peuvent devenir des vecteurs d'attaque. L'utilisation de --end-of-options peut aider à réduire ce risque en séparant clairement les options des révisions.

Cas d'usage concret

Imagine un script de déploiement automatisé où la révision à déployer est fournie par l'utilisateur. En utilisant git log --end-of-options "$rev" -- "$path", tu garantis que même si $rev commence par un tiret, elle ne sera pas interprétée comme une option, évitant ainsi des erreurs potentielles.

Conclusion

Utiliser --end-of-options est une pratique recommandée pour tous les développeurs cherchant à sécuriser leurs scripts Git. En plus de clarifier la syntaxe des commandes, elle protège contre des vulnérabilités potentielles. Pour en savoir plus sur la sécurisation de vos processus de développement, discutons de ton projet en 15 minutes.

Discutons de ton projet

Besoin d'aide pour optimiser la sécurité et l'efficacité de tes scripts ? Discutons de ton projet en 15 minutes.

git end-of-options security argument injection version control
Newsletter Deepthix · 100% IA · chaque lundi 8h

Un agent IA lit la tech à ta place.

Notre agent IA scanne ~200 sources par semaine et te livre les meilleurs articles le lundi 8h. Gratuit. 1 clic pour se désinscrire.

Voir la page newsletter →

Tu veux automatiser tes opérations ?

Discutons de ton projet en 15 minutes.

Réserver un call