«Юбиляру» посвящается
15 марта 2018
В январе 2018 года стало известно об уязвимости за номером 1 000 001 (CVE-2018-1000001). Хорошо живем!
Внимание СМИ обычно привлекают громкие фразы о «дырах размером с ворота» (даже если эти ворота потом зарастают бурьяном и ими никто не пользуется). Сделаем исключение и расскажем о рядовой уязвимости, особенность которой заключается лишь в красивом номере.
В стандартной библиотеке Glibc выявлена уязвимость (CVE-2018-1000001) проявляющаяся при возврате относительного пути системным вызовом getcwd().
Так как вызов getcwd() может вернуть не полный путь, а обрезанный с заменой части на "(unreachable)", а realpath() на подобную замену не рассчитан и пытается найти "/" корня пути, при разборе подобного пути он не остановится на начале "(unreachable)", а продолжит разбор памяти. Суть нормализации в удалении лишних элементов ("/./", "/../" и "//") в пути, поэтому буфер для записи итогового пути выделяется на основе размера имеющегося пути, без расчета, что разбор продолжится за пределами "(unreachable)". Так как заполнение осуществляется в обратном порядке, то при обработке символической ссылки с комбинацией переходов "/../" можно добиться выхода указателя в нужную область памяти до начала выделенного буфера и содержимое части пути будет записано в область перед буфером.
Выявившие уязвимость исследователи подготовили рабочий прототип эксплоита.
Переведем на русский. Пути бывают абсолютные и относительные. Пример абсолютного пути: C:\Windows. В этом случае известно точное местоположение файла или папки. Относительный путь отсчитывается не от корневого каталога, а от текущего положения пользователя и может начинаться с "..". Во многих случаях вещь достаточно удобная. Например, когда нужно переместиться из одной папки в другую:
Проблемы возникают, когда известен относительный путь к файлу или папке, а требуется получить абсолютный. Естественно, его длина в момент вызова такой операции неизвестна и вполне может превысить отведенный буфер. И вполне возможно, что при обработке буфера программа (по указанию хакера, передавшего в нее специальным образом сформированные данные) может выйти за его пределы. Так выглядит атака на переполнение буфера.
В случае упомянутой уязвимости возникала ошибка иного рода. Команда получения пути (getcwd(), копирует полный путь текущего рабочего каталога диска в строку указанной длины) в ответ на запрос отвечала, что по какой-то причине не может получить часть пути (unreachable). А команда, вызывавшая getcwd, этот момент не учитывала и продолжала попытки получения абсолютного пути, в результате выходя за часть пути, обозначенную как unreachable.
Типичная ситуация, характерная для несогласованной работы команд, ответственных за разные части проекта.
Естественно, для найденной уязвимости было выпущено обновление, которое нужно установить.
Интересный факт
Средний возраст наиболее устаревших неустановленных обновлений по системам, где такие уязвимости были обнаружены (прим. по итогам проведенных аудитов систем), составляет 108 месяцев (9 лет).
Самая старая из обнаруженных уязвимостей (CVE-1999-0024) опубликована более 17 лет назад и связана с тем, что DNS-сервер поддерживает рекурсию запросов. В результате эксплуатации данной уязвимости злоумышленник может проводить атаки на отказ в обслуживании.
https://www.ptsecurity.com/upload/corporate/ru-ru/analytics/Corp-Vulnerabilities-2017-rus.pdf
Вот так и живем. Уязвимости находятся, патчи под них выпускаются – и не устанавливаются. Сервер проработал наверно лет 17-18, и никто не озаботился установить на него обновления.
Кстати, знаете ли вы, что для уязвимости есть свой аналог премии «Оскар» со своими номинациями? Например, такими:
На прошедшей в Лас Вегасе конференции Black Hat состоялась церемония вручения премии Pwnie Awards 2017, в рамках которой выделены наиболее значительные уязвимости и абсурдные провалы в области компьютерной безопасности.
Наиболее раздутое объявление об уязвимости. Присуждается за наиболее пафосное и масштабное освещение проблемы в Интернете и СМИ, особенно если в итоге уязвимость оказывается неэксплуатируема на практике. В номинации упомянуты:
- Уязвимость Dirty Cow (CVE-2016-5195), которая является локальной уязвимостью в ядре Linux, ничем не примечательной перед другими подобными проблемами, которые всплывают регулярно. Но, в отличие от остальных проблем, для Dirty Cow создан свой сайт, логотип и аккаунт в Twitter.
- Уязвимость в Cryptsetup (CVE-2016-4484), которая была излишне демонизирована несмотря на возможность совершения атаки, только при физическом доступе к оборудованию.
- Исследователь, выявивший код для деактивации атаки вредоносного ПО Wannacry, был возвеличен в СМИ как спаситель человечества и герой.
- Атака Cloak and Dagger, для которой заведен свой сайт, на деле бессмысленна, так как требует, чтобы жертва установила специальное приложение с правами вывода поверх других окон.
Антивирусная правДА! рекомендует
И на фоне «звезд» типа Meltdown теряются менее известные, но куда более используемые или опасные «дыры».
Нам важно ваше мнение
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
Денисенко Павел Андреевич
21:28:35 2018-08-05
Неуёмный Обыватель
16:18:44 2018-06-12
anatol
20:01:12 2018-03-26
anatol
20:12:51 2018-03-19
Мурка
09:35:47 2018-03-19
Сэм
00:14:12 2018-03-17
2018
18:06:08 2018-03-16
Сергей
17:55:36 2018-03-16
Maat
14:42:07 2018-03-16
Вячeслaв
14:15:57 2018-03-16
И еще один нюанс. Подавляющая часть пользователей новостей не читает и об новых уязвимостях слыхом не слыхивала, антивирусу же пиарить одну конкретную уязвимость - никаких маркетинговых ресурсов не хватит.
В общем целом хорошо сказал Торвальдс
Торвальдс не отрицает наличия проблем, но считает, что общественность должна относиться к подобным отчетам с долей скепсиса. По его мнению, многие эксперты стараются всеми силами привлечь внимание даже к самой незначительной уязвимости. «Сейчас запоминающееся название и web-сайт стали практически требованием для громкого раскрытия. Исследователям нужно понимать, что из-за этого они выглядят, как клоуны. Всей индустрии нужно признать, что творится много всякой х**и, и они должны использовать – и поощрять – критическое мышление», - заявил Торвальдс.
https://www.securitylab.ru/news/492132.php
Но! Разбираться в тонкостях, страшно ли лили уже надо защищать сапоги от брызг расплавленного металла - дело очень узких специалистов. Пользователю же один выход - обновляться
Вячeслaв
11:00:26 2018-03-16
razgen
23:56:26 2018-03-15
razgen
23:53:48 2018-03-15
razgen
23:48:13 2018-03-15
orw_mikle
22:22:29 2018-03-15
В...а
22:15:26 2018-03-15
Dvakota
22:14:40 2018-03-15
Геральт
22:06:26 2018-03-15
НинаК
21:32:32 2018-03-15
Любитель пляжного футбола
21:14:52 2018-03-15
ek
21:14:35 2018-03-15
kva-kva
20:57:00 2018-03-15
Marsn77
20:57:00 2018-03-15
Сэм
20:36:38 2018-03-15
Самуил Христианин
20:31:07 2018-03-15
Anton_S
20:21:57 2018-03-15
B0RIS
20:04:14 2018-03-15
zsergey
19:11:39 2018-03-15
Елена
18:58:09 2018-03-15
Дмитрий
18:24:41 2018-03-15
Lia00
18:21:52 2018-03-15
sanek-xf
18:12:58 2018-03-15
Natalya_2017
18:04:40 2018-03-15
vla_va
17:06:40 2018-03-15
mk.insta
16:56:38 2018-03-15
Alexander
16:45:19 2018-03-15
GermanS
16:34:44 2018-03-15
La folle
16:17:36 2018-03-15
Людмила
16:15:31 2018-03-15
в проекте используется пропорциональный (не моноширинный) шрифт.
Альфа
15:57:40 2018-03-15
Шалтай Александр Болтай
15:22:17 2018-03-15
— Да я и сам пока могу поднять!
Biggurza
15:15:57 2018-03-15
Biggurza
15:14:02 2018-03-15
Alexander
15:09:39 2018-03-15
Раш КХ
15:02:11 2018-03-15
GermanS
15:01:10 2018-03-15
например
01 = 2^0
10 = 2^1
11 = 2^1 + 2^0
1 000 000 = 2^6
Biggurza
14:57:24 2018-03-15
GermanS
14:50:01 2018-03-15
@Alexander все таки прав
Biggurza
14:45:10 2018-03-15
Татьяна
14:01:44 2018-03-15