- vet est un outil CLI qui transforme de manière plus sûre l’exécution de scripts d’installation distants via
curl | bash en un processus « téléchargement → vérification → approbation avant exécution »
- Il fournit des mécanismes de défense par étapes, comme la vérification des modifications du script (diff), un lint basé sur shellcheck (analyse statique) et une approbation manuelle (exécuter après vérification)
- Avec une seule commande (
vet https://example.com/install.sh), il est possible d’inspecter automatiquement avant exécution les risques potentiels, les altérations, les fautes de frappe et les vulnérabilités d’un script distant
- Pour l’installation, il prend en charge à la fois l’approche « télécharger puis vérifier » et l’approche « curl | sh », et permet aussi de consulter directement le code d’installation de vet lui-même
- C’est une solution fiable qui permet de prévenir les risques de sécurité dans les environnements de développement et d’exploitation tout en conservant automatisation et simplicité d’usage
Problème : l’exécution inconsidérée de scripts d’installation distants
- De nombreux projets open source et outils recommandent une installation via des scripts distants comme
curl -sSL https://example.com/install.sh | bash
- Cette méthode comporte des risques de sécurité critiques, comme l’exécution de code malveillant ou l’exécution de fichiers partiels, en cas d’altération du script, de compromission du serveur ou d’erreur réseau
La solution de vet : une exécution interactive sécurisée
Méthode d’installation
Méthode recommandée et sûre (téléchargement → vérification → exécution)
- 1. Télécharger le script d’installation :
- 2. Vérifier directement le code du script téléchargé (avec less, vim, etc.) :
less install_vet.sh
- 3. L’exécuter manuellement après vérification :
sh install_vet.sh
Installation rapide (one-liner basé sur la confiance)
Caractéristiques et avantages de vet
- Détection des changements (diff) : permet de voir les parties nouvellement modifiées par rapport aux scripts déjà exécutés
- Lint automatique (intégration shellcheck) : diagnostic automatique des vulnérabilités, fautes de frappe et code suspect dans les scripts shell
- Approbation explicite de l’exécution (Confirm) : contrôle direct de l’exécution réelle en un clic ou une saisie
- Sauvegarde automatique des scripts et gestion de l’historique : permet de suivre en toute sécurité même les scripts d’installation fréquemment utilisés
- Garantit également des installations et mises à jour sûres en interne
Conclusion
- vet est une alternative plus sûre à
curl | bash, nécessaire aussi bien pour les développeurs que pour les équipes d’exploitation, qui concilie automatisation de l’installation et sécurité
- « Ne l’exécutez pas directement : vérifiez-le avec vet avant de l’exécuter ! »
1 commentaires
Commentaire Hacker News
# shellcheck disable=dans un script malveillant# shellcheck disable=. Ce changement en lui-même est un signal d’alerteinstall.sh.netrc, une variable d’environnementVET_TOKEN, et plus tard l’intégration avec des gestionnaires de secrets comme HashiCorp Vault. Si cela vous intéresse, j’aimerais recueillir des avis sur la GitHub issue. Merci pour les retoursless, ou un pager avec une mise en évidence plus agréable sibatest installé), et pas dans un éditeur afin d’éviter toute modification accidentelle. Si ShellCheck détecte un problème, il l’affiche immédiatement dans le terminal avec des couleurs. Ensuite, il demande explicitement s’il faut poursuivre la revue au format[y/N]. Exemple : Merci pour l’excellente suggestioncurl | bash. Sous Windows, quand un utilisateur essaie d’installer quelque chose, le système analyse automatiquement le fichiercurl | bashm’a toujours mis mal à l’aise, et j’ai ressenti le besoin d’un outil capable d’afficher un diff quand le script change, d’exécuter shellcheck et de demander l’autorisation explicite de l’utilisateur. C’est pour cela que j’ai créé vet. L’installation suit le même principe. Je recommande vivement de lire le script d’installation. Tous les retours sont les bienvenus. Le dépôt est ici : https://github.com/vet-run/vetwget -qO- https://getvet.sh, le serveur renvoie en fait dutext/html). Je recommanderais plutôt de récupérer directement install.sh. Puisque vous demandez des retours, voici une astuce bash dans l’esprit de « essayez plutôt comme ça » : Cette méthode demande une autorisation chaque fois que bash s’apprête à exécuter quelque chose. Pour les scripts longs, cela peut être fastidieux, donc on peut la personnaliser avec une liste blanche de commandes jugées sûres ou une option « remember ». Concernant sudo, un malware peut utiliser une commande apparemment anodine pour lancer d’abord sudo, mettre les identifiants en cache, puis réutiliser plus tard une commande sudo sans aucun avertissement. Il est plus sûr d’effacer le cache de session avecsudo -kavant d’exécuter un programme inconnu