Новая уязвимость GHOST угрожает популярным дистрибутивам на базе Linux

    image

    Уязвимость в распространенных дистрибутивах Linux может позволить злоумышленнику получить удаленный контроль над системой. Под ударом оказались пользователи Debian 7 (wheezy), Red Hat Enterprise Linux 6 & 7, CentOS 6 & 7, Ubuntu 12.04. Также уязвимы Zend Framework v2, Wordpress и ряд других популярных приложений.

    Информация о новой уязвимости (CVE-2015-0235) в библиотеке glibc (GNU C Library) впервые была опубликована во французской рассылке. Некоторые специалисты считают, что это было сделано по ошибке, так как к тому моменту никто не успел подготовить обновления.

    Подробное техническое описание уязвимости и эксплойт для уязвимости можно найти на Openwall, а первые описания были опубликованы в сообществе Rapid 7.

    В чем проблема


    Специалистам, обнаружившим уязвимость, удалось подготовить специально сформированное email-сообщение, эксплуатирующее уязвимость в почтовом сервере Exim под управлением уязвимой версии Glibc. Стоит заметить, что Exim весьма широко распространен и в некоторых операционных системах является почтовым сервером по умолчанию. Но помимо этого потенциально могут быть проэксплуатированы и другие приложения:

    • SSH-серверы, использующие DNS-запросы при аутентификации с allow/deny.
    • Почтовые серверы с обратными DNS-запросами.
    • Многочисленные веб-приложения, которые по входным данным пользователя проводят DNS-запросы.
    • СУБД MySQL, которые проводят аутентификацию по доменным именам (MySQL privileges).

    Уязвимость GHOST была обнаружена в библиотеке (glibc — функции gethostbyname() и gethostbyname2()), являющейся неотъемлемой частью Linux — десктоп-компьютеров под управлением этой ОС во всем мире не так много, а вот популяция работающих на ней серверов очень велика, а это значит, что под угрозой может оказаться сетевая инфраструктура большинства технологических проектов. В других реализациях libc (такие как uclibc, musl) уязвимость отсутствует.

    Ошибке было присвоено имя GHOST («призрак») — сокращение, обыгрывающее названия уязвимых функций gethostbyname() и gethostbyname2().

    По одной из версий, основанных на анализе метаданных логотипа с красным привидением, специалисты знали об этой уязвимости как минимум со 2 октября 2014 года и соблюдали условия ответственного разглашения, пока разработчики исправляли ошибку.

    В чем отличие от Heartbleed и Shellshock


    В отличие от уязвимости в пакете OpenSSL Heartbleed, позволявшей злоумышленникам читать память сервера, ошибка GHOST позволяет захватывать управление над операционной системой с помощью удаленного исполнения кода (RCE). Поскольку опасности подвергаются главным образом серверы, проблема не должна затронуть столь широкий круг пользователей, как в случае Heartbleed, однако под угрозой оказывается инфраструктура большинства интернет-компаний.

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

    Как защититься


    Для того чтобы обезопасить свои серверы, необходимо установить патч (заплатку), выпущенную поставщиком соответствующего Linux-дистрибутива. Информация об уязвимости появилась 27 января, поэтому уже сегодня (28 января) должны появиться первые патчи.

    Кроме того, ресурс Cyberciti.biz опубликовал инструкцию по обнаружению всех сервисов, приложений и исполняемых файлов в дистрибутиве, связанных с уязвимой библиотекой glibc (GNU C Library), а также устранением ошибки.

    image
    Метки:
    Positive Technologies 431,20
    Компания
    Поделиться публикацией
    Комментарии 28
    • 0
      А перезапустить сервисы?
      • 0
        С того же сайта, указанного в статье: patch-ghost-on-debian-ubuntu-fedora-centos-rhel-linux.
        Там есть программа на C, которой можно проверить уязвима ли система или нет, прежде чем патчиться.
        • +1
          Немного дополню. Протестировать можно так:

          wget https://gist.githubusercontent.com/koelling/ef9b2b9d0be6d6dbab63/raw/de1730049198c64eaf8f8ab015a3c8b23b63fd34/gistfile1.c
          gcc gistfile1.c -o CVE-2015-0235
          ./CVE-2015-0235
          
          • 0
            А чем вас не устроил предыдущий вариант с отсылкой на оригинальный текст?
            В вашем случае надо проверить тот ли это код и ничего ли не поменяли, благо код небольшой, но это трата времени.
            • 0
              Всем устроил. Мне показалось, что такой вариант будет быстрее, если кому-то надо просто проверить уязвим или нет.
              • 0
                К слову, я сначала скачал, а потом код почитал. И только потом скомпилил и запустил.
                • 0
                  Подписываюсь! Прога на Си пришлась очень полезной. Мне было проще открыть линк чтобы проверить небольшой код нежели открывать доки с кучей ненужной мне информации.
                  Благодарю!
          • +3
            Вчера вечером вкратце упоминали, кстати: habrahabr.ru/company/dsec/blog/249007/
            • –38
              Сколько лет еще понадобиться, чтоб фраза «опенсоурс это безопасно из-за открытости кода» исчезла из обихода? =)
              • +25
                Нисколько, потому что такие инциденты этот тезис только подтверждают. Или это настолько неочевидно, что нужно каждый раз объяснять?
                • +16
                  Ну «понадобится» же, ну. Или это настолько неочевидно, что нужно каждый раз объяснять?
                  • +6
                    Они еще «тся\ться» в школе не проходили, ну, что вы?..
                • –3
                  [paranoid_mod_on]
                  почему сразу уязвимость? обычный бэкдор.
                  [paranoid_mod_off]
                  • +5
                    Это фигня. Я вот тут раскопал в nova.conf (кусок openstack'а) опцию backdoor_port = None (выключено по-умолчанию). Я понимаю, питон, эвентлеты и всё такое, для отладки, но название внушает.
                  • +9
                    Инструкция по исправлению ошибки — это же жесть
                    sudo apt-get clean
                    sudo apt-get update
                    sudo apt-get dist-upgrade
                    

                    А если мне НЕ нужно обновляться до следующей версии дистрибутива?
                    • +2
                      Собственно обновить только libc не проблема
                      sudo apt-get update
                      sudo apt-get install libc-bin
                      
                      • 0
                        И да, после обновления этим способом скрипт пишет, что уязвимости нет. Сервер перезагружать тоже не нужно. Рестарта сервисов вполне достаточно
                        • 0
                          Насчет перезагрузки, это чтобы гарантировано перезапустить все, что можно. Тест заработал с обновленной библиотекой, а sshd продолжает работать с загруженной в оперативку старой.
                          • 0
                            Думаете перезапуска сервисов не достаточно? Именно для этого перезапуск и придумали )
                            • 0
                              SSH-сервер даже после перезапуска сохраняет уже установленные соединения по понятным причинам. Так что в случае SSH нужно закрыть все пользовательские сессии и самому выйти :)
                              • +1
                                Не все оформлено как сервис. Особенно, если у вас какой-то самостоятельно скомпиленный демон на cron @ reboot подвешен.
                        • +4
                          apt-get dist-upgrade — это не обновление версии дистрибутива, ничего страшного в этой команде
                          • +1
                            >apt-get dist-upgrade
                            >А если мне НЕ нужно обновляться до следующей версии дистрибутива?

                            При чём тут обновление до следующей версии дистрибутива?
                            Если в sources.list вы не указывали никаких новых версий дистрибутива, то ничего dist-upgrade без вашего ведома обновлять не будет.

                            Вот подробное описание, чтобы понимали о чём речь:

                            Иногда у вас уже установлен пакет и выходит новая версия, в которой есть много новых возможностей, поэтому, она теперь при работе зависит от некоторых других программ. Например, у вас уже может быть установлен видеопроигрыватель, который поддерживает много различных видеоформатов. Когда появляются новые видеоформаты, модули для них могут добавляться в виде отдельных пакетов, так что последняя версия видеоплейера теперь зависит от нового пакета, который еще не установлен в вашей системе. Если вы просто запустите команду apt-get upgrade, вы получите последний видеоплеер, но вы не получите все новые пакеты видеоформатов. Команда apt-get dist-upgrade позволит вам решить эту проблему: она не только получит самую последнюю версию каждого уже установленного пакета так, как это делает команда apt-get upgrade, но также установит все необходимые новые пакеты, которых еще может не быть в вашей системе. Если вы хотите, чтобы ваша система находилась в постоянно обновленном состоянии и в ней были использованы все обновления, связанные с безопасностью, лучший способ этого добиться — это время от времени запускать команды apt-get update; apt-get dist-upgrade


                            >Собственно обновить только libc не проблема
                            >sudo apt-get update
                            >sudo apt-get install libc-bin

                            Держать всю систему в актуальном состоянии очень важно. Обновлять отдельные компоненты дистрибутива конечно можно, но только когда это какой-нибудь zip/zsh, но когда речь идёт о glibc — лучше обновить всё, потому что это зависимость номер один в любой linux-системе.
                          • +8
                            Это уже третья статья по теме Ghost в хабе «Информационная безопасность». Я понимаю, всем хочется быстрее сообщить о проблеме, но вы хоть смотрите, прежде чем постить!
                            • 0
                              Проверил C-ым скриптом — vulnerable. Выполнил все рекомендации по обновлению… Всё равно vulnerable. «cat /etc/issue => Debian GNU/Linux 6.0»… :(
                              • 0
                                Даже после перезагрузки?
                                • +1
                                  Да :( Впрочем, я кажется понял. У меня что попало в sources.list-е прописано. Вот и не обновилось ничего.
                                • 0
                                  необходимо подключить LTS репозиторий, и будет счастья.
                                  root@vm ~ # grep lts /etc/apt/sources.list
                                  deb http://ftp.de.debian.org/debian squeeze-lts main
                                  root@vm ~ #
                                  

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                Самое читаемое