Защита сервера от уязвимости Shellshock

24 сентября 2014 года была обнаружена уязвимость GNU Bash, которая получила название Shellshock, или Bashdoor. Простыми словами, уязвимость позволяет удаленному злоумышленнику при определенных условиях выполнить произвольный код, присваивая строкам кода определенные переменные окружения. Поскольку оболочка bash в дистрибутивах Linux, BSD и Mac OS X почти вездесуща, многие компьютеры имеют уязвимость Shellshock; все версии Bash с 1.14 и до 4.3 (т.е. все существующие релизы за почти 25 лет) находятся в опасности.

Уязвимость Shellshock может быть использована в системах, чьи сервисы и приложения позволяют удаленным пользователям назначать переменные окружения bash. Среди уязвимых систем:

  • HTTP-серверы Apache, которые используют скрипты CGI (через mod_cgi и mod_cgid), написанные в bash или запущенные в подоболочке bash;
  • Некоторые клиенты DHCP;
  • Серверы OpenSSH, которые используют ForceCommand;
  • Всевозможные сетевые сервисы, которые используют bash.

Подробное описание уязвимости можно найти по ссылкам:

Поскольку уязвимость Shellshock очень распространена (даже более, чем уязвимость OpenSSL по имени Heartbleed) и ею достаточно просто воспользоваться, настоятельно рекомендуется должным образом обновить уязвимые системы,  чтобы исправить или смягчить уязвимость как можно скорее. Данное руководство подскажет, как проверить свою систему на эту уязвимость и как обновить bash, чтобы устранить ее.

Проверка системы на уязвимость Shellshock

Каждую систему, в которой запущена оболочка bash, необходимо проверить на уязвимость, запустив следующую команду в строке bash:

env 'VAR=() { :;}; echo Bash is vulnerable!' 'FUNCTION()=() { :;}; echo Bash is vulnerable!' bash -c "echo Bash Test"

Выделенные отрывки «echo Bash is vulnerable!» указывают, куда удаленный злоумышленник может внедрить вредоносный код (произвольный код после определения функции). Таким образом, если на экране появляется следующий вывод, значит, версия Bash уязвима, и ее необходимо обновить:

Bash is vulnerable!
Bash Test

Если же на выходе не появляются фразы типа «Bash is vulnerable», значит, система защищена от, по меньшей мере, первой уязвимости (CVE-2014-6271); тем не менее, она может быть уязвима для других CVE, которые были обнаружены позже. Если команда выводит предупреждения или ошибки bash, необходимо обновить bash до последней версии; этот процесс описывается в следующем разделе данного руководства. Если же в результате на экране появляется только следующая строка, оболочка bash неуязвима к Shellshock:

Bash Test

Тестирование удаленных сайтов

Чтобы проверить сайты или отдельные CGI-скрипты на уязвимость, используйте инструмент ‘ShellShock’ Bash Vulnerability CVE-2014-6271 Test Tool.

Просто введите URL-адрес веб-сайта или CGI-скрипта, который нужно протестировать, в соответствующее поле и нажать кнопку Begin test.

Защита от уязвимости Shellshock: обновление bash

Самый простой способ устранить уязвимость – использовать менеджер пакетов по умолчанию для обновления версии bash. В следующих подразделах руководства описывается процесс обновления Bash на различных дистрибутивах Linux , включая Ubuntu, Debian, CentOS, Red Hat и Fedora.

Системы Ubuntu/Debian (менеджер apt-get)

В поддерживаемых версиях Ubuntu и Debian обновить bash до последней доступной версии можно с помощью менеджера пакетов apt-get:

sudo apt-get update && sudo apt-get install --only-upgrade bash

После обновления обязательно повторите проверку системы на уязвимость.

Устаревшие релизы Ubuntu/Debian

При использовании релиза Ubuntu или Debian со статусом end of life необходимо обновить версию операционной системы до поддерживаемой, чтобы получить доступ к менеджеру пакетов и обновить bash. Следующая команда обновит систему до более нового релиза (рекомендуется создать резервную копию сервера и важных данных на случай возникновения каких-либо проблем):

sudo do-release-upgrade

Обновив систему, выполните действия, описанные в предыдущем разделе, чтобы обновить bash.

Системы CentOS/Red Hat/Fedora (менеджер yum):

В этих системах обновить оболочку bash можно через yum:

sudo yum update bash

Не забудьте снова проверить систему на уязвимость после обновления.

Устаревшие релизы CentOS/Red Hat/Fedora

При использовании релизов CentOS/Red Hat/Fedora со статусом end of life нужно обновить систему до поддерживаемой версии, а затем использовать менеджер пакетов yum, чтобы обновить bash. Чтобы обновить систему, используйте следующую команду (не забудьте сначала создать резервную копию сервера и всех важных данных на случай возникновения каких-либо проблем):

sudo yum update

Обновив систему, приступайте к обновлению оболочки. После обновления обязательно повторите проверку системы на уязвимость Shellshock.

Итоги

Обязательно обновите все пострадавшие и уязвимые серверы до последней версии Bash! Кроме того, не забывайте следить за обновлениями безопасности и вовремя применять их на своих серверах.

Tags: , , , , , , , , , , , , , , , , , , ,

Добавить комментарий