Как защитить свой сервер от уязвимости Shellshock Bash
Введение
24 сентября 2014 г. была раскрыта уязвимость GNU Bash, известная как Shellshock или «Ошибка Bash». Короче говоря, уязвимость позволяет удаленным злоумышленникам выполнять произвольный код при определенных условиях, передавая строки кода после переменной среды. Из-за вездесущего статуса Bash среди дистрибутивов Linux, BSD и Mac OS X многие компьютеры уязвимы для Shellshock, все неисправленные версии Bash между 1.14 и 4.3 (т. е. все выпуски до настоящего времени) находятся под угрозой.
Уязвимость Shellshock можно использовать в системах, на которых запущены службы или приложения, позволяющие неавторизованным удаленным пользователям назначать переменные среды Bash. Примеры эксплуатируемых систем включают следующее:
- HTTP-серверы Apache, использующие сценарии CGI (через
mod_cgi
иmod_cgid
), написанные на Bash или запускаемые в подоболочках Bash - Некоторые DHCP-клиенты
- Серверы OpenSSH, использующие возможность
ForceCommand
- Различные сетевые службы, использующие Bash.
Подробное описание ошибки можно найти на странице CVE-2014-7187.
Поскольку уязвимость Shellshock очень широко распространена — даже больше, чем ошибка OpenSSL Heartbleed — и ее особенно легко использовать, настоятельно рекомендуется как можно скорее обновить уязвимые системы, чтобы исправить или смягчить уязвимость. Мы покажем вам, как проверить, уязвимы ли ваши машины, и, если да, как обновить Bash, чтобы устранить уязвимость.
Проверить уязвимость системы
В каждой из ваших систем, на которых работает Bash, вы можете проверить наличие уязвимости Shellshock, выполнив следующую команду в командной строке bash:
env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"
Выделенная часть команды echo Bash isуязвима!
показывает, где удаленный злоумышленник может внедрить вредоносный код; произвольный код, следующий за определением функции в назначении переменной среды. Поэтому, если вы видите следующий вывод, ваша версия Bash уязвима и должна быть обновлена:
Bash is vulnerable!
Bash Test
Если ваши выходные данные не включают полезную нагрузку симулированного злоумышленника, т. е. «Bash уязвим» не печатается в качестве вывода, вы защищены по крайней мере от первой уязвимости (CVE-2014-6271), но вы можете быть уязвимы для других CVE. которые были обнаружены позже. Если в выходных данных есть какие-либо предупреждения или ошибки bash
, вам следует обновить Bash до последней версии; этот процесс описан в следующем разделе.
Если единственное, что выводит тестовая команда, это следующее, ваш Bash защищен от Shellshock:
Bash Test
Протестируйте удаленные сайты
Если вы просто хотите проверить, уязвимы ли веб-сайты или определенные CGI-скрипты, воспользуйтесь этой ссылкой: Инструмент для тестирования уязвимости ShellShock Bash CVE-2014-6271.
Просто введите URL-адрес веб-сайта или сценария CGI, который вы хотите протестировать, в соответствующей форме и отправьте.
Исправить уязвимость: обновить Bash
Самый простой способ исправить уязвимость — использовать менеджер пакетов по умолчанию для обновления версии Bash. Следующие подразделы посвящены обновлению Bash в различных дистрибутивах Linux, включая Ubuntu, Debian, CentOS, Red Hat и Fedora.
APT-GET: Ubuntu/Debian
Для поддерживаемых в настоящее время версий Debian обновите Bash до последней версии, доступной через apt-get
:
sudo apt-get update && sudo apt-get install --only-upgrade bash
Теперь снова проверьте уязвимость вашей системы, выполнив команду из предыдущего раздела (Проверить уязвимость системы).
Окончание жизни выпусков Ubuntu/Debian
Если вы используете выпуск Ubuntu/Debian, который считается устарелым, вам придется выполнить обновление до поддерживаемого, чтобы использовать диспетчер пакетов для обновления Bash. Для обновления до новой версии можно использовать следующую команду (рекомендуется сначала создать резервную копию сервера и важных данных на случай возникновения проблем):
sudo do-release-upgrade
После завершения обновления обязательно обновите Bash.
YUM: CentOS/Red Hat/Fedora
Обновите Bash до последней доступной версии через yum
:
sudo yum update bash
Теперь снова проверьте уязвимость вашей системы, выполнив команду из предыдущего раздела (Проверить уязвимость системы).
Окончание выпуска CentOS/Red Hat/Fedora
Если вы используете выпуск CentOS/Red Hat/Fedora, который считается устарелым, вам придется выполнить обновление до поддерживаемого, чтобы использовать диспетчер пакетов для обновления Bash. Для обновления до новой версии можно использовать следующую команду (рекомендуется сначала создать резервную копию сервера и важных данных на случай возникновения проблем):
sudo yum update
После завершения обновления обязательно обновите Bash.
Заключение
Обязательно обновите все затронутые серверы до последней версии Bash! Кроме того, следите за тем, чтобы на ваших серверах всегда были последние обновления безопасности!