Чи впливає помилка Shellshock Bash на ZSH?
Чи є модернізація Bash єдиним рішенням?
Чи впливає помилка Shellshock Bash на ZSH?
Чи є модернізація Bash єдиним рішенням?
Відповіді:
Ні, це не впливає на ZSH.
Ви все-таки ОБОВ'ЯЗКОВО оновите bash, оскільки більшість системних скриптів написані для bash і вразливі для помилки оболонки.
Щоб перевірити свій ZSH, зробіть це:
env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
Що саме робить цей код?
env x='() { :;}; echo vulnerable' створює змінну середовища з відомою помилкою за допомогою команди в кінці змінноїzsh -c 'echo hello'запускає оболонку ZSH з простим привіт (та оцінюючи всі env змінні, включаючи x )Якщо ви бачите вихід:
vulnerable
hello
Тоді ваш ZSH вразливий. Шахта (5.0.2) не:
$ env x='() { :;}; echo vulnerable' zsh -c 'echo hello'
hello
bash- це погана звичка для системних утиліт, тому що bash не гарантовано встановлюється; /bin/shє стандартною оболонкою, і вона повинна бути правильним інтерпретатором оболонки POSIX.
env x='() { :;}; echo vulnerable' sh -c 'echo hello'
За цим посиланням :
Ви можете визначити, чи ви вразливі до початкової проблеми в 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
env X='() { (a)=>\' bash -c "echo date"на виправленому баші та, незважаючи на те, що викидає багато помилок, створить файл, echoякий називається, що містить дату. Я не хочу знати, чому.
zshзовсім НЕ використовує bashв своїй основі. bashявно називається у ваших прикладах. Не має значення, яку оболонку ви використовуєте для запуску цих рядків. Ця вразливість впливає на нещодавно розпочату оболонку bash, а не на оболонку, з якої вона запущена.
bashу прикладах на $SHELL.
Це не впливає zshна виконуваний оболонку, оскільки його вихідний код ніколи не містив помилки.
Є багато similaritys між bashі zsh, але вони werer реалізовані незалежно один від одного. Одна і та ж особливість реалізується двома різними способами, і - що важливіше в цьому контексті - зазвичай з різними помилками.
Побічно це впливає на інтерактивну роботу з zshоболонкою в терміналі майже так само, як і з роботою bash.
Застосування bashпросто настільки поширене, що навряд чи можна його уникнути.
zsh, але насправді містять bash. #!/bin/bashдля визначення bashв якості інтерпретатора.безліч команд, які ви вважаєте, є бінарними файлами, але це сценарії оболонок, деякі з яких використовують bash.
у багатьох місцях, де оболонка виконується явно, bashможе бути використана та, можливо, потрібна.
xargsкоманди або gitпсевдоніми, що містять аргументиНі, 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 недоступний. Патчінг - найкраще рішення.
importing function definition"? Я також перевірив ін'єкцію ssh-сервера: ssh testuser@localhost '() { :;}; echo "$SHELL"'там, де я встановив testuserоболонку входу /bin/zsh, і це лунає/bin/zsh