Критическая уязвимость интерпретатора bash
29 Sep 2014 | Автор: dd |В середине прошлой недели появились сообщения о том, что наиболее популярная командная оболочка bash подвержена критической уязвимости, которая изначально позволяла запустить на системе практически любой код, имея доступ к системе.
Это был так называемый баг Shellshock, по аналогии с весенним багом шелла Heartbleed. Но после того как Robert Graham написал скриптик, позвляющий запустить команду ping на удаленной машине, а на базе этого скрипта уже наваяли червя “Thanks-Rob”, уязвимость стала критической, т.к. в сети были обнаружены десятки тысяч уязвимых хостов.
Причем не только серверов и рабочих станций Unix, но и Mac устройств где bash используется по умолчанию, а также сетевых устройств, рутеров, хранилищ и прочего разнообразия, также использующего bash: зараженная система (преимущественно веб-сервер) сканирует окрестности в поиске уязвимых машин, и дает им команду на счивание через wget, после чего они, продолжают участвовать в дальнейшем распространении зловреда.
Проверяется наличие уязвимости вводом кода:
# env ‘x=() { :;}; echo vulnerable’ ‘BASH_FUNC_x()=() { :;}; echo vulnerable’ bash -c “echo test”
в случае если выводится текст vulnerable в любых последовательностях (в зависимости от версий вывод может разниться), то ваша система подвержена уязвимости и на ней необходимо установить заплатку или дообновиться до актуальной версии.
Второй тип уязвимости проверяется вводом кода:
# cd /tmp; rm -f /tmp/echo; env ‘x=() { (a)=>\’ bash -c “echo date”; cat /tmp/echo
При наличии уязвимости будет выведено время и создастся файл /tmp/echo
Собственно в RHEL образных юнихах проверить версию bash можно следующей командой:
# rpm -qa bash
и обновиться
# yum clean all
# yum update bash
Если инсталлятор вам говорит, что свежей версии нет, то значит необходимо скачать ручками с сайта вендора вашей операционки или родного bash.
Хотя если подключить самостоятельно репозиторий ol6_latest, то можно накатить апдейт из него:
# cd /etc/yum.repos.d/
# touch /etc/yum.repos.d/public-yum–ol6.repo
# vi /etc/yum.repos.d/public-yum–ol6.repo
################
[ol6_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
enabled=1
################
# yum repolist all
# yum update bash
В Debian это делается с помощью команд:
# apt-get update
# apt-get install –only-upgrade bash
Теги: centos