Comment puis-je m'assurer que mon installation Bash n'est plus vulnérable au bogue ShellShock après les mises à jour?
Comment puis-je m'assurer que mon installation Bash n'est plus vulnérable au bogue ShellShock après les mises à jour?
Réponses:
Pour vérifier la vulnérabilité CVE-2014-6271
env x='() { :;}; echo vulnerable' bash -c "echo this is a test"
il ne devrait PAS faire écho au mot vulnérable.
/tmp/echo
que vous pouvez supprimer après et que vous devez supprimer avant de tester à nouveau).
cd /tmp; env X='() { (a)=>\' bash -c "echo date"; cat echo
il faut dire le mot date puis se plaindre avec un message comme cat: echo: No such file or directory
. Si au lieu de cela, il vous indique quelle est la date et l'heure actuelle, votre système est vulnérable.
bash -c 'true <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF' || echo "CVE-2014-7186 vulnerable, redir_stack"
il ne doit PAS faire écho au texte CVE-2014-7186 vulnerable, redir_stack
.
(for x in {1..200} ; do echo "for x$x in ; do :"; done; for x in {1..200} ; do echo done ; done) | bash || echo "CVE-2014-7187 vulnerable, word_lineno"
il ne doit PAS faire écho au texte CVE-2014-7187 vulnerable, word_lineno
.
env HTTP_COOKIE="() { x() { _; }; x() { _; } <<`perl -e '{print "A"x1000}'`; }" bash -c "echo testing CVE-2014-6277"
Le résultat de cette opération est qu’il renvoie UNIQUEMENT le texte testing CVE-2014-6277
. S'il exécute perl ou s'il se plaint que perl n'est pas installé, c'est définitivement un échec. Je ne connais aucune autre caractéristique de défaillance, car je n'ai plus de système non corrigé.
env HTTP_COOKIE='() { _; } >_[$($())] { echo hi mom; id; }' bash -c "echo testing CVE-2014-6278"
Un test réussi pour ce test est qu’il doit SEULEMENT rappeler le texte testing CVE-2014-6278
. Si le vôtre fait écho hi mom
n'importe où, c'est un échec.
foo='() { echo not patched; }' bash -c foo
à cela? Tant que les exportations de fonctions ne sont pas placées dans un espace de noms séparé, nous ne cesserons pas de courir d’un bogue d’analyseur à un autre.
Exportez une variable d'environnement spécialement conçue qui sera évaluée automatiquement par les versions vulnérables de Bash:
$ export testbug='() { :;}; echo VULNERABLE'
Maintenant, exécutez un simple écho pour voir si Bash évaluera le code dans $ testbug même si vous n'avez pas utilisé cette variable vous-même:
$ bash -c "echo Hello"
VULNERABLE
Hello
Si la chaîne "VULNERABLE" est affichée, la réponse est évidente. Sinon, vous n'avez pas à vous inquiéter et votre version corrigée de Bash est OK.
Veuillez noter que plusieurs versions de correctifs ont été publiées par les principales distributions Linux et qu’elles ne résolvent parfois pas complètement la vulnérabilité. Continuez à vérifier les avis de sécurité et l' entrée CVE pour ce bogue.
export
):env testbug='() { :;}; echo VULNERABLE' bash -c "echo Hello"
Shellshock est pratiquement une conjonction de plus d'une vulnérabilité de bash , et à ce moment il y a aussi MalAware qui exploite cette vulnérabilité , donc Shellshock peut être une question qui est encore ouvert, il y a un fil avec des mises à jour de RedHat sur ces questions .
Redhat recommande ce qui suit:
Exécuter la commande:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
Si la sortie est:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
vulnerable
bash: BASH_FUNC_x(): line 0: syntax error near unexpected token `)'
bash: BASH_FUNC_x(): line 0: `BASH_FUNC_x() () { :;}; echo vulnerable'
bash: error importing function definition for `BASH_FUNC_x'
test
vous n'avez pas de solution.
Si la sortie est:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
bash: error importing function definition for `BASH_FUNC_x()'
test
vous avez CVE-2014-6271
fix
Si votre sortie est:
$ env 'x=() { :;}; echo vulnerable' 'BASH_FUNC_x()=() { :;}; echo vulnerable' bash -c "echo test"
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x'
test
vous n'êtes pas vulnérable.
L’autre partie de la vérification ShellShock est la vérification de la vulnérabilité CVE-2014-7169 qui garantit que le système est protégé contre le problème de création de fichier. Pour vérifier si votre version de Bash est vulnérable à CVE-2014-7169, exécutez la commande suivante:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
bash: x: line 1: syntax error near unexpected token `='
bash: x: line 1: `'
bash: error importing function definition for `x'
Fri Sep 26 11:49:58 GMT 2014
Si votre système est vulnérable, l'heure et la date s'afficheront et / tmp / echo sera créé.
Si votre système n'est pas vulnérable, vous verrez une sortie semblable à:
$ cd /tmp; rm -f /tmp/echo; env 'x=() { (a)=>\' bash -c "echo date"; cat /tmp/echo
date
cat: /tmp/echo: No such file or directory
J'ai écrit un utilitaire CLI appelé ShellShocker pour tester votre serveur Web à la recherche de vulnérabilités dans les scripts CGI. Pour tester votre site, vous exécutez:
python shellshocker.py <your-server-address>/<cgi-script-path>
c'est à dire
python shellshocker.py http://example.com/cgi-bin/possibly-vulnerable-script.cgi
EDIT: cet utilitaire a été supprimé, désolé: '(
Vous pouvez soumettre votre URL CGI à ce test en ligne:
tapez env x = '() {:;}; echo vulnérable 'bash -c "echo this est un test" et si cela renvoie vulnérable et qu'il s'agit d'un test, cela signifie que votre ordinateur OSX / Linux est affecté. Le remède consiste à mettre à jour vers la dernière version de bash.