LINUX.ORG.RU

Уязвимости в systemd (CVE-2021-3997) и Flatpak (CVE-2021-43860)

 , , ,


2

1

В systemd-tmpfiles выявлена уязвимость, позволяющая вызвать неконтролируемую рекурсию и отказ в обслуживании системы. Для этого во время загрузки необходимо создать в /tmp большое количество вложенных подкаталогов. Исправление в Fedora и RHEL пока на стадии тестирования, в Ubuntu и Suse уязвимость закрыта.

При создании тысяч вложенных каталогов выполнение операции systemd-tmpfiles --remove приводит к аварийному завершению из-за исчерпания стека. Обычно утилита systemd-tmpfiles в одном вызове выполняет операции удаления и создания каталогов (systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev), при этом вначале выполняется удаление, а потом создание, т.е. крах на стадии удаления приведёт к тому, что не будут созданы важные для работы файлы, указанные в /usr/lib/tmpfiles.d/*.conf.

Уязвимость во Flatpak позволяет при загрузке пакета из непроверенного репозитория через манипуляции с метаданными скрыть использование повышенных прав. Еще одна уязвимость без CVE позволяет во время сборки пакета командой flatpak-builder --mirror-screenshots-url создать каталоги в ФС за пределами сборочного каталога.

>>> CVE-2021-43860

>>> CVE-2021-3997



Проверено: Shaman007 ()
Последнее исправление: xaizek (всего исправлений: 1)

Ответ на: комментарий от anonymous

Точно, mv можно из cp по dbus вызвать, а если он отвалится, то все перестанет работать.

cocucka ★★★★☆
()
Ответ на: комментарий от anonymous

писать хороший код возможно, для этого полезно думать, ещё полезно когда есть кто-то кто может это дотошно проанализировать и многие другие методики. да, это не защитит от всех багов, но позволяет быть уверенным в достаточно большом классе важных задач типа крипты.

Да, если ещё помножить на время, на деньги, на пофигизм и на интерес, то в результате и получаем, что имеем. <Бесчисленные примеры уязвимостей.> А сколько ещё не обнаружено? Страшно подумать. Нет, я никак не могу быть уверенным в таких системах, какими бы гениями они не были написаны.

Спасибо за понимание :)

anonymous
()

systemd настолько спорный момент, насколько вообще возможно. С одной стороны он облегчает жизнь и делает в одну команду то, для чего раньше писались целые конфигурационные файлы. С другой же стороны - это абсолютная дыра в безопасности, невозможность нормального иследования кода ввиду его запутанности, прожорливость к ресурсам и слишком большой доступ в системе по умолчанию. Спрашивается вопрос - Как определиться, использовать или нет?

Garivado
()
Ответ на: комментарий от cocucka

Осторожно, а то они ща создадут systemd-copyd с клиентской тулзой, которая будет копировать файлы через ~жопу~ dbus, результат отдавая в виде json.

u0000
()
Ответ на: комментарий от Garivado

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

Где тебя учили вбрасывать ложь как факты в такой манере?

anonymous
()
Ответ на: комментарий от u0000

Про JSON ты удачно вспомнил, это должно быть опцией в любой системной утилите. Глядишь, однажды до PowerShell дорастут. В util-linux вроде есть местами, но не в coreutils, к сожалению.

anonymous
()
Ответ на: комментарий от eternal_sorrow

Кода без багов не бывает. Найденная уязвимость лучше чем ненайденная.

вчера этот аргумент как раз прокомментировал

Почему многие хейтят D-Bus? (комментарий)

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

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от snizovtsev

Canonical же тогда выкатила патч уже через сутки

да, но не со всеми багами они так поступают: Прошло 10 лет... А Ubuntu по-прежнему не могла подключиться в режиме 5G.

Linux в подарок (комментарий)

crypt ★★★★★
()
Ответ на: комментарий от Garivado

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

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от Legioner

У тебя может быть миллион строк, выполняющихся в процессе без привилегий и 1000 строк в процессе с рутом.

вчера на примере опровергли этот аргумент. intelfx то же самое сказал, а оказалось, что ...

Почему многие хейтят D-Bus? (комментарий)

crypt ★★★★★
()
Ответ на: комментарий от anonymous

Вероятность ошибки в коде! В системе, где основой всего является бит с двумя весьма конкретными значениями. Это же не квантовые вычисления. Как такое вообще могло произойти?

Не очень сложно.

 int a = 2, b = 3, c = 4;
 int d = a + b * c;
 int e = a + b; e =* c;
 printf("d=%d e=%d\n",d,e);
Надеюсь простой намек понятен?

anc ★★★★★
()
Ответ на: комментарий от Garivado

С другой же стороны - это абсолютная дыра в безопасности

Это ровно ничем не подкреплено. В ядре systemd (самой программе systemd) нет какого-то аномального количества дыр.

, невозможность нормального иследования кода ввиду его запутанности

Это просто не соответствует действительности. Учи C, и код сразу перестанет быть запутанным.

прожорливость к ресурсам

Я не заметил этого даже в контейнерах с 256 мегабайтами памяти. Если ты пытаешься использовать современную полнормзмерную ОС на чём-то с 32-64 Мб, то что-то делаешь не так.

и слишком большой доступ в системе по умолчанию.

Фактически он более ограничен, чем sysvinit, который просто хреначит все подряд скрипты с максимальными привилегиями, а сброс привилегий уже на их совести. Плюс поддерживаются популярные MAC.

anonymous
()
Ответ на: комментарий от anonymous

А может быть мы просто не можем просчитать все возможные варианты развития событий в программе?

Это, конечно, давние воспоминания, но припоминаю, что для Perl 6 была доказана невозможность статического анализа, иначе говоря, невозможно точно сказать, что делает программа, не запустив её. К счастью, у более стандартных языков ситуация лучше.

anonymous
()
Ответ на: комментарий от crypt

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

anonymous
()
Ответ на: комментарий от cocucka

Нет, в cp никак нельзя. cp отягощено Фатальным Недостатком.
Надо в systemd добавить systemd-copy. Вот туда можно и нужно будет встроить поддержку и удаления при копировании, и архивации во все известные на данный момент форматы архивов, и копирования в S3 и другие сетевые хранилища, и бинарных логов, и ini-конфига, и множества других важных и полезных фичъ.

anonymous
()
Ответ на: комментарий от anonymous

cp отягощено Фатальным Недостатком

Да, оно нарушает священные принципы UN*X way.

anonymous
()
Ответ на: комментарий от u0000

через ~жопу~ dbus

Великолепно сказано

anonymous
()
Ответ на: комментарий от anonymous

Это 2017 год. Так можно назвать решетом sendmail или openssl но это на данный момент уже не будет правильно.

anonymous
()
Ответ на: комментарий от anonymous

все ваша вина

Насколько я помню, это был какой-то баг с UID? Так тут же выше какой-то прыщеэксперт с пеной у рта доказывал, что уязвимость в Qmail не уязвимость, а просто настроено неправильно. Вы уж там договоритесь о линии аргументации, а то противоречите друг другу.

anonymous
()
Ответ на: комментарий от cocucka

Когда это KISS был применим к этому комбайну?

WatchCat ★★★★★
()
Ответ на: комментарий от Garivado

С одной стороны он облегчает жизнь и делает в одну команду то, для чего раньше писались целые конфигурационные файлы

все очень просто. systemd - это windows way, когда софт пытается за счет всех своих функций учесть все use cases и угодить юзеру. чтобы ему «было просто».

а UNIX создавался хакерами для хакеров, т.е. цель была создать гибкий инструмент, где каждый при помощи кубиков типа lego мог «захачить» что-то необычное. он был простым не для простого пользователя, а для технически грамотного.

в итоге вопрос, использовать или нет, зависит от того, какая цель. лично мне systemd не облегчает жизнь, а усложняет. о чем я и многие другие писали. но Linux уже давно стал развиваться в первую очередь по инициативе коммерческих компаний (с 2002 года примерно), а у IBM (которые купили RH) есть свои исследования потенциального корпоративного юзера.

crypt ★★★★★
()
Последнее исправление: crypt (всего исправлений: 1)
Ответ на: комментарий от cocucka

Давайте еще в cp встроим опцию удаления при копировании или архивацию.

Строго говоря, опция удаления целевых файлов там есть. А ещё есть дублирование функциональности ln(1). И копирование содержимого специальных файлов, что тоже дублирование. И удаление слэшей, что совершенно не unix way. И установка новых контекстов MAC, что просто возмутительно!

anonymous
()
Ответ на: комментарий от SakuraKun

И именно поэтому я выбираю дистрибутивы с OpenRC

это полумеры.

12.01.2022, Уязвимость в eBPF, позволяющей запускать обработчики внутри ядра Linux в специальной виртуальной машине с JIT...

13.01.2022, Ещё одна уязвимость в подсистеме eBPF, позволяющая повысить свои привилегии...

crypt ★★★★★
()
Ответ на: комментарий от anonymous

Когда уже люди наконец осознают, что уязвимость еще можно оценивать и по целесообразности ее эксплуатации. И чем менее целесообразна эксплуатация уязвимости, тем лучше. Пользоваться закрученной уязвимостью, вроде Meltdown за прибыль в виде пособия по бедности никто не будет.

ipkirill21x
() автор топика
Последнее исправление: ipkirill21x (всего исправлений: 1)
Ответ на: комментарий от ipkirill21x

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

anonymous
()
Ответ на: комментарий от anonymous

Наколенный скрипт - тоже усилие, по сравнению с звонком под видом сотрудника банка пенсионеру…, которое еще к тому же может ударится об виртуальность карты, которая либо замораживается после транзакции, либо отправляется в морг.

anonymous
()
Ответ на: комментарий от Siborgium

Возможно, у меня там отвалилась табличка «сарказм», но поинт и был в том, что unix way умер десятки лет назад, и слабо применим в реальном мире, если говорить конкретно о самом цитируемом пункте — специализации программ. Некоторые другие положения этой философии вполне уместны в разработке.

А про mv лично я ничего не говорил, возможно это было где-то ещё выше по треду :)

anonymous
()

Лёня узнал про рекурсивные функции в Си.

rupert ★★★★★
()
Ответ на: комментарий от micronekodesu

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

Или перед перезагрузкой. Опс.

qwe ★★★
()
Ответ на: комментарий от qwe

Чтобы файлы пережили перезагрузку, они должны быть созданы на соответствующем носителе, но никак не в оперативной памяти. Использовать для создания файлов на жёстком диске systemd-tmpfiles.d - это надо знатно упороться чем-то тяжёлым.

anonymous
()
Ответ на: комментарий от eternal_sorrow

я думаю, что найденная уязвимость, это не всегда хорошо

12.01.2022, Уязвимость в eBPF, позволяющей запускать обработчики внутри ядра Linux в специальной виртуальной машине с JIT...

13.01.2022, Ещё одна уязвимость в подсистеме eBPF, позволяющая повысить свои привилегии...

crypt ★★★★★
()
Ответ на: комментарий от anonymous

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

Открою страшную тайну - по умолчанию /tmp расположен на носителе.

qwe ★★★
()
Последнее исправление: qwe (всего исправлений: 1)

Интересно, а кто может использовать systemd-tmpfiles, как не администратор системы и пользователь?

Это же вроде управляется через /etc/tmp.d? И что тогда мешает просто забить /tmp до упора, чтобы система встала враскоряку? Исправлять, конечно, надо, но по сути эта уязвимость весьма условная.

AVL
()
Ответ на: комментарий от qwe

cp+rm указаны для перемещения между файловыми системами, где inode меняется в любом случае.

А вообще это был сарказм.

И различие между mv и cp+rm куда более важное, чем смена inode.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 1)
Ответ на: комментарий от anonymous

systemd-cp ну вы поняли))) Потеринг переизобрел ТАКОЕ!!? читать в источнике…

anonymous
()

У ненужнод даже уязвимости бесполезные. Чисто формальная фигня, никто это эксплойтить не будет

anonymous
()
Ответ на: комментарий от anc

Ты отвечаешь на риторический вопрос.

Надеюсь простой намек понятен?

Такую ошибку и компилятор отловит. Здесь речь, скорее, про

printf("d=%d e=%d\n",e,d);

Сложно? Сложно.

anonymous
()

создать каталоги в ФС за пределами сборочного каталога.

уязвимость без CVE

А ведь это серьезно. Почему нету CVE?

Odalist ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.