Исследователи безопасности из компании Fenrisk раскрыли информацию об уязвимостях в инструментариях Pagure и OBS (Open Build Service), позволявших скомпрометировать инфраструктуры формирования пакетов дистрибутивов Fedora и openSUSE. Исследователи продемонстрировали возможность совершения атаки для выполнения произвольного кода на серверах с Pagure и OBS, что можно было использовать для подстановки изменений в пакеты в репозиториях Fedora и openSUSE...Подробнее: https://www.opennet.me/opennews/art.shtml?num=62928
> Например, для просмотра файла /etc/passwd можно открыть страницу "http://pagure.local:5000/your-repository/issue/raw/../../../....А грабли всё те же.
- обработкой символических ссылок
- указание символов "/.."
- корректность идентификатора не проверяется
- отсутствовала должная проверка URLнадо было писать на безопасном языке... ой, тут нет ни одной ошибки с памятью.
Тут ни одной ошибки с памятью пока не нашли.
> Тут ни одной ошибки с памятью пока не нашли.Спиливание мушки не повлияло на участь Джо...
> надо было писать на безопасном языке... ой, тут нет ни одной ошибки с памятью.Ахаха, ты подумал что оно на Си? Посмотри репозиторий, там некое поделие на питоне.
будто это отменяет тысычи других cve где в shot int присваивают long int и получают выполнение кода
> будто это отменяет тысычи других cve где в shot int присваивают long
> int и получают выполнение кодаВидно птицу по помету. Shot int у него. Ну хоть не headshot int, и на том спасибо. Позагадили такие как вы своими "программами" типа вон того - и еще на других быковать смеете. Позор!
вот, одна опечатка и у сишника уже переполнение и выход за границы буфера 😂
Признайся, ты специально опечатался.
doublecmd предлагал поставить его через openSUSE Build Service и я соглашался...
> /usr/bin/git --pretty=oneline --abbrev-commit <HERE>Лечится обычным двойным дефисом "--". Этот двойной дефис надо перед позиционными аргументами. К сожалению, не все CLI-утилиты такое поддерживают. Рекомендую глянуть в свои нескучные баш-скрипты. Видите там echo "$variable"? Значит ваш скрипт насквозь уязвим: в variable может быть "-e", "-n" или прочая шняга, которую эхо воспримет как модификатор поведения, а не как значение к выводу. И вообще, вместо echo нужен printf, но смузихлебы об этом не знают. И вообще, вместо баша/sh нужен нормальный скриптовый язык вроде питона, но смузихлебы будут продолжать апеллировать к дидам, мол, "они обходились без питона", и продолжать жрать кактус. Некоторые смузихлебы предпочитают баш-портянки нормальным сишным (!) готовым решениям вроде systemd, но это уже другая тема. Спасибо за внимание.
По-моему это работает только в гнутых софтинах с getopt. Вон в питоне задепрекейтили и дропнули такой интерфейс, не модно. А какой-нибудь 7zip или unrar это просто боль на самом деле.
Это работает везде, даже в самописных программах. Причём строк занимает столько же, сколько было бы с интерфейсом getopt, в любом языке. Даже в баше. Даже в Си.
```
opt_a= opt_b= opt_longopt=
while [[ $# -ge 1 ]]; do
case "$1" in
--help) usage; exit ;;
-a) opt_a=1; shift ;;
-b) opt_b=1; shift ;;
--longopt) opt_longopt="$2"; shift 2 ;;
--) shift; break ;;
-*) echo error: unknown option "$1" >&2 ; exit 69 ;;
*) break ;;
esac
done
```
На getopt интерфейс, к сожалению, вообще лучше не полагатся. Гугл, например, в андроиде этот интерфейс поломали. Только уже не помню как именно, под каким-то постом здесь писал уже про это. Благо заменить его альтернативой, работающей точно так же почти в стиле POSIX вообще не проблема.
Безопасен компьютер, отключенный от любой сети.
Более безопасен комп, где может выполняться только ядро.
Абсолютно безопасен компьютер, который выключен, обесточен и спрятан в сейф.Что сказать-то хотел?
Eval() в своих скриптовых языках уже точно обезопасил?
Системди уже избавился от вороха недоработок/открытых багов с тегами #WONTFIX в иссюях?
Никто пользовательский ввод без санитизации не передаст никуда. А если передаст, то бэкдор вполне осознанный, и надо спрашивать с причастных. Самая жесть это файловые имена, тут отдельное спасибо авторам-вендузятникам (привет 7zip и unrar опять же).
> И вообще, вместо баша/sh нужен нормальный скриптовый язык вроде питонаЧел, в Pagure тупо все 4 CVE починены в питон коде...
> Чел, в Pagure тупо все 4 CVE починены в питон коде...Три из которых - взаимодействие с башпортянками или вызовы через передачу параметров?
Вот в этом и проблема.
> Три из которых - взаимодействие с башпортянками или вызовы через передачу параметров?При том в всех трех облажался питонист, с санитизацией ввода пользователя.
> Вот в этом и проблема.
А когда питонист удумавший откосплеить сервак собой и наступивший на совершенно классическую граблю с ../../../ - это, стало быть, норм? :)
ЧСХ все 4 - лажа питониста с санитизацией ввода. Что хотите с этим то и делайте! В общем если кто нанял питоноджуна кодить - он и получил безопасность цепочек поставок под стать. Chain only as strong as its weakest link.
Можно ещё не запускать всякий шлак от рута и делить программы на пользователей. Даже 32 тысяч уникальных айдишников на серваке должно хватить. Но девопсы по большей частью заняты (уже лет 20 точно) джейсоноукладкой, а не настройкой системы под свои нужды.
> Можно ещё не запускать всякий шлак от рута и делить программы на
> пользователей. Даже 32 тысяч уникальных айдишников на серваке должно хватить. Но
> девопсы по большей частью заняты (уже лет 20 точно) джейсоноукладкой, а
> не настройкой системы под свои нужды.И как это все поможет от идиота не валидирующего что пользователь накидал - так что давайте перезапишем вон тот гит на наш левак, с хакаными пакетами?! Оно ж рулит этим гитом и by design должно уметь читать-писать оный.
По моему фикс тут - не нанимать всяких дятлов кодить системы где потом весь дистр нагнуть можно.
В shell script это обычно не проблема ибо запускающий делает это для себя, а не как обработчик чего то полученного извне.
Ну так-то "нормальный скриптовый язык" процентов на 20-пюре и на 80-обвязки над этими самыми консольными утилитами, но... вобщем кто-то об этом не знает.
>И вообще, вместо баша/sh нужен нормальный скриптовый язык вроде питонаСпасибо, не надо. Уже и так куча пакетов питоном заражена. Вместо питона нужно писать на нормальном основном языке проекта
>>И вообще, вместо баша/sh нужен нормальный скриптовый язык вроде питона
> Спасибо, не надо. Уже и так куча пакетов питоном заражена. Вместо питона
> нужно писать на нормальном основном языке проектаДа вон уже напрогали на питончике. И получили аж 4 CVE потому что нубоджуну никто не сказал что ввод надо валидировать.
>вместо баша/sh нужен нормальный скриптовый язык вроде питонаВ нормальных языках можно определить отдельный тип для путей, и строку нужно будет к этому типу приводить, и при приведении будет проверка на наличие '/../', вплоть до ошибки. Но в бидоне же динамическая типизация
> http://pagure.local:5000/your-repository/issue/raw/../../../...Питонисты просто няшки, собрали олдовый, классический такой баг :)
> Выполнения кода с правами пользователя git на сервере Pagure позволяет
> контролировать всё содержимое репозиториев с пакетами.Прикольно придумано - нанять каких-то джунов кодить питонохрень используемую одним проектом - и потом вещать про безопасность цепочек поставок! Что может пойти не так?!
Мне больше интересно, это сколько ж они кода написали, что никто это даже проверять не стал?
Да просто все в грабу эту безопасность видали!!! Пока не доплатят и в ТЗ не прибьют гвоздями даже вялого юнит теста никто не напишет, какой-там аудит. Партия сказала ннада! Кам-самол запилил и послал задачу нах. Точка на деревьях почки.
Вас поломали? Ой какая жалость. Нада была на расте! Там ваааще нече не надо, просто сэйфти как в сейфе
> Мне больше интересно, это сколько ж они кода написали, что никто это
> даже проверять не стал?Ну так наняли дешевого питоноджуна, потому что ему платить меньше а результат вроде как-то работает. Но принцип как заплачено так и зафигачено - не отменяли. Этот тип окончил - недельные курсы, и пощел скорее-быстрее наниматься хоть куда. И умел - вот на столько.
И конечно у него не было опыта создания веб серверов и знания типовых проблем направления. У кого он был - за зарплату питоноджуна ессно не пойдут. И питон для большого долговременного проекта не возьмут, для начала. И уж конечно не станут вон ту "архитектуру" решения делать. А корп решивший сэкономить получает вот такой подарок в цепочку поставок. Чтож, возможно аудит ВСЕХ ПРОЕКТОВ в GIT обойдется им дешевле :). Можно и на этом сэкономить! Но тогда грех жаловаться если и там бэкдор случайно всплывет.
Как вы думаете, найду ли я что-нибудь, связанное с "relative path traversal" в исполнении с, perl, php, Java etc сеньоров на mitre с одного запроса, или потребуется аж целых джва?
"Классичность" баги как бы намекает, что дело тут не в бобине...
Вот нормальные уязвимости такие, легко и сочно, и можно пол мира обгадить ломаными пакетами, без какого-либо палева. А то там буфер заполни цифры какие-то
ну какой весьмир? Подкроватные серверы на федорином горе только. Зачем?!
Надо было landlock использовать.
https://www.suse.com/c/statement-on-cve-2024-22033-compromis.../
Для openSUSE OBS далеко не настолько всё страшно, как описано в новости.
Многие думают. что после нахождения уязвимости все будут взломаны. Такая чушь несусветная.
Кому это надо, тратить время на эксплоит, который заработает или не заработает - не знаем.
А компании наворуют данные и так.. через бэкдоры
> компании наворуют данные и так.. через бэкдорыНайденный бэкдор "становится" уязвимостью.
Собственно, да:
https://fenrisk.com/open-build-service - первоисточник с выпиленным видео ниочем.Героическим усилием через миллион стремных мест удастся запустить шелл от непривиллегированного юзера выполняющего сборку пакета (причем в настоящей ОБС этот юзер, сборка и все вместе существуют внутри одноразовой сборочной виртуалки, где ничего кроме твоего пакета и нет) - что, конечно, не было так задумано.
Стоп, здрасьте - а зачем мы это все запускали, если обс и так запускает наши сборочные скрипты - от того же юзера и там же?!
Ну и приятная новость от самих обсников - что они оказывается вручную проверяют манифесты хотя бы иногда, и подобная хрень не пройдет модерацию.
Т.е. проблема существует только у васяна с его домашней ОБС внутри которой он делает curl | sudo sudo su неглядя... т.е. опять же не существует, он этот пакет у себя потом еще и запускать собирался, незачем ломать сборку самому себе в надежде на сомнительный успех - надо просто подождать пока соберется. Еще и от рута запустит, за тебя.