LINUX.ORG.RU
ФорумTalks

очередной not-a-bug

 ,


1

2

Копипаста в опеннета

В системном менеджере systemd выявлена уязвимость (CVE-2020-1712), которая потенциально позволяет добиться выполнения своего кода с повышенными привилегиями через отправку специально оформленного запроса по шине DBus. Проблема исправлена в тестовом выпуске systemd 245-rc1 (решающие проблему патчи: 1, 2, 3). Уязвимость устранена в дистрибутивах Ubuntu, Fedora, RHEL (проявляется в RHEL 8, но не затрагивает RHEL 7), CentOS и SUSE/openSUSE, но на момент написания новости остаётся неисправленной в Debian и Arch Linux.

Уязвимость вызвана обращением к уже освобождённой области памяти (use-after-free), возникающем при асинхронном выполнении запросов к Polkit во время обработки DBus-сообщений. Некоторые DBus-интерфейсы используют кэш для хранения объектов на короткое время и очищают элементы кэша как только шина DBus освободится для обработки других запросов. Если обработчик DBus-метода использует bus_verify_polkit_async(), ему возможно потребуется ожидать завершения действия в Polkit. После готовности Polkit обработчик вызывается повторно и обращается к уже ранее распределённым в памяти данным. Если запрос к Polkit выполняется слишком долго, то элементы в кэше успевают очистится до того, как обработчик DBus-метода будет вызван второй раз.

Из сервисов, позволяющих эксплуатировать уязвимость, отмечается systemd-machined, который предоставляет DBus API org.freedesktop.machine1.Image.Clone, приводящий к временном сохранению данных в кэше и асинхронному обращению к Polkit. Интерфейс org.freedesktop.machine1.Image.Clone доступен всем непривилегированным пользователям системы, которые могут инициировать крах сервисов systemd или потенциально добиться выполнения кода с правами root (прототип эксплоита пока не продемонстрирован). Код, позволяющий эксплуатировать уязвимость, был добавлен в systemd-machined в 2015 году в версии systemd 220 (в RHEL 7.x используется systemd 219).

нет ну вот мы объясните мне, зачем нам нужен systemd?

почему когда возникает проблема с запуском сервиса, я ведь даже не знаю на какой стадии эта проблема — мне приходится сперва решать проблему с самим systemd, гуглить команды, изучать его. как мне узнать, запущен сервис или нет, работает или нет, а если на стадии запуска возникает проблема, где я должен проблему искать? обычный systemctl start молчит как партизан. а где смотреть логи? зачем их сделали бинарными? был же старый добрый tail -f /var/log/messages. почему вообще чтобы посмотреть логи, я должен гуглить как это делается? а иниты? вы видели? нет, ну вы их видели? да, пусть это простенький формат ini-файла, но ключи по которым происходит выполнение действий сводят всю простоту на «нет», это же портянки текста похлеще bash.

аррргхх

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

гуглить команды, изучать его

С другими инитами таких проблем нет, там знания напрямую в мозгу возникают.

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

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

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

был же старый добрый tail -f /var/log/messages

А сейчас есть не менее добрый и куда более удобный journalctl.

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

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

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

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

способности к обучению

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

systemd этого не стоит.

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

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

bread
()

лично я считаю Линусу тупо платят за молчание, иначе бы он давно ентот ваш systemd раз***л.

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

Да нет серьезно. Я на днях ковырял старую убунту с апстартом и руки сами начали набирать команды. Я вводил строку за строкой я всматривался в выхлоп консоли и мне было все понятно. Я устранил неисправность за 8,5 минут. Но я до того момента никогда даже не пользовался линуксом. А системд на такое способен?

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

А как давно ты видел фото его дочерей? Я слышал слух что их содержат в секретной тюрьме редхата в стране третьего мира. И в обмен на то что их не трогают, Линукс и молчит.

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

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

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

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

Проф Любительская деформация как она есть.

Thetan ★★★
()

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

можно забить, есть другие системы инициализации.

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

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

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

чем решение проще — тем оно вернее. конечно, любой человек впервые столкнувшись с линуксом с systemd будет думать что «ЭТО НОРМА», вот только когда он попробует дистрибутив в котором BSD-style классический System V Init, он поймёт, что его всю жизнь жёстко обманывали. ведь можно было сделать проще!

это не синдром утёнка. это здравый смысл.

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

Но софт прибит гвоздями к системд, маргинальные дистры не в счёт. Тут вариант только один: подменять /sbin/init, имея парсер юнитов.

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

Но софт прибит гвоздями к системд, маргинальные дистры не в счёт. Тут вариант только один: подменять /sbin/init, имея парсер юнитов.

какой именно? если гном3 прибит, или там wayland какой - то срать. но, насколько мне известно и то и другое может жить без systemd. да, надо пересобрать, и потратить на это время, хотя гном3, wayland такие же ненужнод-стайл поделки.

alwayslate ★★
()

неисправленной в Debian и Arch Linux

классика, один «стабильный», второй типо впереди планеты всей, а на деле…

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

классика, один «стабильный», второй типо впереди планеты всей, а на деле…

а на деле, в Debian не должна была попасть эта кривая поделка от лени, но попала, а в арче уже надо было найти, или изобрести более хипсторскую и «инновационную» замену ненужнод.

alwayslate ★★
()

да, в общем-то, тред быстро утих. воинствующих systemd-фанатиков среди ЛОРовцев нет, что лишний раз доказывает адекватность среднестатического ЛОРовца.

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

ЛОР ум, честь и совесть современного Линукс сообщества!

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

bash имеет смысл изучать, держать в голове.

я bash бы выучил только за то, что им написан SysVinit.

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

нет ну вот мы объясните мне, зачем нам нужен systemd?

Унификация, например. Просто у systemd традиционный редхатовый подход А ДАВААЙТЕ КОДА НАХРЕНАЧИМ ДА ДЕТКА БОЛЬШЕ ФИЧЕЙ О СМАРИТЕ МЫ ТУТ ЕЩЁ ВОТ ТАКУЮ ШТУКУ ПРИДУМАЛИ ХРЕНАЧИМ В ПРОД СЛОМАЛОСЬ ДА ПОФИГ В СТАБИЛЬНЫХ ДИСТРИБУТИВАХ НЕ ВСПЛЫВЕТ НЕ ПОНИМАЕТЕ КАК РАБОТАЕТ ПИШИТЕ В ПОДДЕРЖКУ ВЫ ВЕДЬ ЗАПЛАТИЛИ ЖЕ НУ ЛАДНО НИКТО НЕ ХОЧЕТ ПОДДЕРЖИВАТЬ ВТОРУЮ ВЕРСИЮ ПИШЕМ.

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

То, что в systemd unit’ы декларативные это благо, которое боженька с неба спустил. Если тебе так жжот от systemd, посмотри на то, как юниты в openbsd выглядят, там то же самое, простое через шелловые переменные. Проблема в том, что чуваки опять слишком много на себя берут.

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

Вот как нужно защищать, раз-раз-раз! защищай systemd

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

в арче не у всего есть пакет *-nosystemd

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

я не встречал, пока, прямо приколоченного софта.

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

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

ну, почти. Оно интуитивно понятно, strace на худой конец

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

знать POSIX shell в линуксах полезно … bash имеет смысл изучать, держать в голове.

Эти знания зачастую вредны, так как сисадмины, которые изучили Shell/Bash, начинают пихать его в каждую дырку, оставляя за собой неподдерживаемую и нечитаемую bash-лапшу вместо аккуратненьких скриптов на нормальном языке программирования вроде того же Python’а.

Когда-то Edsger Wybe Dijkstra сказал:

«Практически невозможно научить хорошему стилю программирования студентов, которые раньше имели дело с Бейсиком; в качестве программистов они умственно покалечены без надежды на восстановление.»

Я считаю, что это заявление полностью справедливо и для Shell/Bash. И чем меньше в дистрибутивах Linux Bash- и Shell-скриптов, тем лучше для всех.

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

Ты не осилил systemd status? Да ты про это текста больше в несколько раз напечатал. 6 букв! 4 буквы, если отбросить повторы! Дарю тебе, распечатай и повесь на стенку. 'A', 'S', 'T', 'U'.

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

Зато есть куча воиствующих хейтеров.

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

Ты не осилил systemd status? Да ты про это текста больше в несколько раз напечатал. 6 букв! 4 буквы, если отбросить повторы! Дарю тебе, распечатай и повесь на стенку. ‘A’, ‘S’, ‘T’, ‘U’.

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

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

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

Ты плохо репетировал. Иди дальше собирай копипасту.

кто не ненужнод-позитивный идиоты и дебилы

Очень удобно бороться с жупелами. Но ты сфейлил.
Лучше сначала обсудить тех, кто не смог сделать man foobar и foobar --help. А потом уже переходить к твоим фантазиям. Или мануалами пользуются только как там... позитивные?
Кстати, можешь мне сделать пометку к нику, чтобы не фантазировать больше. Я пользуюсь systemd с версии 12. А командой man с 1996 года. Это всё, что тебе нужно про меня знать.

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

Ты плохо репетировал. Иди дальше собирай копипасту.

а нахрен мне это надо?

Лучше сначала обсудить тех, кто не смог сделать man foobar и foobar –help. А потом уже переходить к твоим фантазиям. Или мануалами пользуются только как там… позитивные?

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

Я пользуюсь systemd с версии 12.

и? я пользую лялех с слаки 1.1

А командой man с 1996 года. Это всё, что тебе нужно про меня знать.

я и того раньше - дальше то что? это повод великой гордости? или, вероятно в твоем случае это так, это является единственным достижением в жизни? зачем мне приписывать такие «важные» факты к твоему нику?

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

То, что в systemd unit’ы декларативные это благо, которое боженька с неба спустил.

Да, но расплачиваемся за это усложнением самого инита. Там очень много запутанного кода на си, этого уже достаточно, чтобы бояться. Управлять этой машинерией невозможно, только молиться, что все пойдет по поттеринговскому happy path. Не говоря о том, что этот инит-переросток берет на себя еще пачку других ответственностей (дополнительный простор для багодрома).

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

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

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

а нахрен мне это надо?

Да, тебе надо только газифицировать лужи.

мануалами пользуются все нормальные люди

Значит Спуф ненормальный. Ты сам это сказал.

я пользую лялех с слаки 1.1
лялех

Ясно, понятно.

зачем мне приписывать такие «важные» факты к твоему нику?

Чтобы в следующий раз фантазировать более предметно, а не по шаблону.

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

Этот поток идиотизма комментировать лень. Прощай.

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

Да, но расплачиваемся за это усложнением самого инита. Там очень много запутанного кода на си, этого уже достаточно, чтобы бояться. Управлять этой машинерией невозможно, только молиться, что все пойдет по поттеринговскому happy path. Не говоря о том, что этот инит-переросток берет на себя еще пачку других ответственностей (дополнительный простор для багодрома).

как раз в декларативных unitах нет ничего плохого. то что там говнокод, и, по сути, лапшекод на C, это проблема реализации. то что там всего напихано кроме инита - и то что архитектура полное гавно - это все к реализаторам. и не надо чем то там «расплачиваться». просто реализовывать все через dbus в таком важном куске как init - ну такое себе, делать бинарные логи - верх идиотизма (дада, там нет механизма коррекции если что), засовывать все в одну кучу - тоже такое себе. Все те фитчи ненужнод можно было реализовать без инвазивного запихивания всякого говна.

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

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

Да, тебе надо только газифицировать лужи.

не надо себя на других зеркалировать.

Ясно, понятно.

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

Этот поток идиотизма комментировать лень. Прощай.

ну то есть как обычно? скорее надо тебе приписать это - «пустозвон». Ясно, понятно.

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

Только идиоты воспринимают новость вида «обнаружена уязвимость в таком то софте» в негативном ключе по отношению к этому софту. Если уязвимость нашли - значит её исправили. В любом софте есть уязвимости и если в твоей любимой программе их не находят - значит плохо ищут.

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

Только идиоты воспринимают новость вида «обнаружена уязвимость в таком то софте» в негативном ключе по отношению к этому софту. Если уязвимость нашли - значит её исправили. В любом софте есть уязвимости и если в твоей любимой программе их не находят - значит плохо ищут.

а вы умные, а ничего что ненужнод это еще одна плоскость для атаки? в то время как альтернативные решения нет?

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

то что там говнокод, и, по сути, лапшекод на C, это проблема реализации

Но другой реализации у нас нет. Выпихнули логику из скриптов в сам инит, и там завелся лапшекод. Немного предсказуемо.

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