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 (ok), 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 (ok), 08:46, 13/01/2018 [^] [ответить]    [к модератору]  
  • +/
    Первый раз отключил в августе '12-го года, что за уязвимость была не вспомню, но с тех пор # CONFIG_USER_NS is not set
     
     
  • 4.53, Аноним (-), 19:04, 13/01/2018 [^] [ответить]    [к модератору]  
  • +/
    Ну и как, контейнеры работают?
     
     
  • 5.55, backbone (ok), 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 [^] [ответить]    [к модератору]  
  • +/
    > Всем срочно переходить на musl?

    В нем тоже 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 (ok), 11:13, 13/01/2018 [^] [ответить]     [к модератору]  
  • +/
    Для Apple Lisa и Apple IIe большая часть программ написана на Pascal Apple Obje... весь текст скрыт [показать]
     
     
  • 5.34, h31 (ok), 12:38, 13/01/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Всё переврали Там речь шла про скорость отклика в консольке В Apple IIe она бы... весь текст скрыт [показать]
     
     
  • 6.37, Адекват (ok), 14:52, 13/01/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Это все галимая теория, в реальных условиях, у пользователя на его смартфоне за ... весь текст скрыт [показать]
     
  • 5.56, Аноним (-), 19:17, 13/01/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    >,Java - скорость ответной реакции от 250 до 800 миллисекунд

    Пчёлы (iZEN) против мёда! ;)

     
     
  • 6.60, iZEN (ok), 20:54, 13/01/2018 [^] [ответить]     [к модератору]  
  • –5 +/
    В Android нет Java Как язык высокого уровня используется, а как бинарный код - ... весь текст скрыт [показать]
     
     
  • 7.73, _ (??), 17:22, 16/01/2018 [^] [ответить]     [к модератору]  
  • +/
    Ты Мастер разбирающийся в сортах Tm Остальным пох, жаба она и в дройдах - жаб... весь текст скрыт [показать]
     
     
  • 8.74, iZEN (ok), 21:03, 16/01/2018 [^] [ответить]     [к модератору]  
  • +/
    А вот интересно, как вы разделяете, Oracle Access Manager системное или несистем... весь текст скрыт [показать]
     
  • 7.78, Аноним (-), 18:05, 17/01/2018 [^] [ответить]     [к модератору]  
  • +/
    Java может и нет А тормозное памятежручее г вно - есть Так какая разница P S ... весь текст скрыт [показать]
     
     
  • 8.79, iZEN (ok), 18:34, 17/01/2018 [^] [ответить]     [к модератору]  
  • +/
    JVM написана на C Ничего уж тут не поделаешь ... весь текст скрыт [показать]
     
  • 5.63, Led (ok), 22:51, 13/01/2018 [^] [ответить]    [к модератору]  
  • +5 +/
    > Pascal
    > скорость ответной реакции системы на внешнее воздействие - 30-60 миллисекунд.
    > Java - скорость ответной реакции от 250 до 800 миллисекунд. Делайте выводы.

    Выводы: 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 (ok), 10:06, 13/01/2018 [^] [ответить]    [к модератору]  
  • +8 +/
    Ты хотел сказать, что ещё не дорос до проектов, на которых нужны настолько сложные вещи, что и переполнение буфера будет вылезать?
     
  • 5.32, Hellraiser (??), 12:27, 13/01/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    наводящий вопрос - а на чём написан интерпретатор байт-кода питона?
     
     
  • 6.39, iZEN (ok), 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, Адекват (ok), 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, Адекват (ok), 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 +/
    > К слову сказать, написнный на СИ бинарик, особенно под винду заработает 100%,

    Фантазер.

     
  • 5.62, Led (ok), 22:46, 13/01/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > Я пишу на питоне совсем не что умен

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

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

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

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

     
  • 1.19, Аноним (-), 07:40, 13/01/2018 [ответить] [показать ветку] [···]     [к модератору]  
  • –2 +/
    Опять какое-то особое ядро надо иметь Особые настройки Рут ... весь текст скрыт [показать]
     
     
  • 2.21, angra (ok), 07:58, 13/01/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    Нет, всего лишь внимательно читать Для инициирования появления относительного ... весь текст скрыт [показать]
     
     
  • 3.24, Аноним (-), 08:54, 13/01/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Я внимательно прочитал. sysctl управляет настройками в /sys, там этой настройки нет, следовательно и sysctl работать не будет.
     
     
  • 4.27, angra (ok), 10:55, 13/01/2018 [^] [ответить]    [к модератору]  
  • +/
    Я вообще-то про то, что в статье сказано о необходимости включения этого механизма для работы эксплоита. То есть сначала рут его должен включить, а потом уже его сможет эксплуатировать обычный пользователь.
    Разумеется ядро можно собрать, выкинув userns напрочь и тогда возможности включить его не будет.
    Конкретно в debian в штатном ядре userns присутствует, причем черти с какой версии.
     
  • 4.52, EHLO (?), 18:48, 13/01/2018 [^] [ответить]    [к модератору]  
  • +/
    > Я внимательно прочитал. sysctl управляет настройками в /sys, там этой настройки нет,
    > следовательно и sysctl работать не будет.

    в /proc/sys. А так логика верная =)

     
     
  • 5.69, EHLO (?), 23:58, 14/01/2018 [^] [ответить]    [к модератору]  
  • +/
    >> Я внимательно прочитал. sysctl управляет настройками в /sys, там этой настройки нет,
    >> следовательно и sysctl работать не будет.
    > в /proc/sys. А так логика верная =)

    Уточню, потому что вдруг кто-то читает. "Верная логика" относится к соответствию sysctl и /proc/sys, а не к тому что отсутствие параметра "kernel.unprivileged_userns_clone" свидетельствует о невозможности эксплуатировать сабж.

    kernel.unprivileged_userns_clone ― специфичный для ядра Дебиана параметр и его включение позволяет обычному юзеру в Дебианоподобных дистрах создавать пространства имён и соответственно облегчает поднятие привилегий. Отключение соответственно усложняет, но не есть и другие способы, см. ссылку на оригинал если что.

    В других дистрибутивах свои особенности ограничения(или отсутствия ограничений) этой инновационщины, так что YMMV.

     
  • 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 (ok), 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