The OpenNET Project / Index page

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

Уязвимость в ld.so OpenBSD

11.12.2019 21:55

Динамический загрузчик ld.so, входящий в состав OpenBSD, при определённых условиях может для SUID/SGID-приложения оставить переменную окружения LD_LIBRARY_PATH и таким образом позволить загрузить сторонний код в контексте процесса, выполняемого с повышенными привилегиями. Патчи с исправлением уязвимости доступны для релизов 6.5 и 6.6. Бинарные патчи (syspatch) для платформ amd64, i386 и arm64 уже запущены в производство и должны быть доступны для загрузки к моменту публикации данной новости.

Суть проблемы: в ходе работы ld.so сначала извлекает из окружения значение переменной LD_LIBRARY_PATH, с помощью функции _dl_split_path() превращает его в массив строк — путей к каталогам. Если позднее выясняется, что текущий процесс запущен SUID/SGID-приложением, то созданный массив и, собственно, переменная LD_LIBRARY_PATH очищаются. При этом, если в ходе работы _dl_split_path() столкнётся с нехваткой памяти (что трудно из-за наличия явного ограничения на размер переменных окружения в 256 кБайт, но теоретически возможно), то переменная _dl_libpath получит значение NULL, и последующая проверка значения этой переменной заставит пропустить вызов _dl_unsetenv("LD_LIBRARY_PATH").

Уязвимость найдена специалистами Qualys, так же, как и несколько ранее раскрытых проблем. Выявившие уязвимость исследователи безопасности отметили оперативность решения проблемы: патч был подготовлен, и обновления выпущены в течение трёх часов после получения уведомления проектом OpenBSD.

Дополнение: Проблеме присвоен номер CVE-2019-19726. В списке рассылки oss-security сделан официальный анонс, включающий прототип эксплоита, работающий в OpenBSD 6.6, 6.5, 6.2 и 6.1 на архитектурах amd64 и i386 (эксплоит может быть адаптирован и для других архитектур). Проблема эксплуатируема в установке по умолчанию и позволяет непривилегированному локальному пользователю выполнить код с правами root через подстановку библиотеки при запуске suid-утилит chpass или passwd. Для создания необходимых для эксплуатации условий нехватки памяти используется установка ограничения RLIMIT_DATA через setrlimit.

  1. Главная ссылка к новости (https://ftp.openbsd.org/pub/Op...)
  2. OpenNews: Уязвимость в Glibc ld.so, позволяющая поднять свои привилегии в системе
  3. OpenNews: Планы по усилению механизма защиты W^X в OpenBSD
  4. OpenNews: Для OpenBSD развивается новая git-совместимая система контроля версий Got
  5. OpenNews: Выпуск OpenBSD 6.6
  6. OpenNews: Уязвимости в OpenBSD, позволяющие повысить привилегии и обойти аутентификацию в smtpd, ldapd и radiusd
Автор новости: PereresusNeVlezaetBuggy
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52012-openbsd
Ключевые слова: openbsd
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (48) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Грусть (?), 22:15, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Вот, пытливые умы :)

    47645

     
     
  • 2.45, Аноним (-), 03:13, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что-то OpenBSD в последнее время везет на баги. При том - довольно детские. Вгруз своих либ привилегированым процессам - баян похлеще GET /site/../../../etc/passwd.
     
     
  • 3.47, PereresusNeVlezaetBuggy (ok), 19:10, 14/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что значит «везёт на баги»? Для того аудит и проводится, чтобы их находить.

    Если вы прочитаете внимательно описание уязвимости, то поймёте, что простое выставление LD_LIBRARY_PATH не позволяет «вгрузить свою либу», а возникает в ситуации, которая в нормальных условиях практически нереальна. Не удивительно, что проблему нашли только в результате аудита, а не прогона тестов.

     
     
  • 4.48, Аноним (-), 00:11, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Аудит то проводится, но судя по его результатам - OpenBSD до этого момента был всего лишь неуловимым Джо. Недавно рядом была вообще совершенно детская проблема с вгрузкой либы привилегированному процессу. Даже попсовый Linux додумался такое зарубить на корню, много лет назад.
     
     
  • 5.50, PereresusNeVlezaetBuggy (ok), 04:31, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Аудит то проводится, но судя по его результатам - OpenBSD до этого
    > момента был всего лишь неуловимым Джо. Недавно рядом была вообще совершенно
    > детская проблема с вгрузкой либы привилегированному процессу. Даже попсовый Linux додумался
    > такое зарубить на корню, много лет назад.

    OpenBSD это рубил тоже много лет. Потом, в 2003 был сделан один не очень аккуратный коммит, который позволил при выполнении определённых условий обойти эту защиту. В том же Linux (точнее, ld.so) были проблемы в той же области месте, хотя и другого рода, ссылка на новость об этом была любезно приложена редактором сайта. Но вы ж читать и восприниматься реальную информацию не хотите, для вас всё устроено просто и очевидно. :(

     

  • 1.2, Аноним (2), 22:16, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Опенок уже не торт?!
     
     
  • 2.5, PereresusNeVlezaetBuggy (ok), 22:35, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +15 +/
    Наоборот, аудит за аудитом.
     
     
  • 3.14, Аноним (14), 23:20, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Где можно найти новости про этот аудит?
     
     
  • 4.19, PereresusNeVlezaetBuggy (ok), 23:46, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +9 +/
    В блоге Qualys: https://blog.qualys.com/ .

    Про данную уязвимость пока что официального анонса от них не было, но был про пачку недавно: https://www.opennet.dev/opennews/art.shtml?num=51979 .

    Думаю, когда (если) они закончат, то сделают сводный пресс-релиз по этому поводу. Пока что же ваш покорный слуга и прочие рабы клавиатуры делают своё маленькое дело — оперативно уведомляют заинтересованную общественность, чтобы всем спокойнее спалось. :)

     
     
  • 5.20, Anonymoustus (ok), 00:16, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Общественность признательна.
     
  • 5.36, Аноним (36), 14:40, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Что определяет начало проведение аудита?
    Они это делают по расписанию или есть какие иные критерии?
     
     
  • 6.43, Аноним (43), 23:48, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это делает Qualys, по своей инициативе. Их профит — репутация и авторитет («мы умеем находить баги»). Так что внешний аудит — от случая к случаю... Хотя, может, когда-нибудь OpenBSD Foundation займётся спонсированием в этом плане. :)

    Внутренний же аудит проводится по мере появления новых инструментов, либо нахождения новых предположительно типовых проблем; текущий случай, насколько понимаю, к таковым не относится... хотя намерение проверить другие интересные места в ld.so лично у меня руки чешутся.

     

  • 1.3, Аноним (3), 22:19, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Тео стареет однако.
     
     
  • 2.15, Аноним (15), 23:22, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Этот код там с 2013 года.
     

  • 1.4, Аноним (4), 22:23, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    — Ну дык, Вовочка! Про кого мы все время песенки поем, кого я вам на картинке показывала?

    Вовочка застывает в священном экстазе и изрекает:

    — Так вот ты какой, безопасный BSD...

     
     
  • 2.6, PereresusNeVlezaetBuggy (ok), 22:36, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Конечно, ведь по-настоящему безопасный — это тот, про кого никто не знает, что он опасный. ;)
     
  • 2.8, Аноним (8), 22:42, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не, я конечно всё понимаю, но у мсов абсолютный эпик за размытыми формулировками ченджлога прячется.
     
  • 2.9, PereresusNeVlezaetBuggy (ok), 22:46, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Где вы увидели слово «critical» в данном случае? Я пока что живого эксплоита не видел.

    Qualys проводит аудит кодовой базы OpenBSD, как до этого делали другие люди не раз. Естественно, при этом повышается количество багрепортов. А там, где аудит не проводится, багрепортов тоже нет, логично.

    UPDATE: Выпущен официальный анонс, PoC таки есть и уверенно работает (проверил на -CURRENT).

     
     
  • 3.18, Аноним (18), 23:41, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вы зря пытаетесь что-то отвечать на чисто троллический коммент.

    Естественно, что на опеннете нет новостей про уязвимости выни. Никто в здравом уме просто так по щелчку не перейдет c бсд на вынь, если уж и припекет, то скорее на линукс.

    Человек просто пытается создать видимость, что кто-то там переходит на вин, хотя вокруг происходит ровно наоборот.

    Вынь это поддержка легаси и как только появляется возможность от нее избавиться, то тут же это и делается и на серверах в первую очередь.

    Завтра я иду к своему гендиректору менять 100500 инстансов выни на линь или бсд, ибо как мы видим, они до сих пор не залатали свой RDP.

    https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-07

     
     
  • 4.22, Иосиф (?), 01:24, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Другие уже давно залатали https://0patch.com/patches.html
     
  • 4.28, Анын (ok), 02:10, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Так по ссылке же заплатки, что не так?
    На XP и Vista даже выпустили https://support.microsoft.com/en-us/help/4500705/customer-guidance-for-cve-201
     
     
  • 5.32, Аноним (36), 10:40, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да все нормально, то был сарказм. Я не пользуюсь продуктами мс.

    RDP уже сколько лет и до сих пор падают такие шляпы, как и впрочем другие немалые дыры. И ввиду того, что разработка ведется за закрытими дверями вполне возможно, что мы видим вершину айсберга. Это к вопросу "о целесообразности перехода на вынь".

    Также остается открытым вопрос о том, если очередной апдейт вам покажет потом синий экран смерти. (Да, они конечно все тестируют, но мы то знаем что окончательное тестирование происходит на конечном железе). Так как потом чинить бинарный блоб? Можно ли вообще рядом ставить прозрачность обновления линь и бсд систем с бинарной помойкой?

     
     
  • 6.34, Анын (ok), 12:01, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пффф.. не защищаю "вынь", но и "линь" знаете ли.. Один Heartbleed чего стоит.
    А поводу апдейта и синих экранов - линуксов "упавших" после апдейта не видели?
     
     
  • 7.35, Аноним (36), 14:35, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    По правде говоря не видел ни разу, чтобы линукс намертво умирал после апдейта. Тем более большинство апдейтов не связаны с ядром, ну и что важно - ты видишь что апдейт за собой потянет и какие могут быть последствия. Сбои были, но всегда находилось решение, тк понятно как линь работает и система приспособлена для ручного вмешательства.

    Я тоже ничего не защищаю, также ни за и ни против. Это всего лишь инструменты. Просто предпочитаю использовать то, что более поддается контролю.

     
     
  • 8.42, Аноним (43), 23:36, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вы не видели, а я чинил Иногда проще было переустановить, иногда достаточно был... текст свёрнут, показать
     
  • 7.49, Аноним (-), 00:14, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Пффф.. не защищаю "вынь", но и "линь" знаете ли.. Один Heartbleed чего стоит.

    Интересно каким боком heartbleed к линю? Openssl вообще сторонняя библиотека, используется всеми кому не лень, и под винь, и под линь, и под много чего еще, типа макосей, бсд и даже неверное каких-нибудь гаек и реактосов.

     
  • 4.29, Ген.дир (?), 04:24, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Смелое решение, анон. Но новую жизнь лучше начинать не с вечера, а с утра!
     
     
  • 5.44, Сергей (??), 00:20, 13/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если подумать, то над нашей страной никогда не заходит солнце - когда в Каленинграде вечер, на Сахалине утро. Посему, неведая о географическом положении опонента нестоит думать о том, что он в соседнем доме :)
     
  • 2.11, Аноним (14), 23:10, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Настрой автообновление в OpenBSD.
     
  • 2.13, Аноним (13), 23:19, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но "баги", которые по просьбе NSA, она обновлять не будет.
     
     
  • 3.17, Аноним (14), 23:36, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Не баг, а фича. И вообще, мы вам код не дадим.
     

  • 1.12, YetAnotherOnanym (ok), 23:17, 11/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если ты будешь ковырять в правой ноздре указательным пальцем левой руки, а правую руку перекинешь через голову и будешь чесать мизинцем в левом ухе, стоя на одной ноге, а вторую вытянув назад, то, если автобус резко затормозит, ты можешь потерять равновесие и упасть.
     
     
  • 2.16, Аноним (8), 23:30, 11/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Моя любимая поза, как же так! Звучит зело опасно, падение будет очень болезненным!

    А такие проблемы легко и непринуждённо эксплуатируются, никто и не ждёт что пользователь сам с ними столкнётся.

     
  • 2.33, www2 (??), 11:36, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Проблема в том, что в случае с OpenBSD от твоего поведения ничего не зависит. Если в твоей системе есть непривилегированный пользователи, они могут воспользоваться уязвимостью, независимо от того, чешешь ты ухо мизинцем или нет.
     

  • 1.21, Аноним (21), 01:21, 12/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Кстати, а в Linux использование LD_PRELOAD и LD_LIBRARY_PATH уже полностью  безопасно? Как-то много пугалок было. А то ответ на вопрос Is there any way to block LD_PRELOAD and LD_LIBRARY_PATH неюзабелен. Как их просто отключить?
     
     
  • 2.25, PereresusNeVlezaetBuggy (ok), 01:58, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Боюсь, что их отключение может оказаться чревато самыми неожиданными поломками привычного софта. Так что на это вряд ли кто пойдёт, и единственный способ отключить эти механизмы я вижу в правке исходников ld.so. :-\ Благо что найти в коде данные строчки и аккуратно их поправить должно быть под силу даже начинающему наСильнику.

    Ну а насчёт «уже полностью безопасно» — гарантию даст только страховой полис. :)

     
  • 2.38, Аноним (38), 16:07, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Кстати, а в Linux использование LD_PRELOAD и LD_LIBRARY_PATH уже полностью  безопасно? Как-то много пугалок было. А то ответ на вопрос Is there any way to block LD_PRELOAD and LD_LIBRARY_PATH неюзабелен. Как их просто отключить?

    Есть вот такой патчик на glibc, вычищающий переменные окружения, например, для suid-ных процессов (но не только для них), но почему-то его применяют только в Альт и Owl:

    http://git.altlinux.org/gears/g/glibc.git?p=glibc.git;a=commitdiff;h=69a1f59f

     
     
  • 3.40, Аноним (40), 17:53, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пасиба! Интересно...
     

  • 1.23, Дон Ягон (ok), 01:46, 12/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    https://www.openwall.com/lists/oss-security/2019/12/11/9
    Подробное описание уязвимости
     
     
  • 2.24, PereresusNeVlezaetBuggy (ok), 01:53, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Уже отправил корректировку новости. :) Там ещё и рабочий PoC приложен. Что-то я сначала не сообразил, что объём доступной памяти можно искусственно точно ограничить через setrlimit()...
     

  • 1.26, Аноним (26), 02:03, 12/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –9 +/
    Only two remote holes in the default install, in a heck of a long time!

    Сказки на ночь

     
     
  • 2.27, PereresusNeVlezaetBuggy (ok), 02:06, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это не remote hole, это local root. Тоже неприятно, но всё же другого сорта и менее опасно.
     
     
  • 3.30, burjui (ok), 04:26, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    К тому же, для эксплуатации уязвимости нужно сожрать всю память, да так точно, чтобы обломилась именно _dl_split_path(), не раньше.
     
     
  • 4.31, PereresusNeVlezaetBuggy (ok), 05:05, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Предложенный эксплоит — https://www.openwall.com/lists/oss-security/2019/12/11/9 — изящно решает эту проблему установкой лимита на объём доступной памяти через setrlimit(2).
     
     
  • 5.37, burjui (ok), 16:00, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Извините, тормознул.
     
  • 2.39, Аноним (39), 17:02, 12/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кого ж винить, что вы так и не научились читать?
     

  • 1.41, Deanon (?), 22:08, 12/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    В опенке дыры может и есть, но не в таком количестве как в линуксах...
     
  • 1.46, Онаним (?), 09:01, 14/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-то всерьёз взялся за ненужно, похоже.
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру