Поиск по сайту:

Как защитить свой сервер от уязвимости 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! Кроме того, следите за тем, чтобы на ваших серверах всегда были последние обновления безопасности!