Компания Qualys выявила опасную уязвимость (CVE-2023-6246) в стандартной Си-библиотеке Glibc, позволяющую через манипуляции с запуском SUID-приложений добиться выполнения своего кода с повышенными привилегиями. Исследователи смогли разработать рабочий эксплоит, позволяющий получить права root через манипуляцию с аргументами командной строки при запуске утилиты su...Подробнее: https://www.opennet.me/opennews/art.shtml?num=60528
musl-хейтеры, что с лицом?
С11, нет не то, надо писать на RUST!!!
Для тех кто не умеет с буфером работать, да, лучше на раст, научит.
Остальные могут писать на чем хотят
Можно примеры вывода команды в конце статьи на подверженной системе и на патченной?
На подверженной будет segmentation fault.
Если у меня не падает, всё в порядке? Теперь хотелось бы выяснить, почему.
Баг недавно появился. У тебя слишком старый libc.
> Баг недавно появился. У тебя слишком старый libc.$ ld.so --version
ld.so (Gentoo 2.38-r9 (patchset 9)) stable release version 2.38.
Copyright (C) 2023 Free Software Foundation, Inc.
Это линкер. Лучше так ldd --version. У меня 2.12 и бага нет. А на другой тачке 2.36 там есть баг.
> Это линкер. Лучше так ldd --version. У меня 2.12 и бага нет.
> А на другой тачке 2.36 там есть баг.Это бинарный загрузчик glibc. Не лучше, в gentoo ldd это скрипт.
А вот кстати у musl
$ /usr/x86_64-linux-musl/lib/ld-musl-x86_64.so.1 --version
musl libc (x86_64)
Version 1.2.4
написано, что RHEL подвержен, а в оракловом (GNU libc) 2.34 (glibc-2.34-83.0.1.el9_3.7.x86_64) и результат собственномного нулей и Authentication failure
> Это линкер. Лучше так ldd --version. У меня 2.12 и бага нет.
> А на другой тачке 2.36 там есть баг.А можно еще веселее, вот так:
$ /usr/lib/x86_64-linux-gnu/libc.so.6
GNU C Library (Debian GLIBC 2.36-9+deb12u4) stable release version 2.36.
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 12.2.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 3.2.0
...
Некоторые so можно запустать как исполняемый файл. И вот libc6 в этом случае расскажет о себе.NB: этот фокус работает только с SO'шками авторы которых предусмотрели сценарий запуска SO как программы (т.е. сильно некоторыми).
Прикольно. Я знал только про /lib64/ld-linux-x86-64.so.2
У меня так (glibc 2.38):bash: syntax error near unexpected token `exec'
Скобки обязательно./me выключил libastral.so
Linux astra 5.4.0-162-generic
: Сбой при проверке подлинности
> Можно примеры вывода команды в конце статьи на подверженной системе и на патченной?Не подверженная:
```
Password: 00000000000000....ну очень много нулей... 00000001: Authentication failure
```
Нашли, опубликовали, исправили! Молодцы! Работаем, братья!
Допатчились...
поулучшайкали, да.
это больше похоже на нечто умышленное
ну хз... возможно это конкретное нет, оно больше похоже на очередного альтернативно-одаренного по квотам, отрабатывающего корм - но где умный человек прячет лист?(я все еще под впечатлением недавно показанной нам подрывной деятельности некоего рассейского института и кернельных божков-майнтейнеров все это уг принявших как родное)
> я все еще под впечатлением недавно показанной нам подрывной деятельности некоего рассейского института и кернельных божков-майнтейнеров все это уг принявших как родноеКинь намёк, куда посмотреть/что поискать. Интересно.
>> я все еще под впечатлением недавно показанной нам подрывной деятельности некоего рассейского института и кернельных божков-майнтейнеров все это уг принявших как родное
> Кинь намёк, куда посмотреть/что поискать. Интересно.https://www.opennet.me/openforum/vsluhforumID3/132672.html#150
Приняли-то вроде понятно почему. Если бы я наделал в ядре технологических отверстий, тоже принимал бы такое с радостью. Вроде работы ведутся, что-то обнаруживается, исправляется. Можно доверять!
А, во, оно самое.Там все прекрасно - и то что нашли, и то что приняли, и то ЧТО приняли.
Если будете еще какие-то ссылки из того списка открывать - пожалуй, лучше сюда не пишите. Я опасаюсь что за мной придут.
Пока что пришли только за заявившим "нам не нужно создавать чего-то отдельного, это всё-таки линуксовская платформа, но с нашей спецификой".
когда кончатся такие - придут за нетакими.
Хватит уже пессимизировать. Советую поискать сайтенг того кандидата наук безопасности, называющего статанализ верификацией, Lord Kunzite. Моя карма подсунула мне видос с парадом сертификатов типа адвансед Доктор Веб юзер. Когда вот за нетакими придут, надеюсь, покажут по телевизору.
где-то тут какой-то васян спрашивал "иде ж наши скрепные исследования безопастносте в пику этим вражеским" - и ему такое образцовое показали. Я, честно говоря, просто ткнул в первую попавшуюся ссылку из большой простыни, и не рискнул после такого тыкать в еще какую-нибудь. Если даже это просто ретроградный меркурий влияет и все остальные там муха не подкопается, то лучше с такой кармой ничего больше не открывать.Доеду до дома, пришлю еще раз, если сам не найдешь.
> поулучшайкали, да.А что тебе не нравится? Смотри какое улучшение? Была скучная, лажовая вулна. А тут наконец дочинили до полноценного рут доступа. И между прочим если вон там с ipv6 поди еще найди лоха с неходовой версией кернела, да еще в локальной сети (кто бы это мог быть?!) - то вот тут уже более-менее употребительная версия либы, можно и укатать уже куда-нить.
Думаю дыр там еще не мало, пора подходить к вопросу серъезно и выпилить все suid проги и отключить эту опцию
Зато "живой" код, а уязвимости дело житейское, кто их боится
Я боюсьможет вскроют чего и потом что делать?
> исправление неопасной уязвимости привело к появлению критической проблемы.Долбучий случай. Фиксера на мыло.
Fedora 39:su[1085047]: segfault at 5640b4d5c000 ip 00007fa3ed2db3d2 sp 00007ffc02786e28 error 6 in libc.so.6[7fa3ed18a000+160000] likely on CPU 10 (core 5, socket 0)
Пофиксить проблему в Fedora можно так:
sudo dnf upgrade --enablerepo=updates-testing --refresh --advisory=FEDORA-2024-aec80d6e8a
Пакет уже в testing: https://bodhi.fedoraproject.org/updates/FEDORA-2024-aec80d6e8a
Что я и сделал.
> Пофиксить проблему в Fedora можно так:sudo install Arch
Дебианщики однако сработали оперативно - сперва прилетел фикс на либу, а ПОТОМ появилась новость на опеннете.
> При попытке расширения буфера с учётом длинного имени возникает сбой, после которого данные записываются в старый буфер изначального меньшего размера.То есть мы итак понимаем, что имя слишком длинное и знаем длину буфера и функция вернула -1, но мы всё равно запишем данные и продолжим работать вместо perror...
Главное скорость, а не корретность!
"ничего страшного, ну перезагрузит юзер свой комп" (с)
А если подитожить - то стандартная уязвимость дыряшки.
Как показала новость "мы делаем одни и те же ошибки с 97 года")))
Выполнить perror и завершить программу было бы ещё быстрее. Автор исходил из точки зрения "выполнить любой ценой".
> Автор исходил из точки зрения "выполнить любой ценой"."Ценой чего? Ценой рута!"
Интересно, была ли хоть какая-то причина для этого?
Не будем судить строго, чел исправлял другую уязвимость. Хорошо, что заметили. Но что бы мы делали без Qualys?
Я не про это.
Была ли веская причина пытаться выполнить "выполнить любой ценой".
Почему бросить ошибку не вариант?
Куда бросить? Обычно запись в syslog, насколько я понимаю, как-раз идёт тогда, когда возникает ситуация, которую обязательно надо запротоколировать.
В сам syslog записать FATAL ERROR.
>Но что бы мы делали без Qualys?они давно знали про эту багу, с момента патча на CVE-2022-39046.
> Не будем судить строго, чел исправлял другую уязвимость. Хорошо, что заметили. Но
> что бы мы делали без Qualys?Блин, вообще-то лучше бы как раз не исправлял. Это именно тот случай когда "не умеешь - не берись". Ну его нафиг такие фиксы - "а кто сегодня цель, медведь или охотник?!"
Ахаха! Фиксили одну CVE и выпрограммировали еще большую))
Зато успешно бекпортировали в старые версии, молодцы.> данные записываются в старый буфер изначального меньшего размера
И опять out-of-bounds write *facepalm*
Чуток не по теме
Сколько версий glibc может быть в ОС ?
Через ldd выполни любой бинарник.
> Сколько версий glibc может быть в ОС ?Да хоть все, что существуют в природе.
Выше резонно сказали что сколько угодно. Но есть ньюансы по пользованию этого.
Выложите кто-нибудь эксплойт с подстановкой shellcode через nss и да наступет конец света.
Зачем nss, если есть intel me
И любители статических массивов после этого будут сказки про скорость и надёжность рассказывать, ага...
> И любители статических массивов после этого будут сказки про скорость и надёжность рассказывать, ага...При статике будет подверженна только одна конкретня программа, а при шаред - вся система
> Исследователи смогли разработать рабочий эксплоит, позволяющий получить права root через манипуляцию с аргументами командной строки при запуске утилиты su.а не проще так называемый пароль ввести ?
> а не проще так называемый пароль ввести ?Так ты его не знаешь.
А тут ввел условный мусор и хоба! у тебя рут и даже пароль не нужен
> А тут ввел условный мусор и хоба! у тебя рут и даже пароль не нуженТак вот как passkey оказывается устроен! :)
~ % (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
Can't load history: -a: Команда не найдена.Чо?
// Deban 12, tcsh.
Потому что нужно вводить `$ (exec ...`, а не `~ % (exec ...`
> // Deban 12, tcsh.типа похвастался, что в tcsh конкретно эта команда не работает или что? Особо желающие найдут как запустить
Особо желающие как запустить найдут как...Очень особо желающие запустить найдут, будут молчать и запускать когда надо...
Очень очень особо желающие с улыбкой вступят в команду разработчиков и будут внедрять уязвимости на уровне логики и математики, для вида поплёвывая в "гэбню", беря при этом доллер у "црэшни", с которой они конечно-конечно никак не связаны...
Очень очень очень особо желающие пойдут работать в интел и будут дорабатывать их ME...так к чему таки было по tcsh? Там '-a' у exec просто не реализавано и даже если нету баша, то найдется питон, перл или еще чего
> дорабатывать МЕЗадача уже выполнена на 110% как и было изначально задумано :D
Подскажите дистр в котором есть только один пользователь root а то я так переживаю каждый раз читая новости - вдруг пароль забуду а эксплоит ещё не опубликован..
не бойся - сделаешь init=/bin/bash и снова станешь рутом, сесурити и юзабилити!
У меня один вопрос - зачем glibc превратили в помойку из разнородных разнообразных функций какого попало назначерия вместо того, чтобы быть каждая отдельная предметная область (syslog, sjlj, l10n, DNS, сокеты, aio, сигналы, парсинг командной строки, парсинг и инициализация вектора дополнительной информации процесса, конверсия кодировок, нестандартная работа со строками, IPC, sysconf, SystemTap, etc... SystemD-хэйтеры, что с лицом?!) была в отдельной независимо обновляемой и подменяемой либе, а в glibc оставить только стандартную библиотеку языка Си?
Glibc, кроме Сишной стандартной библиотеки, также должен поддерживать Позикс-стандарт. Ну да принципе всё! Ах да ещё есть ГНУ-тые нестандартные библиотеки - ну это сам понимаешь святое. Тем более, что в будущем некоторые ГНУ-тые расширения могут стать частью Сишной стандартной библиотеки.
>также должен поддерживатьКому должен? Что мешает порвать на много библиотек по конкретным задачам, и просто прописать их общее имя симлинка в зависимостях? Тогда динамический линкер их всё равно прилинкует - в ELF не указано, из какого ELF-файла должен быть импортирован символ.
Есть свитые вещчи, которые нельзя трогать. POSIX-стандарт, Стандартная библиотека чистаго Си, библиотеки GNU, UNIX-уэй, Строгый копилефт.
Да я знаю. Давно пора вынести из мавзолея.
в итоге будет то же самое, но разнесённое на кучу блоков, связанных между собой
Эти блоки хоть можно по одному step-by-step и с выбором реализации конечным пользователем
1. отдельно друг от друга обновлять
2. на раст переписывать.
3. кричать, что мэнтейнеры занимаются глупостями и строгают сотни пакетов
Количество пакетов — не проблема, если их сборка идоставка автоматизированы.
да это у некоторых местных конечных пользователей какие-то проблемы с тем, что в дебиан дробят пакеты (как пример)
Что бы вместо Linux было GNU/Linux и настоящая свобода - линковаться только с идеологически верной libc.so
bash: syntax error near unexpected token `exec'
man bash. Пробел между $ и ( не нужен.
пробел там между приглашением баша ($) и командой, работает оно и без него
>Исправление уязвимости включено несколько часов назад в кодовую базу Glibc и войдёт в состав завтрашнего обновления Glibc 2.39, наряду с исправлением ещё двух уязвимостейДоживите "до завтра". Как страшно жить!
'root' заблокируй, что уже давно и рекомендуется. И тогда при запуске утилиты `su` ничего не произойдёт сегодня и завтра, и никогда. Use doas/sudo, Luke.
sudo su -s /bin/bash
блокировщики хреновы...
> 'root' заблокируй, что уже давно и рекомендуется. И тогда при запуске
> утилиты `su` ничего не произойдёт сегодня и завтра, и никогда. Use doas/sudo, Luke.А как там ваш sudoedit поживает? Уже все CVEшки отловили - или еще добавки ждать? При том это - вот именно вулны - именно в sudo, а не.
И кстати sudo так то тоже suid'ный бинарник, если что. Только еще пару крутых CVE недавно подогнал.
Инструментарий работы со строками и вообще с буферами в сишке просто отвратительный. Требует от разработчика держать в голове кучу условий, что в итоге приводит к появлению уязвимостей.Сколько бы у человека не было опыта в сишке, он всё равно рано или поздно запишет что-то за пределы буфера и войдёт в анналы истории. Это подтверждается тем фактом, что подобные уязвимости находят в совершенно разнообразном софте: от хипсторских поделок из желудей, до творений прожжёных хакеров с 50 годами опыта.
Поэтому нельзя сказать, что дело исключительно в прокладке между креслом и клавиатурой. Тут дело в самом языке программирования. Как бы кому такой вывод не нравился.
> Тут дело в самом языке программирования.в земных условиях нет ничего идеального, закроют софтовые дыры - начнут аппаратные эксплуатировать. Есть два выхода - полностью изолировать компик от посторонних или сделать взлом бессмысленным.
Ты можешь пояснить свою логику? Она для меня звучит так, что если нет ничего идеального, то нет смысла вообще стремиться к идеалу, можно расслабиться и не париться о багах вообще. Выглядит глупостью, да? Вряд ли же ты такой глупый, откуда и вопрос: ты можешь пояснить свою логику?
> Ты можешь пояснить свою логику?у тебя ложное чувство защищённости от того что ты не пишешь на С
Я не просил тебя объяснять мои эмоции, я просил объяснить твою логику. В своих эмоциях я и без тебя разберусь как-нибудь, а если не справлюсь, у психотерапевта помощи попрошу.
Когда перепишешь всё на расте?
Эээ? А кто говорит про раст?
Может стоит просто взять и в след. версии СИ добавить какие-то улучшения?
Ну типа чтобы язык развивался, а не оставаля на уровне пещерных деградантов, которые за границы массива выходят или буфер переполняют, почти что всегда?Можно даже просто добавить новых функций (split например) чтобы разработчики не велосипедили в каждом новом проекте, а старые оставить ради белок-истеричек "нам нужна обратная совместимость существующего овна с нашим овняным кодом".
А давайте на карбоновый велосипед пришаманим шайтан труба чугунный, чтобы громко громко было и красиво и бас в несколько киловатт нашальника э.
Ну серьезно. И так компиляторы и сишки переростки. Там уровень такой, что далеко не везде и всегда надо проводить проверки и очищать память или проверять буфер.
Сишка именно поэтому и быстра что ненужных десятков действий попросту нет и потому утилизируется не 70% потенциала, а гораздо больше.
Дажа джава может обогнать Си, а ты тут вознамерился воткнуть сложное в ядро. Тогда будет проще сразу переходить на растишку. Но ты в своем уме? Какой раст Линусу в 50 с гаком?
Плюсы и то выглядят слишком сложными. В смысле можно, но нафига?
Ядро работает само по себе.
Там нет функций задействуемых через интерфейс напрямую.
Это клоуны от бога все хотят переиначить. При этом ничего они не написали чтобы было что проталкивать помимо дурной идеи.
> Сишка именно поэтому и быстра что ненужных десятков действий попросту нетТак основная проблема, что некоторых НУЖНЫХ действий тоже нет! О них постоянно забывают!
> что далеко не везде и всегда надо проводить проверки и очищать память или проверять буфер.
Угу, вот эта новость - прям прекрасный пример, что не везде нужно проверять размер буфера, перед тем как в него пишешь)))
Ну и эмэйзин спиид сишки - это миф. Тот же D компилируется в сравнимо быстрый код, если даже не быстрее.
>Тот же D компилируется в сравнимо быстрый код, если даже не быстрее.Доказательств, конечно же, не будет
> А давайте на карбоновый велосипед пришаманим шайтан труба чугунный, чтобы громко громко было и красиво и бас в несколько киловатт нашальника э.Чиво?
У тебя есть велосипед из овна и палок, собранный с помощью синей изоленты, соплей и какой-то матери.
Причем он разваливается постоянно, уязвимости находятся чуть ли не каждую неделю.> Сишка именно поэтому и быстра что ненужных десятков действий попросту нет и потому утилизируется не 70% потенциала, а гораздо больше.
Конечно, она утилизирует 146% потенциала, где в добавок к 100% прилетают уязвимости, куча CVEшек с получением рут, святая троица ошибок "use after free + out of bounds + double free".
И это продолжается уже 30+ лет!> Тогда будет проще сразу переходить на растишку. Но ты в своем уме? Какой раст Линусу в 50 с гаком?
И что? Если (а точнее когда он помрет) вообще разработка прекратится?
Нет, просто будет другой менеджер или даже несколько, если такого крутого не найдут.> Ядро работает само по себе.
Как оно работает хорошо видно по кол-ву CVE, которые живут в ядре годами.
> Это клоуны от бога все хотят переиначить. При этом ничего они не написали чтобы было что проталкивать помимо дурной идеи.
Не, давай просто оставим как есть. Просто ляжем в болото и будем медленно тонуть под тяжестью кода. Это же так просто!
Зато разработчики ядра будут заняты и без работы не останутся.
Вы правы, сам язык трогать смысла особого нет, но можно расширить анализатор и добавить правила управления переменными и видимости. Получится как Раст, только С.
Нафигачить кучу макросов для управления видимостью, границами и т.п.
И тогда бы количество уязвимостей стало куда меньше.
Нет, нужно все снова переписать.
Так думаю и сделают в итоге, а переписывать никто в своем уме не станет, если деньги не чужие. Вон одни уже хотели переписать на модно-молодежный, потом удивленно "а чего это такой эстимейт большой?" Экономический фактор никогда не нужно недооценивать. Так что жить нам всем с Сишкой еще долго, но обновить ее требуется.
>Может стоит просто взять и в след. версии СИ добавить какие-то улучшения?Так уже сделали, назвали C++
Там всякие умные указатели, векторы, деструкторы
Получился небезопасный, переусложнённый, неудобный, плохо совместимый (например код с STD компилирующийся на одном компиляторе не работает на другом) гибрид
И это следующая версия Си называется Раст.
Скрее Zig или Vlang, он лучше совместим с Си.
000...0000000000001: должен запускаться из терминала
Си -- это такой же анахронизм как и ручное управление зажиганием и стеклоочистителями в автомобиле. Явно же видно что язык давно перестал отвечать требованиям времени, сколько можно за него цепляться? Отпустите сишку, она не вернёт вам вашу молодость!
Только вот модные молодёжные языки никаких проблем не решают, только добавляют новые.
Конечно, решают. Каждый в своей области применения.
И добавляют тоже в своей области применения.
О, хороший пример.
Помню как мне втирали что "ненужОн мне ваш abs и esp! я сам могу осуществлять прерывистое торможение!".
Или "зачем мне кондиционер, с ним расход больше! у меня окошко есть"
в моей машыне нет абс ёпс и конь диционера
ЧЯДНТ?
> в моей машыне нет абс ёпс и конь диционераДумаю подушек у тебя тоже нет.
Ну, можешь еще ставить заглушку вместо ремня и сделашь доброе дело для всего мира))
Ты подвергаешь риску свою жизнь, жизнь твоих пассажиров и жизнь других участников движения. Думал, это очевидные вещи. Ан, нет.
На КраЗе ездишь? Все так."Конечно у него есть дворник - прекрасный дворник, отлично справляется со своей задачей - смахнуть пригоршню-другую щебенки, просыпанную экскаватором на лобовое стекло. У него даже есть зеркала - в них видно примерно тот самый экскаватор, чтоб сдавая задом в него не приехать." (c)
Только, пожалуйста, не езди по Ленинскому, как тот чувак что оставил эту замечательную памятку.
В карьере - да пожалуйста. Где-нибудь в северной Якутии кондиционер и правда без надобности.
Си - это кроссплатформерный ассемблер. Ассемблер тоже предлагаешь отпустить? Там и за границы буфера можно выйти и dword переполнить.
На ассемблере большие сложные программы не пишут (разве что ради удовольствия или образования). Так, отдельные вставки могут быть. Почему? Потому что компилятор чаще даст лучший код, чем кожаный мешок.Си - да, кроссплатформенен. Но это единственное его достоинство на сегодняшний день. Которое никак не оправдывается теми багами, которые он плодит. Почему? Потому что если говорить о сложном критически важном софте, подобные баги дорого обходятся для пользователей.
> Си - да, кроссплатформенен.низкоуровневый код на нем - внезапно, нет.
А даже когда получается кроссплатформенный - посмотри на досуге КАК пишутся его куски, рассчитанные на оптимизацию для современных процессоров без интрисиков. У интела где-то были прекрасные образцы на тему. Там a) "что за чушь?! ЧТО ЭТО ВООБЩЕ тут написано?" b) ну разумеется оно будет иметь безумную неэффективность на всем кроме того под что написано - и только в том компиляторе который угадает что это безумие - обращение к нему для оптимизации.
Просто так банально меньше колотить по кнопкам и меньше места для ошибок, сюрприиз.
И только для этого и придумывали Си. А критически сложный и важный софт можешь писать на аде. Только это точно будут не операционные системы. И вообще скорее всего что-то очень и очень примитивное.
И да, вояджер-1 таки повис и ресет не помог. Послали русского ванью побить сапогом по корпусу, но он на веслах еще нескоро за пределы солнечной системы догребет.
А ариан так и вообще й-панула.
Нет, проблема в том, что ее использует там, где нельзя - в прикладе, в системщине и на т.п. высоком уровне. Её место - это ядра ОС. И всё. Когда люди это поймут всем будет чуть лучше жить.
Так в ядре тоже куча уязвимостей, получений рута и дырок.Или под ядром ты имеешь в виду что-то супер миниатюрное, типа seL4?
Ну не больше 10к строк кода, ну чтобы пожно было за вечер все прочитать пару раз.
Но тогда мы придем к микроядрам, а лапчатые их не любят.
Нет, я имею ввиду низкоуровневую работу с оборудованием, где си пока ещё действительно оправдан. Это достаточно узкая ниша.
То есть, драйверы устройств? Уже и там не оправдан.
но сдох почему-то ресдох.
Ну и что? Домашний проект же. Кому какая разница? Кстати, на реальном железе запускается (фотки на сайте есть, можно глянуть).
к сожалению, автоматическое пока не придумали.Точнее, то что придумали - это нечто типа автомагического детектора дождя в стеклоочистителе.
В самый неподходящий момент у тебя перед мордой машут дворники. (а еще он глючит и ломается - и они машут ярким солнечным днем). А дохлую муху ВСЕ РАВНО с-ка надо смывать вручную!Т.е. система стала на два порядка сложнее (вместо примитивной механической включалки и движка - куча датчиков и электроники) а результат как бы не отрицателен.
То же самое с модными современными язычками. Написать что-то работающее - труд нечеловеческий, потому что вместо кода ты бегаешь от борова. А там где надо работать с данными извне (тот самый источник уязвимостей) - unsafe { мамой клянус что безопастно }
Претензии не языку высказывайте, а некоему фон Нейману, в гарвардской архитектуре не было бы проблемы. Ну правда и современных компьютеров, скорее всего, тоже. Сидели бы и придумывали сейчас, как между тридцатой и тридцатьпервой перфокартой втиснуть еще одну проверку и чтоб все 200 следующих не перебивать заново.
Во всяком случае пока никто не придумал процессор, умеющий хотя бы оперировать - строками. Как адепты модных язычков любят - чтоб гарантированной длинны и все такое. Нет, зараза - все норовят null terminated byte sequences вместо них сделать.
> к сожалению, автоматическое пока не придумали.На заре автомобилизма "дворники" приходилось приводить в движение буквально руками -- вращением рукоятки. А то что под "автоматическим управлением" подразумеваете вы, это уже что-то вроде генерации кода программы с помошью ИИ по описанию задачи, и до этого вероятно действительно ещё далеко. Хотя вот например автоматические КПП уже давно и довольно неплохо научились справляться с переключением передач без вмешательства водителя.
Пора уже переходить на musl похоже.
Вот тебе и glibc!
$ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
-bash: синтаксическая ошибка рядом с неожиданным маркером «exec»Напишите как еще можно ввести команду что бы не получить
>> с неожиданным маркером «exec»
доллар убери
> доллар убериТак у него backspace поломан доходит то доллара и усё...
Чтоб убрать долар переведи его на кошелек 43f756fed6f1f24d3e87e34a783240a3
Уязвимость не работает.
Пришлось так ввести показало сетку нолей в терминале и закрылся терминалexec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null
Я об этом и говорю, сегфолт есть, а рута нет.
Да кто ж вам эксплоит выложит на публичном ресурсе, когда сервера еще могут быть не патчены?
Чего делать написано
> Далее переполнение можно использовать для перезаписи структуры nss_module в библиотеке nss для создания разделяемой библиотеки и её загрузки с правами root.дальше сами нагрузку придумывайте или покупайте
> Я об этом и говорю, сегфолт есть, а рута нет.Вы там точно нормальны? Это демонстрационная версия - вызывающая крах, если вулн был. Вы что, хотели получить "боевую" версию эксплойта и все расхакать? Вот прям в новости на опеннете?
А чо нет-то? Во времена когда трава была зеленее, правда, было принято иногда добавлять в shellcode немного отсебятинки перед такой публикацией - ну там коннект на свой сервер и еще один шелл к сокету прицепить, а то ж чего добру пропадать - васяну все равно его комп ненужен если он там такое запускает.
эксперты опеннета даже башем пользоваться не обучены.Тебе там скобочки в оригинале специально нарисовали чтоб терминал не закрывался.
Но вы ж эксперты, вы даже bash не осилили.
>>Тебе там скобочки в оригинале специально нарисовали чтоб терминал не закрывался.Но вы ж эксперты, вы даже bash не осилили
И че сделал в скобочках(exec -a "'printf '%0128000x' 1'" /usr/bin/su < /dev/null)
Пароль: 'printf '%0128000x' 1': Сбой при проверке подлинностиА , понял это я брал с канала с этого канала https://www.youtube.com/@griggorii и он как я понял собирает собственные glib и все остальное с mesa
$ (exec -a "`printf '%0128000x' 1`" /usr/bin/su < /dev/null)
Пароль: malloc(): invalid size (unsorted)
Аварийный останов (образ памяти сброшен на диск)Это уязвимость есть или ее нет?
Есть
Это - есть.(еще один эксперт опеннета на наши головы - но этот хотя бы правильный вопрос правильно задал.
Почти правильно. Пожалуйста, на будущее, ставь LC_ALL=C перед тем как скринить вывод.)
> еще один эксперт опеннета на наши головывнуки ваши :)
Про чистый Си ходит много легенд. Один из них то, что "на нём пишут диды". Не совсем.Про русских. Русское старичьё никогда не изучало чистый Си. Они все, в 90-е начинали с языка Си плюс-плюс (так называемый ранний диалект - "Си с классами"). Операционкой у них был DOS или Windows 95 c компилятором Борланд_Си. Чистому Си никто их не учил, если они и учили, то процедурный коду на Си плюс-плюс. На чистом Си может быть писали единицы, в советские времена, в специальных НИИ. В те времена, у них вместо монитора был транзисторный телевизор, а вместо операционки какая-нибудь локализованная версия коммерческого ЮНИКС. У русских были и краденные ЮнИКСы например, ОС ДЕМОС. Если русский и ностальгирует, то не по чистому Си, он ностальгирует по языку "Си с классами", который придумал Бьёрн Страуструп.
Про Мир. На самом деле поток желающих писать чистом Си никогда не прерывался, по разным причинам. Как-то само собой получалось, что этот язык изучало каждое новое поколение. Мне кажется людей притягивала простота языка. Когда Линус говорил, большинство пишуших ядро принадлежит к старщему поколению - это часть правды. Многие молодые люди знают чистый Си, но не умеют или не хотят программировать драйвера ядер ОС. Чистый сишник- это не обязательно программист встроенных устройств. Реальная картина на самом деле сложная.
Специально для тебя нашёл (на stackoverflow, кто бы мог подумать) пример из реального мира:
int main()
{
unsigned long c, c2, p2, pol = 0xEDB88320;
long n, k;
{
printf("CRC32 Adjuster (c) 2001 by RElf @ HHT/2\n");
printf("Length of data: "); scanf_s("%ld", &n);
printf("Offset to patch: "); scanf_s("%ld", &k);
n = (n - k) << 3;
printf("Current CRC32: 0x"); scanf_s("%x", &c);
printf("Desired CRC32: 0x"); scanf_s("%x", &c2);
c ^= c2;
p2 = (pol << 1) | 1;
while (n--) if (c & 0x80000000) c = (c << 1) ^ p2; else c <<= 1;
printf("XOR masks:%02X%02X%02X%02X\n", c & 0xff, (c >> 8) & 0xff, (c >> 16) & 0xff, c >> 24);
}
return 0;
}
Кстати, именно на публикации вот такого в своих книгах КК заработал O-1, а ты даже не знаешь, что это.
Красивое...
А вы продаете или только на визы меняете?
тааак, я бы попросил. Когда я учил Си по известной в узких кругах книжке - никакого этого вашего борланд еще в помине не было (а когда и появился то был turbo ЦЫ и тоже не про плюсы... драйвер на таком написать - ну надо было сильно в оппу дать... а потом до нас добрался ms c который тоже для драйверов был не оч, но хоть не падал по внутренним ошибкам на валидном коде)Коммерческих юниксов тогда тоже не было, точнее был всеми давно забытый venix, но я хз кто им на самом деле пользовался а не просто - уууу аааа так бывает. Просто потому что не было ни у кого железа на котором их можно было запускать - КОКОМ не велел (помнишь такого зверя?)
ДЕМОС (вместе с инмосом и ипкминавтопрома без названия) были ни разу не крадеными, оригинал просто не запускался из-за мелких отличий СМ-4 от PDP которую она косплеила. И относились к оригиналам (которых еще и было больше одного) примерно как запоржопец к фиат600 (последние до сих пор где-то ездиют, а к первому двадцать лет назад на всем харьковском рынке не нашлось бензонасоса) - общее что-то конечно угадывается, но детали не подходят.
> остальгирует по языку "Си с классами"
не знаю кто по нему может ностальгировать. Он сам по себе может и был ничем особо и не хуже обычного Си, но та единственная реализация имени борланда которая массово дошла до местных потребителей была совершеннейшим п-цом. Если кому-то и удавалось доводить на нем свои проекты до рабочего состояния, то вряд ли он будет счастлив это вспомнить.
Не надо «про всех», я на Дт3-28 Си учил. А там ОС клон PDP-11. По книжке К&R. «минус один» - это уже не «все».
В убунте LTS нет уязвимости. Там glibc 2.35-0ubuntu3.6.