В командной оболочке bash, пользующейся популярностью в среде Linux, обнаружена критическая уязвимость, которая позволяет удаленно выполнить код. По десятибалльной шкале Национального Института стандартов и технологий США (NIST) брешь получила 10 баллов.
Уязвимость CVE-2014-6271 связана с некорректной обработкой переменных окружения и определений функций. Стоит отметить, что в используемых в настоящее время версиях bash наименование переменной окружения и функции совпадают. При этом определение функции начинается со знаков () {.
Брешь возникает по причине того, что после обработки определения функции оболочка не останавливается, а продолжает осуществлять синтаксический анализ кода и выполнять дальнейшие команды bash. Это позволяет злоумышленнику использовать переменную окружения с произвольным именем для доставки команд на системы жертвы.
Для того чтобы проверить, уязвима ли система, следует выполнить в терминале команду:
env x='() { :;}; echo vulnerable' bash -c 'echo hello'
Если система пользователя защищена, bash вернет следующее сообщение:
bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' hello
Если система пользователя уязвима, bash вернет следующее сообщение:
vulnerable hello
В связи с этим пользователям, самостоятельно администрирующим или поддерживающим серверы с установленной операционной системой на базе Linux, настоятельно рекомендуется обновить командный интерпретатор.
В Debian и Ubuntu это можно сделать командами:
sudo apt-get update sudo apt-get install bash
В RedHat и CentOS:
yum update bash