Shellshock — обновляйте ваш bash, джентельмены
Последнее время были отмечены несколько серьезных уязвимостей популярных операционных систем. Достаточно вспомнить Heartbleed (уязвимость OpenSSL), которая затронула большинство систем, были опубликованы описания ошибок в сетевом стэке FreeBSD и возможности эскалации привилегий в определенных версиях ядра Linux. Сравнительно недавно появилось описание ошибки в популярной, можно сказать — стандартной в большинстве случаев оболочке bash. Эта уязвимость получила название Shellshock (CVE-2014-6271, CVE-2014-7169).
Вкратце об природе уязвимости: из-за ошибки интерпретатора возможно выполнение произвольного кода, описанного после кода пользовательской функции. Опасность данной ошибки в том, что произвольный код может быть передан множеством способов — в cookie, в заголовках http-запроса, в локальных переменных и так далее. Уязвимости подвержены все версии bash от 1.14 до 4.3, а в группу риска попадают не только традиционные вэб-серверы, но и множество устройств — домашние роутеры, принтсерверы и даже смартфоны.
Проверить уязвимость можно простой командой:
1 |
env x='() { :;}; echo vulnerable' bash -c "echo this is a test" |
Если после выполнения команды будет выдан текст vulnerable, то используемая версия bash уязвима:
1 2 3 4 |
[root@vulnerable-server ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test [root@vulnerable-server ~]# |
А в том случае, если результатом выполнения команд будет только надпись ‘this is a test’, ваша система уже обновлена и использует актуальную, исправленную версию bash:
1 2 3 |
[root@server ~]# env x='() { :;}; echo vulnerable' bash -c "echo this is a test" this is a test [root@server ~]# |
Если после проверки оказалось, что на сервере используется устаревшая и уязвимая версия bash, следует ее незамедлительно обновить.
Debian, Ubuntu
Все современные версии Debian/Ubuntu могут быть легко обновлены с помощью пакетного менеджера apt-get. Выполните следующие команды для того, чтобы обновить bash:
1 2 |
apt-get update apt-get install --only-upgrade bash |
Если используются устаревшие версии Debian или Ubuntu, то наиболее правильным способом будет обновить систему в целом. Обычно это делается с помощью команды do-release-upgrade. Будьте внимательны и сделайте резервные копии ваших данных и настроек, предупредите пользователей о предстоящих работах, а также изучите соответствующую документацию — обновление системы и используемого программного обеспечения может потребовать коррекции конфигурационных файлов, настроек CMS и так далее.
Centos, Fedora
Обновление версии bash в операционных системах семейства Red Hat Enterprise Linux производится с помощью yum:
1 |
yum update bash |
FreeBSD
В качестве основной оболочки в FreeBSD используется tcsh, однако иногда дополнительно устанавливается bash — например, для работы определенных скриптов. В современных версиях FreeBSD обновление bash может быть выполнено с помощью пакетного менеджера pkg:
1 |
pkg upgrade bash |
Если используется старая версия FreeBSD, где программное обеспечение устанавливается из /usr/ports, обновите дерево ports, а затем скомпилируйте и установите обновленную версию оболочки:
1 2 3 4 |
cd /usr/ports/shell/bash make BATCH=yes build make BATCH=yes deinstall make BATCH=yes reinstall |
Дополнительно рекомендуем: