Est-ce que le bogue Shellshock Bash affecte ZSH?
La mise à niveau de Bash est-elle la seule solution?
Est-ce que le bogue Shellshock Bash affecte ZSH?
La mise à niveau de Bash est-elle la seule solution?
Réponses:
Non, cela n'affecte pas ZSH.
Vous DEVEZ quand même mettre à jour bash car la plupart des scripts système sont écrits pour bash et vulnérables au bogue shellshock.
Pour tester votre ZSH, procédez comme suit:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
Que fait exactement ce code?
env x='() { :;}; echo vulnerable' crée une variable d'environnement avec un bogue connu en utilisant la commande à la fin de la variablezsh -c 'echo hello'lance le shell ZSH avec un simple salut (et évalue toutes les variables env, y compris x )Si vous voyez une sortie:
vulnerable
hello
Ensuite, votre ZSH est vulnérable. Mine (5.0.2) n'est pas:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bashest une mauvaise habitude pour les utilitaires système, car l'installation de bash n'est pas garantie; /bin/shest le shell standard et doit être un interpréteur de shell POSIX correct.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
De ce lien :
Vous pouvez déterminer si vous êtes vulnérable au problème d'origine dans CVE-2014-6271 en exécutant ce test:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Si vous voyez le mot vulnérable dans le résultat de cette commande, votre bash est vulnérable et vous devez le mettre à jour. Vous trouverez ci-dessous une version vulnérable d'OS X 10.8.5:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
La sortie suivante est un exemple de version de bash non vulnérable.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
env X='() { (a)=>\' bash -c "echo date"sur une bash corrigée et malgré beaucoup d'erreurs générées, produira un fichier appelé echocontenant la date. Je ne veux pas savoir pourquoi.
zshne pas utiliser bashà sa base. bashest explicitement appelé dans vos exemples. Peu importe le shell que vous utilisez pour exécuter ces lignes. Cette vulnérabilité concerne le shell bash récemment démarré, pas le shell à partir duquel il est exécuté.
bashdans les exemples par $SHELL.
Cela n’affecte pas zshl’exécutable du shell, car son code source n’a jamais contenu l’erreur.
Il existe de nombreuses similitudes entre bashet zsh, mais ils ne sont pas implémentés indépendamment les uns des autres. La même fonctionnalité est implémentée de deux manières différentes et, plus important encore dans ce contexte, avec généralement des erreurs différentes.
Indirectement, cela affecte zshpresque autant le travail interactif avec le shell dans un terminal que le travail avec bash.
L'utilisation de of bashest tellement courante que l'on peut difficilement éviter de l'appeler.
zsh, mais qui contiennent réellement bash. #!/bin/bashpour spécifier bashcomme interprète.de nombreuses commandes que vous supposez être des fichiers binaires, mais des scripts de shell, que certains utilisent bash.
dans de nombreux endroits où un shell est exécuté explicitement, bashpeut être utilisé et éventuellement requis.
xargscommandes complexes , ou des gitalias impliquant des argumentsNon, Shellshock n'affecte pas directement zsh.
Cependant, de nombreux environnements utilisant zsh comme shell par défaut ont également installé bash. N'importe quel shell, y compris zsh, peut être utilisé pour générer un shell bash compromis:
zsh ❯ env X='() { (a)=>\' sh -c "echo date"; cat echo
sh: X: line 1: syntax error near unexpected token `='
sh: X: line 1: `'
sh: error importing function definition for `X'
Fri 26 Sep 2014 12:05:57 BST
Pour vous protéger contre cela, vous devez installer un correctif, désinstaller ou désactiver toute version redondante de bash. Vous pouvez désactiver l'installation bash du système avec chmod:
$ chmod a-x /bin/bash
Cependant, il est courant que les scripts appellent explicitement bash. Les scripts effectuant cette opération, ainsi que ceux utilisant des fonctionnalités de script spécifiques à bash, échoueront si bash n'est pas disponible. Patching est la meilleure solution.
importing function definition"? J'ai également testé avec l'injection ssh-server: ssh testuser@localhost '() { :;}; echo "$SHELL"'où je règle le testusershell de connexion sur /bin/zsh, et cela résonne/bin/zsh