Влияет ли ошибка Shellshock Bash на ZSH?
Является ли обновление Bash единственным решением?
Влияет ли ошибка Shellshock Bash на ZSH?
Является ли обновление Bash единственным решением?
Нет, это не влияет на ZSH.
Вы по-прежнему ДОЛЖНЫ обновлять bash, так как большинство системных сценариев написаны для bash и уязвимы для ошибки «shellshock».
Чтобы проверить свой ZSH, сделайте это:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
Что именно делает этот код?
env x='() { :;}; echo vulnerable'
создает переменную среды с известной ошибкой, используя команду в конце переменнойzsh -c 'echo hello'
запускает оболочку ZSH с простым hello (и вычисляет все переменные env, включая x)Если вы видите вывод:
vulnerable
hello
Тогда ваш ZSH уязвим. Мой (5.0.2) не является:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
Это не влияет на zsh
как на исполняемый файл оболочки, потому что его исходный код никогда не содержал ошибку.
Есть много общего между bash
и zsh
, но они были реализованы независимо друг от друга. Одна и та же функция реализована двумя различными способами и, что более важно, в этом контексте, как правило, с разными ошибками.
Косвенно это влияет на работу в интерактивном режиме с оболочкой zsh
в терминале почти так же, как на работу с bash
.
Использование bash
настолько распространено, что вряд ли можно этого не называть.
zsh
, но на самом деле содержат bash
. #!/bin/bash
чтобы указать bash
в качестве интерпретатора. многие команды, которые вы предполагаете, являются двоичными, но являются сценариями оболочки, некоторые из них используют bash
.
во многих местах, где оболочка выполняется явно, может использоваться bash
, и, возможно, это требуется.
xargs
или псевдонимы git
с аргументами По этой ссылке:
Вы можете определить, уязвимы ли вы к исходной проблеме в CVE-2014-6271, выполнив этот тест:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Если вы видите слово уязвимое в выходных данных этой команды, ваш bash уязвим, и вам следует обновить его. Ниже приведена уязвимая версия от OS X 10.8.5:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
vulnerable
hello
Следующий вывод является примером неуязвимой версии bash.
$ env x='() { :;}; echo vulnerable' bash -c 'echo hello'
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
Нет, Shellshock не влияет на zsh напрямую.
Однако во многих средах, которые используют zsh в качестве оболочки по умолчанию, также установлен bash. Любая оболочка, включая zsh, может быть использована для создания скомпрометированной оболочки bash:
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
Чтобы защититься от этого, вы должны исправить, удалить или отключить любые избыточные версии bash.
Вы можете отключить установку системы bash с помощью chmod
:
$ chmod a-x /bin/bash
Однако для сценариев характерно явное обращение к bash. Сценарии, которые делают это, и те, которые используют специфичные для bash функции сценариев, потерпят неудачу, если bash недоступен. Ямочный ремонт - лучшее решение.