В приложении openSUSE-welcome, применяемом в дистрибутиве openSUSE для ознакомления новых пользователей с особенностями системы, выявлена уязвимость (CVE-2023-32184), позволяющая выполнить код с правами другого пользователя. Приложение openSUSE-welcome запускается автоматически после первого входа пользователя в систему и в случае выбора графического окружения Xfce предлагает возможность включения альтернативных вариантов раскладки элементов на рабочем столе. Обработчик, выполняющий выбор раскладки, некорректно обрабатывал временные файлы, что позволяло другому пользователю организовать выполнение своего кода с правами жертвы, перешедшего к выбору раскладки рабочего стола Xfce...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59651
Добро пожаловать, вот вам backdoor
Веский довод за удаление бессмысленных приложений. Которых немало хоть в Linux, хоть в альтернативе.
>>но не учитывались коды ошибок,Да где ж это виданно, на Питоне ошибки обрабатывать. Это чуть ли не ересь. Шутка, но основания для неё же есть.
> В коде PanelLayouter::applyLayout()Это не питон. Скрипт на питоне вызывается вот отсюда, без проверки того что входные данные для него нормально записались. А питон доверчивый, да, что ему подсунули в /tmp/layout то и отработал.
> Да где ж это виданно, на Питоне ошибки обрабатывать. Это чуть ли не ересь.Питон использует исключения, поэтому не обработать ошибку (в данном случае - при проверке наличия каталога) в принципе невозможно.
Но конкретно этот код написан на C++ и использует функции Qt, а они возвращают коды ошибок. Результат налицо.
> Питон использует исключения, поэтому не обработать ошибку (в данном случае -
> при проверке наличия каталога) в принципе невозможно.Как показали эксперименты, самая типовая реакция питоноскриптов на ошибку - забить по максимуму. А потом - возможны варианты. В убунте, например, питонапдейтер на любые проблемы сети - врет про то что апдейтов для системы - нет. Хотя они, конечно, есть, а падлюка даже прочекать не смог их наличие - но соврать уже сумел. И вот так у питонистов везде :E
Нет сети - нет апдейтов, вроде все логично. libastral в питон еще не завезли.
Но вообще странно, да. Надо чтобы сегфолтилось в отсутствии сети. Сразу будет понятно - врет, подлюка, раз сегфолтится - значит апдейты есть, надо только сеть поднять.
> Нет сети - нет апдейтов, вроде все логично. libastral в питон еще не завезли.При том сеть может как таковая быть. Что самое то издевательское. Но нормально сообщить о проблеме это поделие не умеет, и если его не гонять под strace'ом ажно - некоторые чайники пару лет уверены что для вот именно их диалекта убунты апдейта нет. Хотя на самом деле питоноужастик просто лажает в каком-то месте проверки апдейта - и выдает дефолтное "апдейтов нет", проглотив все мыслимые ошибки сети, сервера, днс, прокси или чего там возникающих по более 9000 разным причинам.
> Но вообще странно, да. Надо чтобы сегфолтилось в отсутствии сети.
> Сразу будет понятно - врет, подлюка, раз сегфолтится - значит апдейты есть,
> надо только сеть поднять.Не, ну что вы. Падает с жутким трейсом на 3 страницы оно как раз если сеть на свое горе все-таки нашло! После этлшл оно ведь первым делом как умная клава качает - тадам - последнюю версию апдейтера. Ну как же, апдейтиться старым апдейтером если новый есть - не айс! Только 1 маленькая проблемка: в половина случаев потом опять наступает - "апдейтов нет". На этот раз уже по другому поводу - если посмотреть внутрь, чекер оказывается наворачивается с жестким стектрейсом страницы на три. Если удастся декодировать, суть на самом деле окажется "блин, у вас версия питона не та". Кто из питоняш додумался качать новый апдейтер первым делом чтобы обнаружить что в старой системе самого-самого питона и правда нет - кто ж знает. Но это именно тот случай когда они "споткнулись и упали свим лицом на мой кулак, и так 5 раз подряд". Каждый второй релиз убунты такая хрень творилась. Поэтому апдейтов нет, пока руками не переключишь репы, вместо такой автоматики...
Прикольный патч)))
if (result != 0) {
// TODO: something went wrong, display error message?
}
> // TODO: something went wrong, display error message?Дорвался питоняша до си++ и привычно спитонячил в плюсоте... так спитонячить можно и на аде какой, арианщики проверяли :)
Опять сишники ...
OH SH--
конечно не сишники, файл то panellayouter.cpp
но кто будет разбираться в двух сортах погромистов?
тут уже работает теорема г-на Эскобара
вот вам аргумент, почему во всём виноваты растофилы (не программисты) и прочие маниакальные:
это вы должны были запилить свой раст 40 лет назад, но вы не сделали, а теперь кто-то за вас должен это все исправлять и патчить.
А ниче, что нас 40 лет назад еще не было? 40+ лет назад запилили б̶ы̶д̶л̶о̶п̶х̶п̶ ̶д̶л̶я̶ ̶ы̶л̶и̶т̶к̶и̶ сишечку, потому что хотели побыстрее "х*як-х*як и в прод". Причем были более безопасные альтернативы, но зачем, мы же такие умные, мы ошибок не допускаем!
Да вас и Раст наверно перерос.
Было бы очень смешно, если бы про прод жээсник написал.
это не сищники. это ПЛЮСЫ. ды ещё в добавок и Qt.и патч -- говно. человек явно не понимает как корректно работать с временными файлами.
ды и кстати вообще не ясно зачем ему python понадобился -- он уже внутри своего C++/Qt мог-бы всё сделать.
> это не сищники. это ПЛЮСЫ. ды ещё в добавок и Qt.
> и патч -- говно. человек явно не понимает как корректно работать с
> временными файлами. ды и кстати вообще не ясно зачем ему python понадобился
> -- он уже внутри своего C++/Qt мог-бы всё сделать.Судя по патчу он питон, си++ и информационную безопасность знает примерно одинаково. Т.е. никак. Сократить вслед за предыдущими 200 000 прочих няш-питоняш выставленных на мороз, имхо.
Всё логично, вход для одного является выходом для другого :-)
ужасный код, никакой культуры разработки.
Не то что твой однострочный хеллоуворлд на всех языках мира.
Не надо быть гением, чтобы поддерживать культуру разработки. Врубаешь автоформатировщик, внедряешь линтеры, проводишь воспитательные беседы с членами команды, отказываешься рассматривать те MR/PR, в которых линтер валится с ошибкой.
Почему нет? Обеспечь кроссплатформерность. Определи язык системы и подставь нужный перевод (само собой, система автоматического перевода должна быть). С учетом языков, пишущих справа налево. И иероглифы не забудь - должны гарантированно отображаться. И как однострочный проект поживает?
Так линукс и есть сплошная локальная уязвимость, берёшь любой live-дистрибутив, загружаешься и делаешь что угодно от sudo с разделами и файлами, если конечно они не зашифрованы, а если зашифрованы, то возникает другая проблема, в виде диких тормозов.
Тоже самое можно проделать и на форточках (да и не только), имея под руками любой дистр с WinPE
А можно и вообще подтереть nvram на материнке или каком-то подключённом устройстве. Что потом только программатор.
> если зашифрованы, то возникает другая проблема, в виде диких тормозовДаже на десятилетнем i7 2700k нет никаких тормозов с полным шифрованием всего и вся на диске. Или вы про hdd механические?
> Имея возможность подставить свои данные вместо исходного tar-архива, атакующий мог разместить в этом архиве дополнительные файлыЕсли сторонний человек может делать что угодно в вашем /tmp, то как бы уже поздно пить "Боржоми", разве нет?
Очередная притянутая за уши чушь, а не уязвимость.
Кстати да.
Ну наверное можно создавать там попачки и файлы под конкретным юзером?
> Если сторонний человек может делать что угодно в вашем /tmp, то как бы уже поздно пить "Боржоми", разве нет?нет!
/tmp блюдёт правила, которые позволяют работатьс этим катологом так что это не позволяем кому-то в него вторгаться.
и кто угодно там делать ни чего не может, Linux соблюдает права
> Linux соблюдает праваПрава чернокожих? Если tmpfs без noexec, то считай все. Верно заметил анон про боржоми.
Лет так 40 пили боржоми и вдруг стало поздно?На /tmp, между прочим, стоит sticky bit. Это значит что если один пользователь запишет туда какой нибудь файл, то даже с правами доступа 777 другой пользователь его удалить не может. Иначе говоря, если один пользователь создал файл в темпе, то другой не может его стереть и подставить другой. Уязвимость в данном случае заключается в том что первый не удосужился проверить смог ли он создать свой файл, или там уже лежал чужой с таким же именем. Удалить чужой, кстати, он бы все равно обломался.
> The sticky bit was introduced in the Fifth Edition of Unix (in 1974) for use with pure executable files.Боже, насколько же это древнее дерьмо...
> Боже, насколько же это древнее дерьмо...Что, окаменело, через соломинку не проходит, привыкли посвежее?
> Боже, насколько же это древнее дерьмо...Чувак, ты машину водить умеешь? Электричеством пользуешься? На поезде ездишь? Самолетом летаешь? А теперь открой вику, подивись насколько это древнее дерьмо. Всему этому более столетия уже. Что там 1974 какой-то? :)
Ага, а императрица Мария Феодоровна вообще электромобилем владела (не шутка и не сарказм).
После установки openSUSE Leap 15.4 / 15.5 я вот эту лишнюю х**ню удаляю!sudo zypper remove opensuse-welcome
> sudo zypper remove opensuse-welcomeДа вообще-то всю ненужную пакость имеет смысл удалять или не ставить изначально. А просто потому что меньше кода == меньше багов, вулнов и тормозов. Perfection isn't when there's nothing to add, but when there's nothing to remove.