Больше не видеть предупреждения Bash для Shellshock после обновления
Я только что обновил Ubuntu из всплывающего окна "Обновление". Я знаю о 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 скрывает сообщение об ошибке попытки определения функции? Извините за подозрение, но после некоторого поиска в Google, я еще не нашел подобную проблему. Любая ясность будет высоко ценится. Спасибо!
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
)
Я предполагаю, что именно так исправление призвано заставить его вести себя, но по какой-то причине, первоначальная версия Ubuntu bash
патчи выдавали ошибку, вместо того чтобы молча игнорировать дополнительный код.
Первоначальные исправления были предназначены для создания ошибки, когда в переменной окружения было найдено неверное определение функции. Обновленные патчи смотрят только на специально префиксированные переменные, что устраняет практически весь реальный риск. Пытаться
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