Я только что обновил Ubuntu из всплывающего окна Update. Я знаю о Shellshock, поэтому я быстро приступил к установке. Теперь, когда я пытаюсь запустить
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Я не получаю результат (который получал раньше)
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `x'
hello
как описано вЧто такое уязвимость Bash CVE-2014-6271 (Shellshock) и как ее исправить?
Вместо этого я просто получаю «привет». Можно ли с уверенностью предположить, что установленные мной обновления скрывают эти сообщения об ошибках? После просмотра Центра программного обеспечения я вижу следующие установленные мной обновления:
unity-settings-daemon (14.04.0+14.04.20140414-0ubuntu1, 14.04.0+14.04.20140606-0ubuntu1
aptdaemon-data (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
python-aptdaemon.gtk3widgets (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
bash (4.3-7ubuntu1.3, 4.3-7ubuntu1.4)
python-aptdaemon (1.1.1-1ubuntu5, 1.1.1-1ubuntu5.1)
А точнее, скрывает ли 4.3-7ubuntu1.4 сообщение об ошибке определения функции? Извините за подозрение, но после некоторого гугления я пока не нашел похожей проблемы. Любая ясность будет очень кстати. Спасибо!
решение1
В соответствии сэтот пост в журнале Fedora:
env x='() { :;}; echo OOPS' bash -c :
В уязвимой системе это выведет сообщение «OOPS», но при этом произойдет тихое завершение работы, если bash был исправлен.
Такое поведение наблюдается на:
- Debian
squeeze
(bash
пакет4.1-3+deb6u2
) - CentOS 6.5 (
bash
пакет0:4.1.2-15.el6_5.2
) - Arch Linux (
bash
пакет4.3.026-1
)
Я предполагаю, что исправление призвано заставить его вести себя именно так, но по какой-то причине первоначальные bash
исправления Ubuntu вызывали ошибку вместо того, чтобы молча игнорировать дополнительный код.
Первоначальные патчи были на самом деленамеревалсядля создания ошибки, когда в переменной окружения было найдено неверное определение функции. Обновленные патчи смотрят только на переменные со специальными префиксами, что исключает практически весь риск реального мира. Попробуйте
env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
— вы должны увидеть ошибку.
Я это проверил:
$ env 'BASH_FUNC_x()'='() { :;}; echo OOPS' bash -c :
bash: warning: x: ignoring function definition attempt
bash: error importing function definition for `BASH_FUNC_x`
$ bash --version | head -1
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
$ apt-cache policy bash | grep Installed
Installed: 4.3-7ubuntu1.4