Уязвимость GHOST подвергла опасности множество Linux-систем
Компания Qualys, специализирующаяся на проблемах информационной безопасности, заявила о том, что в стандартной для многих операционных систем библиотеке языка C — glibc — была обнаружена серьёзная уязвимость под названием GHOST, позволявшая злоумышленнику выполнить произвольный код на компьютере жертвы или сервере. Особую пикантность ситуации придал тот факт, что одна из компаний-разработчиков Linux-дистрибутива давно знала об уязвимости, но не сообщила о ней никому.
Проводя аудит безопасности, специалисты Qualys обнаружили, что в функции __nss_hostname_digits_dots() библиотеки libc была возможность произвести атаку как локально, так и удалённо, связанную с переполнением буфера. В случае если разработчик программы использовал подфункцию gethostbyname*() для доступа к преобразовывателю адресов DNS (конвертирует адрес сайта в IP-адрес), то из-за ошибок проектирования появлялась возможность для выполнения произвольного кода. Специалисты Qualys разработали рабочий эксплойт для демонстрации возможности атаки по всем векторам и связались с разработчиками популярных дистрибутивов Linux, как коммерческих, так и поддерживаемых сообществом. Эксплойт был в состоянии обойти все технологии защиты, включая ASLR, NoeXecute-bit, PIE и SELinux. С публикацией данных об уязвимости, получившей название GHOST (gethostbyname/ghost — привидение), были одновременно выпущены и патчи для большинства Linux-систем, включая Red Hat Linux, Oracle Enterprise Linux, Debian, Ubuntu и других.
Впрочем, позднее выяснилось, что единственной Linux-системой, использующей glibc и не подверженной уязвимости, оказалась Google Chrome OS. Принявшиеся искать причины этой устойчивости энтузиасты пришли к выводу, что компания Google знала об уязвимости, как минимум, с апреля прошлого года. Патч, закрывающий уязвимость, был добавлен в публичные репозитории исходных кодов Chromium 17 апреля, но по каким-то причинам не был замечен никем, а сама Google не разослала уведомлений ни в Linux Foundation, ни команде разработчиков glibc. В корпорации никак не прокомментировали сложившуюся ситуацию. Другая ОС от Google — Android — не подвержена дефекту, так как вместо glibc в ней используется собственная разработка компании — Bionic. Также устойчивы другие альтернативные библиотеки — uclibc и musl. Специалисты в области сетевого стека Linux заявили, что несмотря на то, что уязвимости присвоен высочайший уровень опасности по шкале NIST, эксплуатировать GHOST трудно из-за того, что вызов gethostbyname*() является устаревшим из-за отсутствия поддержки IPv6, и сейчас разработчиками программ используются другие вызовы.