Простой логотип Shellshock, похожий на логотип ошибки Heartbleed. | |
идентификаторы CVE | CVE - 2014-6271 (начальный),. CVE -2014-6277,. CVE -2014-6278,. CVE -2014-7169,. CVE -2014-7186,. CVE -2014-7187 |
---|---|
Дата обнаружения | 12 сентября 2014 г.; 6 лет назад (2014-09-12) |
Дата исправления | 24 сентября 2014 г.; 6 лет назад (2014-09-24) |
Discoverer | Стефан Чазелас |
Затронутое программное обеспечение | Bash (1.0.3–4.3) |
Shellshock, также известное как Bashdoor, представляет собой семейство ошибок безопасности в Unix Bash оболочке, первая из которых была раскрыта 24 сентября 2014 года. Shellshock может позволить злоумышленнику заставить Bash выполнять произвольные команды и получить несанкционированный доступ ко многим интернет-службам, таким как веб-серверы, которые используют Bash для обработки запросов.
12 сентября 2014 года Стефан Чазелас сообщил специалисту по сопровождению Баша Чету Рэми об обнаружении им исходной ошибки, которую он назвал «Bashdoor». Вместе со специалистами по безопасности он разработал патч (исправление) для этой проблемы, которому к тому времени был присвоен идентификатор уязвимости CVE -2014-6271. О существовании ошибки было объявлено общественности 24 сентября 2014 г., когда обновления Bash с исправлением были готовы к распространению.
Ошибка, обнаруженная Chazelas, вынуждала Bash непреднамеренно выполнять команды, когда команды объединены с конец определений функций, хранящихся в значениях переменных среды. В течение нескольких дней после публикации было обнаружено множество связанных уязвимостей (CVE -2014-6277, CVE- 2014-6278, CVE- 2014-7169, CVE- 2014-7186 и CVE- 2014-7187 ). Рэйми обратился к ним с помощью ряда дополнительных исправлений.
Злоумышленники использовали Shellshock в течение нескольких часов после первоначального раскрытия, создав ботнеты скомпрометированных компьютеров для выполнения распределенных атак типа «отказ в обслуживании» и сканирование уязвимостей. Компании, занимающиеся безопасностью, зарегистрировали миллионы атак и проверок, связанных с ошибкой, за несколько дней после раскрытия.
Из-за возможности компрометации миллионов незащищенных систем Shellshock сравнивали с ошибкой Heartbleed в его серьезность.
Ошибка Shellshock затрагивает Bash, программу, которую различные системы на основе Unix используют для выполнения командные строки и командные сценарии. Он часто устанавливается как системный интерфейс командной строки по умолчанию. Анализ исходного кода истории Bash показывает, что ошибка была обнаружена 5 августа 1989 г. и выпущена в версии 1.03 Bash 1 сентября 1989 г.
Shellshock - это повышение привилегий уязвимость, позволяющая пользователям системы выполнять команды, которые должны быть им недоступны. Это происходит с помощью функции «экспорта функций» Bash, посредством которой командные сценарии, созданные в одном запущенном экземпляре Bash, могут использоваться совместно с подчиненными экземплярами. Эта функция реализуется путем кодирования сценариев в таблице, которая используется экземплярами совместно и известна как список переменных среды. Каждый новый экземпляр Bash сканирует эту таблицу на предмет закодированных сценариев, собирает каждый из них в команду, которая определяет этот сценарий в новом экземпляре, и выполняет эту команду. Новый экземпляр предполагает, что сценарии, найденные в списке, поступают из другого экземпляра, но он не может проверить это или проверить, что созданная им команда является правильно сформированным определением сценария. Следовательно, злоумышленник может выполнять произвольные команды в системе или использовать другие ошибки, которые могут существовать в интерпретаторе команд Bash, если у злоумышленника есть способ манипулировать списком переменных среды, а затем вызвать запуск Bash.
О наличии ошибки было объявлено общественности 24 сентября 2014 г., когда обновления Bash с исправлением были готовы к распространению, хотя для обновления компьютеров потребовалось некоторое время, чтобы закрыть потенциальную проблему безопасности..
В течение часа после объявления об уязвимости Bash появились сообщения о машинах, скомпрометированных этой ошибкой. К 25 сентября 2014 г. бот-сети на основе компьютеров, скомпрометированных с помощью эксплойтов на основе ошибки, использовались злоумышленниками для распределенных атак типа «отказ в обслуживании» (DDoS) и сканирования уязвимостей.. Лаборатория Касперского сообщила, что компьютеры, скомпрометированные в результате атаки, получившей название «Спасибо-Роб», проводили DDoS-атаки против трех целей, которые они не идентифицировали. 26 сентября 2014 г. было сообщено о связанном с Shellshock ботнете, получившем название «wopbot», который использовался для DDoS-атаки против Akamai Technologies и для сканирования Министерства обороны США.
на 26 сентября охранная фирма Incapsula отметила 17 400 атак на более чем 1800 веб-доменов, исходящих с 400 уникальных IP-адресов, за предыдущие 24 часа; 55% атак пришли из Китая и США. К 30 сентября компания, занимающаяся производительностью веб-сайта CloudFlare, заявила, что ежедневно отслеживает приблизительно 1,5 миллиона атак и зондирований, связанных с ошибкой.
6 октября было широко распространено сообщение о том, что Серверы Yahoo! были скомпрометированы в результате атаки, связанной с проблемой Shellshock. Однако на следующий день было опровергнуто, что именно Shellshock специально допустил эти атаки.
Сопровождающий Bash был предупрежден о первом обнаружении ошибки 12 сентября 2014 г.; исправление последовало вскоре. Несколько компаний и дистрибьюторов были проинформированы до того, как этот вопрос был публично раскрыт 24 сентября 2014 года с идентификатором CVE CVE -2014-6271. Однако после выпуска патча впоследствии появились сообщения о различных, но связанных уязвимостях.
26 сентября 2014 года два разработчика ПО с открытым исходным кодом, Дэвид А. Уиллер и Норихиро Танака, отметили наличие дополнительных проблем. даже после исправления системы с использованием последних доступных исправлений. В электронном письме, адресованном списку oss-sec и списку ошибок bash, Уиллер написал: «Этот патч просто продолжает работу по исправлению ошибок синтаксического анализа, начатую с первого патча. Парсер Bash уверен [в ] имеют много-много других уязвимостей ». Однако это скорее были некоторые общие рассуждения без фактического представления примеров эксплуатации и подразумевали ограничение функциональности Bash, в результате чего некоторые сценарии Bash больше не работали, даже если они не были предназначены для нанесения вреда другим пользователям.
27 сентября 2014 года Михал Залевски из Google Inc. объявил об обнаружении других уязвимостей Bash, одна из которых основана на том факте, что Bash обычно компилируется без рандомизация размещения адресного пространства. 1 октября Залевски опубликовал подробности последних ошибок и подтвердил, что патч Флориана Веймера из Red Hat, опубликованный 25 сентября, действительно предотвращает их. Он сделал это, используя технику фаззинга с помощью служебной программы, известной как american fuzzy lop.
Эта исходная форма уязвимость (CVE -2014-6271 ) связана со специально созданной переменной среды, содержащей экспортированное определение функции, за которым следуют произвольные команды. Bash неправильно выполняет завершающие команды при импорте функции. Уязвимость можно проверить с помощью следующей команды:
env x = '() {:;}; echo уязвимый 'bash -c "echo this is a test"
В системах, затронутых уязвимостью, в приведенных выше командах будет отображаться слово "уязвимый" в результате выполнения Bash команды "echo weak", который был встроен в специально созданную переменную среды с именем "x" .
Обнаружил Михал Залевски, уязвимость CVE -2014-6277, который относится к синтаксическому анализу определений функций в переменных среды с помощью Bash, может вызывать segfault.
Также обнаружено Михал Залевски, эта ошибка (CVE -2014-6278 ) связана с синтаксическим анализом определений функций в переменных среды с помощью Bash.
В тот же день, когда была опубликована исходная уязвимость, Тэвис Орманди обнаружил эту связанную ошибку (CVE -2014-7169 ), которая демонстрируется в следующем коде:
env X = '() {(a) =>\' bash -c "echo date"; cat echo
В уязвимой системе это приведет к непреднамеренному выполнению команды «date».
Вот пример системы, в которой есть исправление для CVE-2014-6271, но нет CVE-2014-7169 :
$ X = '() {(a) =>\' bash -c "echo date" bash: X: строка 1: синтаксическая ошибка рядом с неожиданным токеном `= 'bash: X: строка 1:`' bash : ошибка при импорте определения функции для `X '$ cat echo Пт 26 сен, 01:37:16 UTC 2014
Система отображает синтаксические ошибки, уведомляя пользователя о том, что CVE-2014-6271 была предотвращена, но по-прежнему записывает файл с именем 'echo' в рабочий каталог, содержащий результат вызова 'date'.
Система, исправленная как для CVE-2014-6271, так и для CVE-2014-7169, просто отобразит слово «дата», а файл «echo» не будет создан, как показано ниже:
$ X = '() {(a) =>\' bash -c "echo date" date $ cat echo cat: echo: Нет такого файла или каталога
Флориан Веймер и Тодд Сабин обнаружил эту ошибку (CVE -2014-7186 ), которая связана с ошибкой доступа к памяти вне пределов в коде парсера Bash.
Пример уязвимости, в которой используется несколько "<
bash -c 'true <Уязвимая система отобразит текст" CVE-2014-7186 уязвимый, redir_stack ".
CVE-2014-7187
Также найден Флорианом Веймером, CVE -2014-7187 - это отдельный ошибка в коде парсера Bash, разрешающая доступ к памяти за пределами границ.
Пример уязвимости, в которой используется несколько объявлений «готово»:
(для x в { 1..200}; do echo "for x $ x in; do:"; done; for x in {1.. 200}; сделать эхо сделано; сделано) | баш || echo «CVE-2014-7187 уязвима, word_lineno»Уязвимая система будет повторять текст «CVE-2014-7187 уязвима, word_lineno». Для этого теста требуется оболочка, поддерживающая расширение скобок.
Патчи. До 24 сентября 2014 года сопровождающий Bash Чет Рэми предоставил версию патча bash43-025 для Bash 4.3, адресованную CVE-2014-6271, которая была уже упакованы разработчиками дистрибутива. 24 сентября последовал запрос bash43-026 с адресом CVE-2014-7169. Затем была обнаружена CVE-2014-7186. Флориан Веймер из Red Hat опубликовал некоторый код исправления для этого «неофициально» 25 сентября, который Рэми включил в Bash как bash43-027. - Эти исправления содержат только код, полезный только для тех, кто знает, как скомпилировать («перестроить ») новый двоичный исполняемый файл Bash из файла исправления и оставшихся файлов исходного кода.
На следующий день Red Hat официально представила соответствующие обновления для Red Hat Enterprise Linux, еще через день для Fedora 21. Canonical Ltd. представил обновления для своих версий Ubuntu с долгосрочной поддержкой в субботу, 27 сентября; в воскресенье были обновления для SUSE Linux Enterprise. В следующие понедельник и вторник в конце месяца появились обновления для Mac OS X.
1 октября 2014 г. Михал Залевски из Google Inc. наконец заявил, что код Веймера и bash43-027 исправили не только первые три ошибки, но даже остальные три, опубликованные после bash43-027, включая два его собственных открытия. Это означает, что после предыдущих обновлений дистрибутива никаких других обновлений для решения всех шести проблем не требовалось.
Все они также были включены в Консоль аппаратного обеспечения IBM.
СсылкиВнешние ссылки
На Wikimedia Commons есть материалы, связанные с Shellshock (программная ошибка).
- Интернет-портал
- NIST Национальная база данных уязвимостей CVE Общие уязвимости и воздействия
- CVE-2014-6271 - 20140924nist 20140909cve (первая ошибка)
- CVE-2014- 6277 - 20140927nist 20140909cve
- CVE-2014-6278 - 20140930nist 20140909cve
- CVE-2014-7169 - 20140924nist 20140924cve (вторая ошибка)
- CVE-2014-7186 - 20140929nist 20140925cve
- CVE-2014-7187 - 20140929nist 20140925cve
- Исходный код Bash из GNU Project, включает исправления для известных уязвимостей (28 сентября 2014 г.)
- «Shellshock in the Wild», вредоносные программы-дропперы, Обратные оболочки и бэкдоры, кража данных и DDoS в FireEye, Inc.
- Коллекция атак, замеченных в реальных условиях (29 сентября 2014 г.) в Институте SANS
- Безопасность Предупреждение для CVE-2014-7169 в Oracle
- «Устранение VMware уязвимости внедрения кода Bash с помощью специально созданных переменных среды» в VMware
- База данных уязвимостей Cyberwatch
- ShellShock Exploitation с Metasploit Framework