The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

12.01.2018 23:04  Уязвимость в Glibc, позволяющая поднять привилегии в системе

В стандартной библиотеке Glibc выявлена уязвимость (CVE-2018-1000001), вызванная переполнением через нижнюю границу буфера в функции realpath(), проявляющимся при возврате относительного пути системным вызовом getcwd(). Изначально ядро Linux возвращало в getcwd() только абсолютные пути, но затем в ядре 2.6.36 поведение было изменено, но функции Glibc не были адаптированы на обработку относительных путей.

Относительные пути возвращаются при достаточно редкой ситуации, когда процесс не меняет текущую директорию после выполнения вызова chroot и путь к корню оказывается вне области текущего дерева каталогов. Начиная с ядра Linux 2.6.36 начальная часть такого пути заменяется на строку "(unreachable)". Непривилегированный пользователь может добиться аналогичного эффекта сменив текущую директорию процесса на путь в другом пространстве имён. Атакующий может создать каталог "(unreachable)" и использовать его как начало относительного пути.

При обработке символической ссылки с относительными путями (/../) realpath() использует getcwd() для получения информации о текущем каталоге для нормализации ссылки. Так как вызов getcwd() может вернуть не полный путь, а обрезанный с заменой части на "(unreachable)", а realpath() на подобную замену не рассчитан и пытается найти "/" корня пути, при разборе подобного пути он не остановится на начале "(unreachable)", а продолжит разбор памяти. Суть нормализации в удалении лишних элементов ("/./", "/../" и "//") в пути, поэтому буфер для записи итогового пути выделяется на основе размера имеющегося пути, без расчёта, что разбор продолжится за пределами "(unreachable)". Так как заполнение осуществляется в обратном порядке, то при обработке символической ссылки с комбинацией переходов "/../" можно добиться выхода указателя в нужную область памяти до начала выделенного буфера и содержимое части пути будет записано в область перед буфером.

Выявившие уязвимость исследователи подготовили рабочий прототип эксплоита, позволяющий поднять свои привилегии до прав root через манипуляцию с исполняемыми файлами с флагом suid root, в которых вызывается функция realpath(). В эксплоите используется утилита /bin/umount, которая вызывает realpath() в коде инициализации локали, выполняемом до сброса привилегий. Для инициирования появления относительного пути в эксплоите используется пространство имён идентификаторов пользователя, т.е. атака возможна только при активации поддержки "user namespaces" (sysctl kernel.unprivileged_userns_clone=1). Работа эксплоита продемонстрирована в Debian Stretch на системе с архитектурой amd64.

Обновление пакетов с устранением уязвимости уже выпущено для SUSE и openSUSE. Исправление пока недоступно для Ubuntu, Debian, Fedora и RHEL.

  1. Главная ссылка к новости (http://seclists.org/oss-sec/20...)
  2. OpenNews: Уязвимость в Glibc ld.so, позволяющая поднять свои привилегии в системе
  3. OpenNews: Удалённо эксплуатируемая уязвимость в Glibc, охватывающая большинство сетевых приложений в Linux
  4. OpenNews: Уязвимость GHOST в Glibc может проявляться в web-приложениях на языке PHP
  5. OpenNews: Критическая уязвимость в Glibc, которая может привести к удалённому выполнению кода в Linux
  6. OpenNews: В Glibc обнаружена серьезная уязвимость
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: glibc, security
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 23:39, 12/01/2018 [ответить] [смотреть все]
  • +13 +/
    Мне нравится этот красивый номер уязвимости.
     
     
  • 2.3, Багтрекер, 23:54, 12/01/2018 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    CVE-2018-1000000 топчик
     
     
  • 3.49, pavlinux, 17:09, 13/01/2018 [^] [ответить] [смотреть все]
  • +2 +/
    Да что ж такое-то, Meltdown Spectre не работают, тут опять подстава code ... весь текст скрыт [показать]
     
     
  • 4.75, Аноним, 23:36, 16/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Подстава случилась тогда когда придумали относительные пути, со всякими и про... весь текст скрыт [показать]
     
  • 1.2, Аноним, 23:45, 12/01/2018 [ответить] [смотреть все]  
  • +4 +/
    > user namespaces

    Ну почему каждая третья уязвимость связана с *этим*?

     
     
  • 2.10, ы, 01:26, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    С напряжением ждём уязвимости /dev/null
     
     
  • 3.33, ХипстерСпам, 12:32, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    При обращении к /dev/null можно задудосить и без того багнутый Meltdown камень
     
  • 2.13, EHLO, 02:29, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    Хайпонули немножечко, бывает Отключил, если вдруг не отключено по дефолту и заб... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, backbone, 08:46, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Первый раз отключил в августе 12-го года, что за уязвимость была не вспомню, но... весь текст скрыт [показать]
     
     
  • 4.53, Аноним, 19:04, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Ну и как, контейнеры работают?
     
     
  • 5.55, backbone, 19:15, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    > Ну и как, контейнеры работают?

    Нет, а должны?

     
  • 3.25, Andrey Mitrofanov, 09:55, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    Они шевелятся, ты не понял Они готовят user namespaces на царствование Когда ... весь текст скрыт [показать]
     
  • 1.6, минонА, 00:13, 13/01/2018 [ответить] [смотреть все]  
  • +1 +/
    Всем срочно переходить на musl?
     
     
  • 2.31, Аноним, 12:23, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    там пользователей из ад нету, как мы будем деньги микрософту платить?
     
  • 2.54, Аноним, 19:09, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Можно подумать, в прочих либцах совсем нет уязвимостей.
     
  • 2.76, Аноним, 23:48, 16/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    В нем тоже CVE случаются Переходить надо на другой глобус, где програмисты не о... весь текст скрыт [показать] [показать ветку]
     
  • 1.8, ыы, 00:47, 13/01/2018 [ответить] [смотреть все]  
  • +2 +/
    полный опасносте мирок стандартных библиотек :)
     
     
  • 2.14, Анонимчик, 03:04, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • –4 +/
    Полон опасностей Си-мирок то буфера переполнятся, то стеки слетают, то длину ст... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, Crazy Alex, 03:36, 13/01/2018 [^] [ответить] [смотреть все]  
  • +17 +/
    Правда, тупило бы непредсказуемо, память жрало и имело бы свои классы ошибок -- на managed языках как-то быстро расслабляются, с управлением ресурсами в особенности, забывая, что ресурсы - это далеко не только память.
     
     
  • 4.29, iZEN, 11:13, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Для Apple Lisa и Apple IIe большая часть программ написана на Pascal Apple Obje... весь текст скрыт [показать]
     
     
  • 5.34, h31, 12:38, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    Всё переврали Там речь шла про скорость отклика в консольке В Apple IIe она бы... весь текст скрыт [показать]
     
     
  • 6.37, Адекват, 14:52, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    Это все галимая теория, в реальных условиях, у пользователя на его смартфоне за ... весь текст скрыт [показать]
     
  • 5.56, Аноним, 19:17, 13/01/2018 [^] [ответить] [смотреть все]  
  • +2 +/
    Пчёлы iZEN против мёда ... весь текст скрыт [показать]
     
     
  • 6.60, iZEN, 20:54, 13/01/2018 [^] [ответить] [смотреть все]  
  • –5 +/
    В Android нет Java Как язык высокого уровня используется, а как бинарный код - ... весь текст скрыт [показать]
     
     
  • 7.73, _, 17:22, 16/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Ты Мастер разбирающийся в сортах(Tm)!
    Остальным пох, жаба она и в дройдах - жаба! :-р
    И она такое же Г как и на пизюках.
    Не - ну очередные "склад-магазины" клепать - самое оно! Хуже жабы - лучше нет! Но системное что то на ней лепить ... надо быть iZEN-ом на всю голову :-Р
     
     
  • 8.74, iZEN, 21:03, 16/01/2018 [^] [ответить] [смотреть все]  
  • +/
    > Ты Мастер разбирающийся в сортах(Tm)!
    > Остальным пох, жаба она и в дройдах - жаба! :-р
    > И она такое же Г как и на пизюках.
    > Не - ну очередные "склад-магазины" клепать - самое оно! Хуже жабы -
    > лучше нет! Но системное что то на ней лепить ... надо
    > быть iZEN-ом на всю голову :-Р

    А вот интересно, как вы разделяете, Oracle Access Manager системное или несистемное ПО?


     
  • 7.78, Аноним, 18:05, 17/01/2018 [^] [ответить] [смотреть все]     [к модератору]  
  • +/
    Java может и нет А тормозное памятежручее г вно - есть Так какая разница P S ... весь текст скрыт [показать]
     
     
  • 8.79, iZEN, 18:34, 17/01/2018 [^] [ответить] [смотреть все]    [к модератору]  
  • +/
    > Java может и нет. А тормозное памятежручее г@вно - есть. Так какая
    > разница?
    > P.S. Если что-то пишется - как жаба,тормозит - как жаба, память жрет
    > - как жаба и глючит - как жаба, то это жаба
    > и есть!

    JVM написана на C++. Ничего уж тут не поделаешь.


     
  • 5.63, Led, 22:51, 13/01/2018 [^] [ответить] [смотреть все]  
  • +5 +/
    Выводы Java - г-но ... весь текст скрыт [показать]
     
  • 4.35, RobotsCantPoop, 14:37, 13/01/2018 [^] [ответить] [смотреть все]  
  • –2 +/
    Ну да, а то на C CPP софт не тупит, не течёт, сжирая гигабайты, и не падает Ну ... весь текст скрыт [показать]
     
  • 4.41, RobotsCantPoop, 15:14, 13/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    Ну да, а в C CPP не расслабляются, прям так всё качественно контролируют, что со... весь текст скрыт [показать]
     
  • 4.67, RobotsCantPoop, 13:26, 14/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    Хипстота не в курсе существования нормальных языков и концептов Неудивительно ... весь текст скрыт [показать]
     
     
  • 5.70, щи, 10:37, 15/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    Фантастика на уровне "АйФак 10". В вашей реальности хипстота на C пишет.
     
  • 3.17, Аноним, 06:32, 13/01/2018 [^] [ответить] [смотреть все]  
  • +3 +/
    Ты внимательно читал описание бага Ну допустим это был бы С и getcwd возвра... весь текст скрыт [показать]
     
     
  • 4.18, Анонимчик, 07:18, 13/01/2018 [^] [ответить] [смотреть все]  
  • –2 +/
    Это слишком сложно для меня Я пишу на питоне совсем не что умен, а потому что п... весь текст скрыт [показать]
     
     
  • 5.26, QuAzI, 10:06, 13/01/2018 [^] [ответить] [смотреть все]  
  • +8 +/
    Ты хотел сказать, что ещё не дорос до проектов, на которых нужны настолько сложные вещи, что и переполнение буфера будет вылезать?
     
  • 5.32, Hellraiser, 12:27, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    наводящий вопрос - а на чём написан интерпретатор байт-кода питона?
     
     
  • 6.39, iZEN, 15:07, 13/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    А причём тут питон Да хоть на Java - jython, например - это не изменит его инте... весь текст скрыт [показать]
     
     
  • 7.61, Вареник, 21:34, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    jython не на Java язык программирования , а на байткоде, исполняемом JIT ядром ... весь текст скрыт [показать]
     
  • 7.77, Аноним, 00:43, 17/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Да какая разница Валять дурака на левых входных данных можно и на питоне и на я... весь текст скрыт [показать]
     
  • 5.38, Адекват, 14:54, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    А как вы решаете проблему зоопарка версий его величества питона , а то как не с... весь текст скрыт [показать]
     
     
  • 6.40, другой Аноним, 15:07, 13/01/2018 [^] [ответить] [смотреть все]  
  • +2 +/
    Две версии это да, дичайший зоопарк Очевидно, тоже гадает и правит заголовок фа... весь текст скрыт [показать]
     
  • 6.44, Аноним, 15:53, 13/01/2018 [^] [ответить] [смотреть все]  
  • –2 +/
    Пользуюсь 3 6 и игнорирую код, несовместимый с ней Ну примерно, как при сборке ... весь текст скрыт [показать]
     
     
  • 7.48, Адекват, 16:44, 13/01/2018 [^] [ответить] [смотреть все]  
  • –3 +/
    Поставлю вопрос по другому, вы написали платную программу, но выложили в открыты... весь текст скрыт [показать]
     
     
  • 8.50, Sirob, 17:17, 13/01/2018 [^] [ответить] [смотреть все]  
  • +1 +/
    Ты как раз описал SublimeText К слову, нужная версия Питона там идёт в поставке... весь текст скрыт [показать]
     
  • 8.57, Аноним, 19:27, 13/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    Так пиши на третьей версии Про вторую забывать уже пора, поддержка скоро законч... весь текст скрыт [показать]
     
  • 8.59, другой Аноним, 20:38, 13/01/2018 [^] [ответить] [смотреть все]  
  • +3 +/
    Фантазер ... весь текст скрыт [показать]
     
  • 5.62, Led, 22:46, 13/01/2018 [^] [ответить] [смотреть все]  
  • +2 +/
    > Я пишу на питоне совсем не что умен

    Как раз именно поэтому.

     
  • 4.22, angra, 08:13, 13/01/2018 [^] [ответить] [смотреть все]  
  • +3 +/
    С это не memory managed язык В нем доступна прямая адресная арфиметика и возм... весь текст скрыт [показать]
     
     
  • 5.28, Аноним, 10:57, 13/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    То, что она там доступна не означает, что ей обязательно нужно пользоваться В C... весь текст скрыт [показать]
     
     
  • 6.30, angra, 11:26, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Ну осталось глянуть как именно реализован оператор в std string и что произо... весь текст скрыт [показать]
     
     
  • 7.43, Crazy Alex, 15:25, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Так и есть - в соответствии с принципом платить только за что, что используешь ... весь текст скрыт [показать]
     
  • 5.42, Crazy Alex, 15:14, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Возможна, и это хорошо - есть случаи, когда это действительно нужно Но в повсед... весь текст скрыт [показать]
     
  • 1.9, Аноним, 00:49, 13/01/2018 [ответить] [смотреть все]  
  • +1 +/
    Кто-то что-то понял из несвязнного набора слов в статье?
     
     
  • 2.20, angra, 07:49, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +7 +/
    Мне пришлось таки сходить по ссылке и почитать вполне связный набор слов в английской версии. Далее изложение(не дословный перевод) недостающей части:

    Если realpath() скормить символическую ссылку, которая начинается с некоторого количества "../", то для превращения ее в абсолютный путь он вызывает getcwd, после чего начинает идти по слешам от _конца_ буфера и ожидает, что строка, возвращенная getcwd, начинается с "/". Как следствие из-за отсутствия одной из нужных проверок в случае с "(unreachable)" происходит выход за нижнюю границу буфера до следующего слеша в памяти и перезапись этого участка оставшейся частью симлинки.

    Ну а дальше уже идет черная магия по подготовке памяти и симлинок для эксплуатации этой перезаписи.

     
  • 1.19, Аноним, 07:40, 13/01/2018 [ответить] [смотреть все]  
  • –2 +/
    Опять какое-то особое ядро надо иметь Особые настройки Рут ... весь текст скрыт [показать]
     
     
  • 2.21, angra, 07:58, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Нет, всего лишь внимательно читать Для инициирования появления относительного ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.24, Аноним, 08:54, 13/01/2018 [^] [ответить] [смотреть все]  
  • –1 +/
    Я внимательно прочитал sysctl управляет настройками в sys, там этой настройки ... весь текст скрыт [показать]
     
     
  • 4.27, angra, 10:55, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Я вообще-то про то, что в статье сказано о необходимости включения этого механиз... весь текст скрыт [показать]
     
  • 4.52, EHLO, 18:48, 13/01/2018 [^] [ответить] [смотреть все]  
  • +/
    в proc sys А так логика верная ... весь текст скрыт [показать]
     
     
  • 5.69, EHLO, 23:58, 14/01/2018 [^] [ответить] [смотреть все]  
  • +/
    Уточню, потому что вдруг кто-то читает Верная логика относится к соответствию... весь текст скрыт [показать]
     
  • 1.45, Аноним, 16:06, 13/01/2018 [ответить] [смотреть все]  
  • –2 +/
    Странное дело в новости про NPM было цело состязание злословия и конкурс моделе... весь текст скрыт [показать]
     
     
  • 2.46, Борщдрайвен бигдата, 16:32, 13/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Кому что болит, о том и говорит. Тут, как видно, болит очень немногим, увы.
     
  • 1.64, Аноним, 01:20, 14/01/2018 [ответить] [смотреть все]  
  • –1 +/
    по ходу только переписывание glibc на rust спасёт ситуацию
     
     
  • 2.66, RobotsCantPoop, 13:21, 14/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • –2 +/
    Тотальное выпиливание C/CPP спасёт от 90% проблем с безопасностью и.
     
  • 2.71, Аноним, 18:41, 15/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • –1 +/
    Как оно спасёт Все имеющиеся там функции должны делать ровно то, что они делают... весь текст скрыт [показать] [показать ветку]
     
  • 2.72, Michael Shigorin, 14:29, 16/01/2018 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    > по ходу только переписывание glibc на rust спасёт ситуацию

    Вы не понимаете, что значат буковки "glibc".

     
  • 1.68, Аноним, 17:15, 14/01/2018 [ответить] [смотреть все]  
  • –1 +/
    Еще одна уязвимость, связанная с suid? Ну, дело не новое
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor