В поставляемом в ядре Linux драйвере для файловой системы exFAT выявлена уязвимость (CVE-2023-4273), позволяющая при монтировании специально оформленного раздела (например, при подключении вредоносного USB Flash) добиться переполнения стека и выполнения своего кода с правами ядра. Проблема пока устранена в экспериментальном выпуске ядра Linux 6.5-rc5. Проследить за исправлением в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch...Подробнее: https://www.opennet.me/opennews/art.shtml?num=59664
> например, при подключении вредоносного USB Flashесли в системе возможно что кто угодно может подключать и тем более монтировать внешние USB устройства то тут априори плевать на уязвимости - стоило из этой ерунды новость делать ? Фря многие годы падала от USB.
За пределами сервера тоже есть жизнь. В которой люди втыкают флешки в ноутбук, например.
> За пределами сервера тоже есть жизнь. В которой люди втыкают флешки в ноутбук, например.боишься получить права админа на своём ноутбуке? если твой секретный ноутбук попадёт в чужие руки считай секретов больше нет и без вредных флешек.
это зависит от того, где в это время *твои* руки. Если улетели другим самолетом вместе с задницей и прочими важными частями, а ноут просто сп-ли пока ты в сортир бегал - то без вредных флэшек и с шифрованной фс желаю всяческих узбеков.А с флешкой неожиданно все твои данные - не твои.
А вот если твои ручки слегка прижаты дверью в кабинет товарищмайора - то, конечно, секретов больше нет - даже если ты ноутбук успел съесть, или у тебя вообще его никогда не было.
> без вредных флэшек и с шифрованной фс желаю всяческих узбековзашифровал фс на секретном ноутбуке а возможность внешние устройства подключать оставил для бэкдоров, какой хитрый секретчик!
он не секретный а мой личный, и это не повод кому-то быстроногому воровать оттуда содержимое, даже если он сумел спереть сам ноут.А внешние устройства, внезапно, мне надо подключать. И большинство из них сегодня - exfat.
> А внешние устройства, внезапно, мне надо подключать.внезапно можно ограничить доступ к USB портам чтобы только ты мог подключать что-то, может у тебя и вход без пароля с шифрованным диском ухахаха
> И большинство из них сегодня - exfat.
и ты делаешь имена больше 255 символов чтобы жизнь мёдом не казалась? Ну и масленица, даже для заманухи в названии порно сложно придумать такие.
> внезапно можно ограничить доступ к USB портам чтобы только ты мог подключать что-толол.
Можно, очень теоретически, и переписав пол современного линoopsа. А на практике - для возни с поврежденными дисками по прежнему нужна либо система начала 2000х, ничего сама не пытающаяся за меня угадывать, но и "десктопом" ни разу не являющаяся, либо...правильно, винда.
Иначе за тебя не то что usb на физическом уровне подключат (интересно как ты "ограничишь доступ" к тому что работает в железе автоматом) но и шибкоумный udisk полезет "пробовать" - и напробуется.>> И большинство из них сегодня - exfat.
> и ты делаешь имена больше 255 символов чтобы жизнь мёдом не казалась?я не сделаю - сделает другой васян. И внезапно станет рутом на моем ноуте. Оно вот мне надо?
> интересно как ты "ограничишь доступ" к тому что работает в железе автоматомзаблэклисти модуль для своего контроллера USB или usb-storage и его никто не запустит кроме тебя даже пулемётом
Тогда и я тоже не запущу. И зачем мне такое щастье, мне вон краденую базу юзеров надо срочно на флэшку, пока ИБ спит.
> Тогда и я тоже не запущу.sudo modprobe не сможешь написать? Хотя это топорно - можно usbguard использовать
https://www.cyberciti.biz/security/how-to-protect-linux-agai.../
> краденую базу юзеров надо срочно на флэшку, пока ИБ спит.Вопрос к ИБ:
"А как сделать так, чтобы пох не смог скопировать базу на вставленную флешку, даже имея рута, даже имея флешку с белого списка (https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices) ?
а он воспользуется 0-day и повысит привилегии. Не катит
Только постоянно включенная камера, захватывающая экран и затылок. И 20 лет колонии за лишнее телодвижение
> А как сделать так, чтобы пох не смог скопировать базу на вставленную флешку, даже имея рута, даже имея флешку с белого спискалечить от клептомании чтобы сам у себя не воровал, думаю сотни киловольт будет достаточно. А в общем случае иметь гипервизор с ортогональной системой безопасности.
Был такой дистрибутив Алт не помню версию,с системой безопасности RSBAC.Там было ролевая мандатная система безопасности.Вот там можно было обладая root получить по рукам от "офицера" по безопасности за попытку доступа к конфиденциальным документам-сразу (если так настроено)поднималась тревога и комп блокировался..
> с системой безопасности RSBACRBAC от grsecurity https://en.wikibooks.org/wiki/Grsecurity/The_RBAC_System может и может создать такие правила, но надо долго думать.
Имею ввиду простую, примитивную технику защиты, которая разрабатывалась для общей безопасности, но в текущей реализации, как побочный эффект, не даст root скопировать файл на флешку.
root имеет полный доступ к копируемому файлу, а вот на флешку скопировать его не сможет.
Включается
# sysctl kernel.???=1
> за тебя не то что usb на физическом уровне подключат (интересно как ты "ограничишь доступ" к тому что работает в железе автоматом) но и шибкоумный udisk полезет "пробовать" - и напробуется.
По ссылке какая-то давно протухшая чепуха от grsec.
> По ссылке какая-то давно протухшая чепуха от grsec.С неких пор в майнлайне тоже появилась опция цеплять только авторизованые девайсы. По дефолту обычно все девайсы считаются авторизоваными, но это конфигуряемо.
Раздел от grsec можно пропустить, он дан для информировании об альтернативах.Для реализации защиты от вражеских USB используется только udev (eudev).
https://wiki.gentoo.org/wiki/Allow_only_known_usb_devices#eudev
>мой личныйСлово пацана даете?
Владимир
>> приводит к переполнению стека ядра
> не повод кому-то быстроногому воровать оттуда содержимоеА почему у тебя стек ядра должен быть исполняемым?
потому что так придумал Фон Нейман, а попытки героически победить универсальность памяти - каждый раз заканчивались мертворожденными архитектурами и глобальными факапами.Стеку, как раз, необязательно даже быть исполняемым, если мы можем в него писать что попало - мы напишем туда адрес возврата куда-нибудь в нужное нам место (и с параметрами которые именно со стека и берутся).
Компьютер так устроен, дорогой наш школьничек.
> потому что так придумал Фон Нейман, а попытки героически победить универсальность памяти
> - каждый раз заканчивались мертворожденными архитектурами и глобальными факапами.В чем глобальный факап с атрибутами памяти MMU? И да, это работает. Просто не всегда халявно и сильно некоторый софт ну вот натурально хочет W^X нарушать. За что его безопасники не любят и Кент на этой почве откушал интересных коментов.
> Стеку, как раз, необязательно даже быть исполняемым, если мы можем в него
> писать что попало - мы напишем туда адрес возврата куда-нибудь в
> нужное нам место (и с параметрами которые именно со стека и берутся).А таки там могут быть канарейки или guard page даже. А ROP в общем то неплохо воркэраундится.
> Компьютер так устроен, дорогой наш школьничек.
Устройство компьютера вообще совсем не обязывает все это быть уязвимым. Это ниоткуда не следует при нормальном лэйауте памяти.
ты хочешь сказать что они втыкают флешку в ноут и она сразу доступна? То есть никто не ставит usbguard и ему подобные? Серьезно? Есть такие люди?
Подключили комп к интернету - считайте, что ваших данных уже нет.))) Сель ави.
> Фря многие годы падала от USB.Звучит... академично.
И поэтому она круче этих ваших линуксов! Вотъ!
>> Фря многие годы падала от USB.
> Звучит... академично.Звучит, как тот анекдот "Не Мерседес, а велосипед, не в лоторею, а в карты ...". Тем более, рута тем способом было не получить.
Но это ж опеннет - "мы все так говорим (и прилежно повторяем), а значит это правда!"(с)
> кто угодно может подключать и тем более монтировать внешние USB устройстваНу это вы, может быть, у себя в системе «кто угодно», а я один тут, нет больше никого.
> может быть, у себя в системе «кто угодно», а я один тут, нет больше никоготы что дикарь ломающий сам себя? при установке же тебе дают полный доступ к системе.
Да я и на винде UAC отключаю сразу.
Т.е. фрю ты тоже не видел много лет
> Т.е. фрю ты тоже не видел много летфря ща рулит
Где?
там linuxtalks.co
> http
> сайт небезопасен
> 502 Bad GatewayЧего и следовало ожидать
>> http
>> сайт небезопасен
>> 502 Bad Gateway
> Чего и следовало ожидатьУМВР
ах-ха-ха, сходил. Повеселил, спасибо
> ах-ха-ха, сходил. Повеселил, спасибоТы не все видел. 😏
ну да ну да)
в ядре линухов фейл а приплести надо фряху)
Ну да, ну да - гораздо удобнее ведь не уметь читать exfat вообще.
Нет флэшек, нет проблемы.Ах, да... есть еще вот такое вот: /usr/ports/sysutils/fusefs-lkl
Что это, Бэримор? А это порт линуксного ведра в юзерспейс. sic! Через Fuse умеющий читать почти любые фс которые вообще умеет линукс. Наверное и exfat тоже можно. И внезапно баг из ведра линукс превращается в баг во фре.
Что за бред?
фря обычно падала если выдернуть не отмонтировав флешку и правильно - нефиг дергать
Линукс с ядрами 2.2 вроде также себя с дискетами вел
> и правильно - нефиг дергатьТак себе решение. Лучше 220 В подвести к стулу.
> но при запуске в обычном окружении, работающим поверх оборудования, вероятность срабатывания снижается до примерно 50%Получается, что в некоторых случаях придется несколько раз флешку передернуть?
@ Рассказ про флешку которая сжигала usb порты @
> @ Рассказ про флешку которая сжигала usb порты @Не такой уж это и рассказ, "usb killer" вполне реальный проект - даже со схемой и всем таким. Вместо флеша содержит банк конденсаторов, который заряжает до сотни вольт и спускает в линии D+/D- юсбхи. От чего в вашем чипсете может образоваться небольшая дырочка. Так что втыкать найденные флешки куда попало, не проверив что сие - чревато сюрпризами. Как одна из причин эта штука появилась для обучения "несунов" которые "заимствуют" забытые коллегами флешки хорошим манерам. Весьма дорогостоящим для адресата способом.
Помню хайп вокруг этого usb killera. Удивило, насколько многих поразила сама возможность физического повреждения порта. Дети познают мир, блин.
Под AMD FX были дешёвые материнки с буквально одноразовыми USB портами. Вставляешь обычную флешку, поработал, достал - порт мёртвый. И так пока у кролика совсем всё не закончится, ну или отдельную плату USB поставить. Сами эти "убивающие" флешки и до, и после работали везде без проблем.
> Под AMD FX были дешёвые материнки с буквально одноразовыми USB портами. Вставляешь
> обычную флешку, поработал, достал - порт мёртвый. И так пока у
> кролика совсем всё не закончится,У интела лучше было - защиту от статики на порты в очередном интелском чипсете почему-то не сделали вообще, а внешнюю ставить она денег стоит, производители мамок зажались. В лучшем случае выгорал порт. А если не повезло то в чипсете от разряда статики образовывалась дырочка и мамка превращалась в тыкву целиком.
Где-то рядом и факап с подключением начинки SATA не на тот вольтаж. Как живой но через некоторое время транзисторы склеивали ласты от локального перегрева и порт работать переставал к бурной радости владельца этой штуки.
Ващето АМД это святая корпорацыя и делает все для народа!!!
Вот послушай лучше историю как однажды в Интел молния попала...
А я флешку не могу передёрнуть, она у меня на ps/2, так как на линукс более-менее приличная поддержка только этого разьёма и ЦП не встаёт дыбом при перемещении той же мышки на USB.
> Проблема пока устранена в экспериментальном выпуске ядра Linux 6.5-rc5.В stable ядрах это исправлено пару выпусков назад (v6.4.10, v6.1.45 и т.д.).
Да чтож такое то. Опять размеры данных при копировании не проверяют.
Скоро они начнуть ныть что это не "неправильные сишники" и "студентота со школьниками набижала заместо Настоящих Погромистов", а вредители-растоманы внедряются в компании под видом си-разработчиков и специально устраивают диверсии, дискредитируют Божественный Язык всеми этими намеренными выходами за пределы буфера и т.п.
Так кто мешает в Си внедрить FAT Pointer и Slices с проверками?
Писал как-то в коммитет с вопросом относительно замыканий и деферов
так там такое засилье нытья началось что мол язык устоялся ничего менят не нужно
Да можно много чего внедрить, Rust получится.
> Так кто мешает в Си внедрить FAT Pointer и Slices с проверками?
> Писал как-то в коммитет с вопросом относительно замыканий и деферов
> так там такое засилье нытья началось что мол язык устоялся ничего менят
> не нужноВ сабже оно нафиг не надо - там свои фоновые воркеры есть и всякие дефернутые операции. Лучше б написал на тему нормальной работы с struct'ами, культурными типами данных и - аннулировать UB, задефайнив поведение. Особенно для signed int vs математическое переполнение.
Будут рутованы нерутуемые телефоны?
Рутовать то не проблема. Ты анлокнуть попробуй.
А зачем анлокать? Просто сделал kexec() на правильное ядро и наслаждайся себе. Вон мотороллеры так и сидят с залоченым бутлоадером, kexec'ая на развинченое новое ядро. Вынесли древний ведроид, поставили maemo leste или что там им нравится - и оно себе пашет.
ну те нормальный лок на новых аппаратах ты не видел, да...
а с одноразовыми рутами я уже наигрался на своем Гоме К1, спасибо.
> ну те нормальный лок на новых аппаратах ты не видел, да...Ну как бы если kexec прокатил то этому локу будет скорее всего амба, как обычно. Ядро перехватит инициативу и пошлет всю эту буиту в пень. Единственное что может внести коррективы это сотовые модемы и прочие сервисные процы, но тут уж если вы купили кусок бэкдора - ну и чего вы трепыхаетесь тогда?
> а с одноразовыми рутами я уже наигрался на своем Гоме К1, спасибо.
Вон то не одноразовый рут - просто чуть более сложная и костыльная процедура загрузки. Когда часть компонентов таки должны пройти секурбут и прочую верификацию, а в какой-то момент ядру таки догрузят модуль, повысят права и сделают kexec(). Бутлоадер при этом локнутый, ядро которое он запускает - подписанное вендором. А то что оно не очень секурное оказалось и согласно kexec() на другое ядро вообще, отдавая бразды правления "несекурному" ядру - ну, бывают в жизни огорчения. И у разреботчиков секурбутовых схем - в том числе.
p.s. а вы думали режим lockdown в новых кернелах - это что и для кого? Я то для себя им секурити улучшаю, а вас он будет из (не)ваших девайсов выпирать как мне кажется. Когда вроде рут, но вроде недостаточно круто - в физическую память низя, особо наглый трейс ядра низя, и еще ряд потенциально проблемных операций - порубан, во избежание вон того :)
Где прямо сейчас можно за наличку купить а) не древность, б) с обновлениями, в) без "куска бэкдора"?
> Где прямо сейчас можно за наличку купить а) не древность, б) с
> обновлениями, в) без "куска бэкдора"?Как по мне вам стоило бы губозакатывательную машинку купить. Но можно вместо нее и ошейник с GPS и встроенной взрывчаткой, очень удобно для удержания всяких к@злов в оговоренном периметре. Всего лишь шпион-бэкдор недостаточно хардкорно я считаю, даешь активную исполниловку! Дада, и обновление фирмвари OTA - на случай если надо перегнать в новый лагерь, у которого координаты выпаса другие.
Интересный тут список дистров со ссылками на страницы с исправлением. А как же остальные? Mageia Linux где например. Или список составляется в зависимости от предпочтений автора новости в том, что он считает мейнстримом?
Так Mageia Linux тоже мейнстрим. 13 лет как никак разрабатывается.
Да ну что же это такое?! Опять диды размер буфера не проверяют, мол, авось пронесет. А ведь нужно было просто внимательно писать код, без уязвимостей.
>Отсутствие проверки размера при копировании имени файла в буферТипикал сишка, в которой выделение буфера и копирование в него происходит раздельно и вручную. Никаких гарантий, что размеры совпадут нет, всё держится на внимательности программиста. А всё почему? Потому что до сих пор используют язык из 70-х. Позор.
То ли дело в расте — буфер выделить самостоятельно нельзя, копировать можно только обмазавшить unsafe (который делает растишку на порядок небезопаснее си), а потом ещё и надеяться надо что сборщик мусора не забудет память освободить. Уж лучше один CVE в год в никому не нужной функциональности, чем ржавчина в драйверах
Только не раз в год. Тут буквально каждую неделю очередная уязвимость из-за сишечки.
На расте нет никакого кода, в чем искать уязвимости?
В драйвере мигания светодиодиком же ж! Накоси-выкуси, нет там у...ой... а он наполовину только переписаный, остальное сишное - ниасилили. Так что все может быть, вообще всьо.
Звиздуны они такие звиздуны. Обычно дремучие невежды, не желающие вылезать за пределы своего маня-мирка."...In Android 13, about 21% of all new native code (C/C++/Rust) is in Rust. There are approximately 1.5 million total lines of Rust code in AOSP across new functionality and components such as Keystore2, the new Ultra-wideband (UWB) stack, DNS-over-HTTP3, Android’s Virtualization framework (AVF), and various other components and their open source dependencies. These are low-level components that require a systems language which otherwise would have been implemented in C++.
..."
https://security.googleblog.com/2022/12/memory-safe-language...Там тебе перечислены (далеко не все) компоненты андроида на расте, но для "икспертов" "никакого кода нет". Это не считая других проектов других копрораций, назначение и полезность которых для тебя будут так же понятны, как муравью будет понятен и полезен запуск очередного спутника на орбиту.
Растаманы такие растаманы. Сколько там unsafe подсчитали? И это сколько системного кода, на которых ОС пишут на расте.
А зачем считать unsafe? Лучше посчитать сколько строк кода стало safe!
В расте нет сборщика мусора.
И это в 2023 году, позрор.
> То ли дело в расте — буфер выделить самостоятельно нельзя, копировать можно только обмазавшить unsafe (который делает растишку на порядок небезопаснее си)Выделил:
let a = vec!["foo", "bar"];
Скопировал:
let b = a.clone();
Что я делаю не так? :D
Это неправильное копирование, проприетарное! Вот раньше матерые сишники копировали как надо, правильно, не то что сейчас. Раньше компилятор видел код и понимал, код написан матёрым сишником, флаг у себя ставил, matyoriy_sishnik = 1, программа компилировалась очень быстрой, памяти потребляла 2 килобайта, а бинарь на жёстком диске весил отрицательное количество байт, места становилось больше.
> Это неправильное копирование, проприетарное! Вот раньше матерые сишники копировали как
> надо, правильно, не то что сейчас.А оно что, как соседний макрос, только в бинарниках работает? И это вообще катит в линухе то, в кернеле?
А что до отрицательного количества байтов, китайцы почти воспроизвели эту древнюю магию, когда 2-гиговой флешке прописывается терабайт свободного места. Первые 2 гига она даже нормально хранит потом, а потом либо шах, либо ишак... :)))
> Выделил:
> let a = vec!["foo", "bar"];молодец, скоро в первый класс возьмут.
> Что я делаю не так? :D
не понимаешь что в основном мы работаем с данными из _внешних_ источников, и никакого заранее определенного foo там нет, и сколько и чего ты сейчас прочитаешь - ты узнаешь только прочитав, причем с нескольких попыток.
Судя по уровню твоего непонимания - дальше первоклассника ты действительно не продвинулся - зато замысловатый синтаксис, смотри-ка, зазубрил.
Иии..? Тебе рассказать как Vec::reserve() и Vec::push() работают или ты сам сможешь прочитать документацию?
написал-стер. не надо мне рассказывать твои уроки, первоклашка.Я бы мог, конечно, спросить тебя причем бы тут реальная задача и описать ее в деталях (хотя претендующий на сокровенное знание должен сам уметь) но там слова "стек", "фиксированный буфер", "время жизни" и прочие непонятные тебе материи. Продолжай копировать векторы, у тебя хорошо получается и тебя точно возьмут в модный современный около-финтех. А в системном программировании вреда от таких никакого потому что они ничего и не смыслят в нем. Только драйвер моргания лампочкой переписали, но почему-то не весь.
> Я бы мог, конечно, спросить тебя причем бы тут реальная задача и описать ее в деталях (хотя претендующий на сокровенное знание должен сам уметь) но там слова "стек", "фиксированный буфер", "время жизни" и прочие непонятные тебе материиТы определись уже, ты хочешь фиксированный буфер или память выделять :D
>> Я бы мог, конечно, спросить тебя причем бы тут реальная задача и описать
>> ее в деталях (хотя претендующий на сокровенное знание должен сам уметь) но там
>> слова "стек", "фиксированный буфер", "время жизни" и прочие непонятные тебе материи
> Ты определись уже, ты хочешь фиксированный буфер или память выделять :DА вы там как, определились уже что делать при allocation failed кроме как уронить всю ОС в панику? Хакеры при этом конечно обломаются, но проблема в том что обломаются не только хакеры.
try_push, зацени как это в ядре используется
> try_push, зацени как это в ядре используетсяДа офигеть, переизобрели сишшку прямо из раста. Заодно и узнали нафига сишка вот такой был :)
> Да офигеть, переизобрели сишшку прямо из раста. Заодно и узнали нафига сишка вот такой был :)Эээ... они просто добавили обработку фейлов аллокатора. Сишка как была всратой, так и осталась.
Один?? Ахаха!
В сишке очередная дырень по памяти каждые две-три недели!
Причем хорошо если одна))
Почитай, только внимательно, полностью и не по диагонали, какой эффект дает внедрение раста в андроид с точки зрения ошибок работы с памятью:https://security.googleblog.com/2022/12/memory-safe-language...
Развивайся и вылезай из пещеры.
Ты сам, главное, как из пещеры выберешься - попробуй узнать, каков штат сотрудников у гугла. С такими ресурсами они могут бищапащный код хоть на ассемблере ваять.
С чего это unsafe делает раст на порядок небезопаснее си? Си он прям весь unsafe с начала и до конца.
> Типикал сишка, в которой выделение буфера и копирование в него происходит раздельно
> и вручную. Никаких гарантий, что размеры совпадут нет, всё держится на
> внимательности программиста. А всё почему? Потому что до сих пор используют
> язык из 70-х. Позор.В данном случае позор - то что кнутователи из самса на 1 несчастного кодера навесили 3 проекта в который так то на каждую из галер по десятку гребцов надо. Ну он и гребет как умеет на три галеры. Так и ариан на аде - разложится о небесную твердь, чудес не бывает. ЯП не спасет от откровенно перегруженного проектами кодера, на которого впихали 2 файлухи и ядерный SMB сервер.
> В данном случае позор - то что кнутователи из самса на 1
> несчастного кодера навесили 3 проекта в который так то на каждуюА кнутователя выделили только одного. Надо кнутовать втрое сильнее - тогда он точно будет все делать быстрее и лучше!
> А кнутователя выделили только одного. Надо кнутовать втрое сильнее - тогда он
> точно будет все делать быстрее и лучше!Да, еще пару файлух ему. Erofs там какой или что там модно. И вон там господа упиравшиеся с lockdown всяким обнаружат что за@$ный галерщик все их потуги аннулировал и телефоны как рутовали так и рутуют :)
вот когда твой ржавый "язык" позволит реагировать на подобное:*((char*)0)=5051
тогда и раскрывай рот на сишку. Я ржавого не знаю конечно и знать не хочу, но ответ предвижу
И как ты предлагаешь на это реагировать? Писать "убейся об стену, г0внок0дер" и форматировать диск?
Вообще почему раст должен реагировать на дыряшку?
а что ж вы тогда ансейф кодом обмазываетесь? А реагировать надо бы каким-нибудь каллбеком на эту ситуацию... Сишка такого не умеет, но она и не претендовала на понты самого безопасного "языка". нет разве?
> *((char*)0)=5051Что это? Шизофрения сишного кодера?
>> *((char*)0)=5051
> Что это? Шизофрения сишного кодера?Это каст нулевого указателя к char и запись в этот char int, который в этот char не влезет. Разве не прекрасно? :D
Та я понимаю, что этот код делает. Но всерьез писать такую дичь, да еще и преподносить ее как преимущество языка - это надо быть вообще не в себе.
> Та я понимаю, что этот код делает. Но всерьез писать такую дичь,
> да еще и преподносить ее как преимущество языка - это надо
> быть вообще не в себе.Это эмбеддщик. Они так делают. Есть нормальные, которые понимают что это не то чтобы хорошо, но необходимость, а есть шизанутые, которые потом все программирование воспринимают через призму пердолева с магическими числами и тайпкастами.
> Это эмбеддщик. Они так делают. Есть нормальные, которые понимают что это не
> то чтобы хорошо, но необходимость, а есть шизанутые, которые потом все
> программирование воспринимают через призму пердолева с магическими числами и тайпкастами.Если вы нашли такой код в эмбедовке - господина нехорошего точно уволить надо и чем быстрее тем лучше. Потому что ни 1 статический анализатор и ревью в нормальных местах такие выражоыввания не пройдут. Это я вам как адепт AntiBug в сях и любитель фирмвари кодить говорю.
Прикинь в системных программах таки бывает надо писать по нулевому указателю и это ни разу не баг. А статический анализатор натравлять на embedded код вообще глуповато, там из-за ограниченных ресурсов часто хак на хаке.
Нет, хак на хаке там из-за быдлокодеров. А статическому анализатору можно сказать что здесь писать в нулевой указатель это ок.
> Нет, хак на хаке там из-за быдлокодеров. А статическому анализатору можно сказать
> что здесь писать в нулевой указатель это ок.эмбедщина разная бывает. Бывает, где относительно много памяти и скорость процессора большая, а бывает где каждый килобайт, а то и байт и ROM и RAM приходится экономить и такты процессора считать. А впихнуть надо невпихуeмое и чтобы работало.
Я слышал этот миф, но потом читаю код и вижу там просто быдлокод. Можешь показать реальный пример когда действительно _приходится_ писать срань и никак по-другому из ситуации не выйти?
> Я слышал этот миф, но потом читаю код и вижу там просто
> быдлокод. Можешь показать реальный пример когда действительно _приходится_ писать срань
> и никак по-другому из ситуации не выйти?В эмбедовке иногда и правда надо референснуть конкретный адрес. Но вот в том стиле кодят только полные м@#$ки. Потому что код абсолютно нечитабельный и смысл действа из такой записи не следует. Нормальные кодеры оформляют такой фрагмент в какую-то куда более читаемую обертку.
Но вот конкретно поход на адрес 0 в половине эмбедовки будет жесточайше зарублен эмбедовочными процами фирмы ARM прям на уровне их железа. ARM вхардкодили аллергию на нулевый указатели прямо в железо Cortex M :)
> и RAM приходится экономить и такты процессора считать. А впихнуть надо
> невпихуeмое и чтобы работало.Обычно это признак того что с управлением проекта ж@па. Стандартный подход это выбрать проц так чтобы после завершения проекта еще 20% ресурсов осталось. На случай если вот что-то доделать приспичит и проч. Чтобы не зеленеть месяцами пытаясь выкроить пару байтов. Когда кто-то это делает, мы знаем что перед нами Генерал Фэйлор прожектменеджмента, и каким бы крутым кодером он ни был - фу таким быть, потому что в результате он все сроки проекта сольет. К тому моменту оно возможно уже никому не надо будет даже даром.
> Прикинь в системных программах таки бывает надо писать по нулевому указателю и
> это ни разу не баг.Специально для таких системщиков фирма ARM прямо на уровень железа жестко вхардкодила что Cortex-M на ЭТО кидает безусловный и немедленный HardFault. Самый крутой эксепшн на который ядро проца способно. Оно вышибает все, включая другие handler'ы, кроме NMI, и может обладать персональным стеком чтобы обработать самые ж@пные случаи. Эта операция в принципе не может завершиться успехом таком процыке для эмбедовки. Так что горе системщик в эмбедовке от возмездия не уйдет и получит от проца свое, и точно заметит ЭТО.
А узнал я это и правда при чтении нулевого адреса. Там дефолтный адрес стека фирмвари, я его узнать хотел. Щас! Даже за чтение нате вам. А за запись - там флеха, она бы на левую запись в RO BusFault бы дала - если б проц не опередил. Так что за то чтобы люлей дать за запись в 0 адрес в Cortex M оно чуть ли не очередь выстроится :). И да, Cortex M - эмбедовочнее некуда.
> А статический анализатор натравлять на embedded код вообще глуповато,
Ну тогда вы просто обязаны купить себе Тойоту, обязательно с непатченой фирмварью ECU, чтобы оценнить на своем окороке как вам ваши советы. Море интересных ощущений гарантировано разработчиками которые думали так же :). Правда, эксперименты показали что вызывают не все, так что сможете ли вы поделиться впечатлениями от применения идеи к своей же тушке - как повезет.
> там из-за ограниченных ресурсов часто хак на хаке.
В критичных применениях за левые выходки, таки, воздается. И это совсем не круто. Но если вы любите забивающих на MISRA - непатченая Тойота ваш выбор и счастливого пути :).
Хм.. звучит инетересно и судя по всему ты разбираешься (лучше чем я)))
Не подскажешь, а есть ли фирмварь ECU в виде кода и чем его можно распаковать?
> Хм.. звучит инетересно и судя по всему ты разбираешься (лучше чем я)))Я программирую микроконтроллеры и поэтому догадываюсь как это делается. И почему я бы не стал отказываться от статического анализа в этих штуках.
> Не подскажешь, а есть ли фирмварь ECU в виде кода и чем его можно распаковать?Я даже знаю пару эрзацев в виде сорцов. Некто для жигуля на аврке делал. Вроде потом и на STM32 доразвивали. А так некое знание на тему должно быть у чиптюнеров, куда ж они денутся. Но в силу его коммерческой ценности кому попало могут и не дать так сразу.
Тойота же известна тем что обгадилась на границе между статическим анализом и общим анализом качества и системных аспектов. Они облажались с оценкой использования стека. В нормальный лэйаут памяти и отлов переполнения стека они тоже не смогли. Офигенные корпоративные системщики! Пришло к тому что в какой-то момент сложная фирмвара с нехилой ртосью отращивала стек больше чем тойотеры представляли. Под ним в аккурат лежал блок переменных описывающий что юзер педалью газа пытался изобразить. С понятным результатом - авто начинало жить своей жизнью, не коррелирующей с положением педали. Энное количество водил с такого подарка почему-то убились о стену, или что там в ее роли оказалось, а тойота схлопотала жирный коллективный иск. Ну как, все еще хотите поездить на фирмвари которая не видала статический анализатор и прочие MISRA rule checker'ы? А при разборе - оказалось что они еще и ряд правил MISRA в чекере заткнули...
> вот когда твой ржавый "язык" позволит реагировать на подобное:
> *((char*)0)=5051
> тогда и раскрывай рот на сишку. Я ржавого не знаю конечно и
> знать не хочу, но ответ предвижуНу вот твой ответ:
use core::ffi::c_char;
fn main() {
unsafe {
*(0 as *mut c_char) = -69 as c_char;
}
}
Теперь можем рот раскрывать?
и чо будет?
Та же ерунда, что в его сишном коде.
Интересно, этот баг существует со дня создания? А помните утекшие эксплойты NSA? В 2008 год, получение привилегий через флешку на Windows.oh wai~! 2020! The New Microsoft exFAT File-System Driver Has Landed In Linux 5.7
p.s.
ссылка для пользователей лора, если кто из вас не в курсе про запрещенный лоровский клуб https://linuxtalks.co/news/kernel/116805?cid=116807
> oh wai~! 2020! The New Microsoft exFAT File-System Driver Has Landed In
> Linux 5.7Jeon тогда еще ничего не кодил. А его качество кода объясняется тем что он _три_ здоровых проекта в самсе ворочал. Изначально почти один. Там никаких заговоров NSA не надо, если на вас столько спихнуть, там не то что вулны, оно у вас даже и загрузиться то не сможет. Потому что на 3 больших проекта у 1 смертного, внезапно, силенок не хватит ни с хрустом, ни с адой, гни с какими там серебряными пулями. Одной файлухи уже хватит чтобы десятку человек было чем заняться. А тут проектов ТРИ, карл. На одной мясной тушке.
> ссылка для пользователей лора, если кто из вас не в курсе про
> запрещенный лоровский клуб https://linuxtalks.co/news/kernel/116805?cid=116807Фп@зду этот позор где забаненых юзерей больше чем нормальных.
А немного подумать не получается?
Реализацию драйвера exFAT для линуксов писал Samsung.
К тому что в Windows это не имеет отношения. Microsoft свой код не даст, да и ядро вообще другое – и не получилось бы.А так эка невидаль, не проверили длину буфера. Никогда такого не было.
Заговор! 100%А про то, что ты говоришь
> Agent.BTZ, also named Autorun,[1][2] is a computer worm that infects USB flash drives with spyware. A variant of the SillyFDC worm,[3] it was used in a massive 2008 cyberattack on the US military, infecting 300,000 computers.
Это авторан вообще. Драйвер файловой системы не был задействован для проникновения.
> А немного подумать не получается?
> Реализацию драйвера exFAT для линуксов писал Samsung.А у тебя немного подумать не получилось? самсунг писал в 2013, потом его заменили на m$.
Нет. Зачем выдумывать бред?
Microsoft только дали разрешение использовать exFAT в линуксах без взымания платы (патентных отчислений) и спецификацию естественно тоже опубликовали.
Код/реализации они не писали.Была старая реализация от Samsung. Её разработчики линуусового ядра назвали ужасом. К ядру 5.7 опять же Samsung переписал по новой.
- if (step != DIRENT_STEP_NAME) {
+ if (step != DIRENT_STEP_NAME ||
+ name_len >= MAX_NAME_LENGTH) {восхитительный фикс
С in CVE is for C lang
Предлагаешь в этом месте использовать экспортированную из раста функцию на две строки святого Раст кода?
бинарный макрос же. У них так принято. Бебебезопастность!
Устарели твои данные
> Устарели твои данныенет, там чувак вовсе не поменял свое мнение, а просто отложил до апгрейда инфраструктуры, после которого ему удобнее будет втюхивать свой макрос. (а не, скажем, после которого у тебя будет возможность выбирать бинарник или исходник - так вопрос даже и не стоит)
> нет, там чувак вовсе не поменял свое мнение, а просто отложил до
> апгрейда инфраструктуры, после которого ему удобнее будет втюхивать свой макрос. (а
> не, скажем, после которого у тебя будет возможность выбирать бинарник или
> исходник - так вопрос даже и не стоит)Опеннетчики как всегда облажались и не смогли даже понять чем закончилась дискуссия. А закончилась она тем, что вместо фичи "derive" у пакета "serde" можно напрямую подключать пакет "serde_derive" и распараллелить сборку, что решает изначальную проблему, ради которой они бинарник хотели засунуть. Да, я понимаю что фанатам сильной-руки-в-жопе везде мерещатся многоходовочки, но это была сугубо техническая проблема которую решили сугубо техническим путем :D
В 6.1.45/6.4.10 уже фикс есть:exfat: check if filename entries exceeds max filename length
Можно не следить за исправлениями, Fedora давно выкатила 6.4.11, 6.4.12 уже в testing.
Остальные ядра лень смотреть.
при тестировании в виртуальном машине...
ну тебе чо - жалко флэшку раз десять подр...ть чтоб стать крутым хаксором?!
А в андроиде есть ээта уязвимость?
> А в андроиде есть ээта уязвимость?смотря в каком. В телефонном вряд ли потому что нет автомонтирования чего ни попадя - в телефоне обычно только одна флэшка и та подключена очень специальным образом, начиная с еще шестерки.
А вот в шибкоумном телевизоре, куда флэшки таки именно втыкают - да, запросто. Потому что там скорее всего именно udisks2 и прочая мерзость поверх него - не заставлять же пользователя телевизора что-то там "монтировать". Интересно бы, кстати, посмотреть как самсунь решил проблему с обратным процессом в своем телевизоре. Надеюсь не в стиле freebsd (там, если что, не флэшка а дискетка. Т.е. баг этот тянулся со времен 2.2 и вроде как героически побежден в очередной раз в 12й. Но это уже неточно потому что не осталось дискеток даже виртуальных.)
в самсунг телезиворах давно нет линукса, лет как 7. В Tizen от линукса меньше чем в андройде.
> в самсунг телезиворах давно нет линукса, лет как 7. В Tizen от
> линукса меньше чем в андройде.Кернел есть? Есть. А остальное ниипет - Linux это ядро. А юзермодом что угодно. У сони на фотиках фирмварь вообще 1 процесс, который сам себе инит и прочее. Но это линукс. Правда, довольно хреновый. Тем не менее.
Ну блин, ты еще скажи что exfat.ko у них тоже нет.Или что они переизобрели udisks2 а не стыздили редхатовский (если вдруг да - где посмотреть?)
Напоминаю - мы пользуемся рабочим exfat (а не уродцем-недоделком через fuse) ровно потому что самсуновскому телевизеру НАДА в него уметь.
При чём тут автомонтирование? Имеется ввиду можно ли рутануть андрюшу, смонтировав exfat ФС. Подключить флешку через type-c и вмонтировать его, выбрав в телефоне?
ммм... а ты уверен что вот в твоем телефоне такая фича есть вообще?У меня телефоны немодные, без typeC, но есть хитрый китайский переходник для OTG. Из трех лопат одна перезагружается при попытке через него подключить флэшку, вторая не видит. У третьей нет exfat.
Вы на какой-то помойке специально такой хлам собираете? Любой более-менее современный андрюша без проблем видит накопители с exFAT. Вот не поленился даже, терабайтный винт к телефону подключил — вуаля.
> Любой более-менее современный андрюша без проблем видит накопители с exFAT.я не меняю телефоны каждые три года, если ты это имел в виду.
современный exfat.ko существует ровно три года. До этого был самсунговский драйвер - в телефонах угадай кого.
Эта уязвимость была бы критичной, если бы пользователи массово использовали бы линукс на домашних компьютерах и массово использовали exFAT для флешек.
Шел 2023-й год до Linux докатились проблемы autorun.inf
> Эта уязвимость была бы критичной, если бы пользователи массово использовали бы линукстолько они об этом еще не знают.
> на домашних компьютерах и массово использовали exFAT для флешек.
ты не поверишь... (правда, и об этом они тоже не знают. Зато за них знает самсунг.)
> Шел 2023-й год до Linux докатились проблемы autorun.inf
autorun.inf редхат запилил вам в 2006м, если не ошибаюсь. (название было какое-то другое но суть и уязвимость внезапно - те же самые. Ну а чего такого если весь менеджемент хочет какввенде. Потом правда выпилили - оно уже и в венде было немодным.)
> Шел 2023-й год до Linux докатились проблемы autorun.infЛет десять как.
https://www.opennet.me/opennews/art.shtml?num=29532
https://www.opennet.me/opennews/art.shtml?num=53467
https://www.opennet.me/opennews/art.shtml?num=51235
больше, просто забыли уже (память у местных дятлов - ну как у дятла)там именно autorun.inf был у ранних гомохатов. Прямо почти какввенде, которую и косплеил, только само название отличалось.
Через полгода тысячеглаз заметил таки (поскольку дисков реально использующих фичу видимо существовал ровно один - дистрибутивный) и ее выпилили.
> Через полгода тысячеглаз заметил таки (поскольку дисков реально использующих фичу видимо
> существовал ровно один - дистрибутивный) и ее выпилилиНикто авторан не выпиливал.
VirtualBox ISO так и работает в дефоотной Ubuntu и Fedora«Тут баш скрипт на диске? Запустить?» Это в один в один поведении с Windows Vista
https://omgubuntu.ru/content/images/2019/09/autorun_guest_ad...
та молча запускала. В семерке стало можно вручную отключить (но не совсем из-за кривой реализации, совсем только хаком) и только десятка научилась либо спрашивать либо молчать.т.е. microsoft учится на своих ошибках, а эти, похоже, нет.
Там еще, кстати, помнится была и уязвимость в стиле нынешней - что при попытке спросить, внезапно имя файла исполнялось потому что ну ой, кто ж мог подумать и было ли ему чем.
Дальше PoC понятно не пошло потому что кому тот неуловимый джо сдался, блин.
Нет. XP запускала молча
> быть использована для компрометации ядер,
> загружаемых в режиме UEFI Secure Boot....опять юзеры андроидов порутают. А обычные линуксоиды с exFAT вообще мало пересекаются и модуль как правило вообще не вгружен.
Ну что, кнутователи, натолкали на одного Jeon'а три галеры? Он и греб на них как умел, когда на вас висит f2fs, exFAT и ksmbd - тут уже не до качества кода, лишь бы вообще работало.
> ...опять юзеры андроидов порутают. А обычные линуксоиды с exFAT вообще мало пересекаютсяобычные пересекаются, не все ж больные белки-истерички, борцуны с проклятой M$, кто-то просто настолько ненормален что на самом деле пытается этим линуксом пользоваться как рабочей средой.
> и модуль как правило вообще не вгружен.
gnome-shit-disk, udisks2 и кто там еще позаботится его загрузить как только вставишь флэшку от фотика, например.
> Ну что, кнутователи, натолкали на одного Jeon'а три галеры? Он и греб
> на них как умел, когда на вас висит f2fs, exFAT и
> ksmbd - тут уже не до качества кода, лишь бы вообще
> работало.- Б...ь, ФАРУ ему на лоб!!! Фару!!! Чтоб и ночью тоже косил!!!
> обычные пересекаются, не все ж больные белки-истерички, борцуны с проклятой M$, кто-то
> просто настолько ненормален что на самом деле пытается этим линуксом пользоваться
> как рабочей средой.Ну так им и апдейт прилетит сам без спроса и запатчит все. А может и уже.
>> и модуль как правило вообще не вгружен.
> gnome-shit-disk, udisks2 и кто там еще позаботится его загрузить как только вставишь
> флэшку от фотика, например.Если вас хакает ваш же фотик - у вас большие проблемы имхо. А пво вам ракеты еще не высылает? Трусы ничем не мажут? Вы там проверьте на всякий. И чувака дегустировать еду заведите, на всякий.
> - Б...ь, ФАРУ ему на лоб!!! Фару!!! Чтоб и ночью тоже косил!!!
Ну вот как-то так. Не удивлюсь если он еще в каком-то проекте с корнями в самсуне отметится. И конечно там тоже надо будет код чекать от и до в таком случае. А кодер точно может быть в вменяемом состоянии при кодинге, если на него столько работ подвесить? :)
> Ну так им и апдейт прилетит сам без спроса и запатчит все.глядя на бесконечные свои убунты-18 и центоси7 - ага, прилетит вдруг волшебник, в голубом вертолете, и бесплатно покажет всем х-й.... а к самсуновскому телевизору - наверное, и правда прилетел уже. Он там такой... активный. То ли ты его смотришь, то ли он за тобой присматривает.
>> флэшку от фотика, например.
> Если вас хакает ваш же фотику тебя настолько ох-енный слот для флэшек, что умеет отличать флэшку фотика от флэшки васяна, подрезавшего твой ноут?
Ну и в принципе - и фотик могет. В свое время среди меня и моих знакомых были распространены автомобильные gps китайского безвестного производителя, легким движением превращавшиеся в пда на winCE. Вещь прикольная по тем временам, но вот родную китайскую флэшку (почему-то с картой Бразилии) в обычной винде трогать не стоило.
А теперь у нас и линукс такой же "только всем хуже".
> обычные линуксоиды с exFAT вообще мало пересекаются_Обычные_ линуксоиды пересекаются с exFAT ровно столько же, сколько и все остальные.
Интересно, эта уязвимость и в виндовсе есть или этот бэкдор был сделан исключительно для линуксов?
Отсутствие проверки размера при копировании имени файла в буфер, размещённый в стеке, приводит к переполнению стека ядраНовость не читаем, хню пишем как всегда. Или в винде ядро с линя завезли?
Увидел: exFAT
Ассоциация: винда
Дальше всё как в тумане
В полноценной операционке это не уязвимость, чувак. Просто потому что в отличии от ненужного максимальная длина имени файла - 255 символов, а не байт. Потому имя, которое приводит ненужное к описанному тут эффекту в полноценной системе вполне нормально обрабатывается.
Помню как лянуксь "убил" мне внешний хард с эксфат. Я его и так и сяк и фстабом и чем-то ещё пингвинячьим. Ни в какую. Я подумал, всё хард умер. Ну, бывает. И так провалялся он у меня до первого появления в зоне моей доступности винды. И, о чудо, оказалось, что его то всего лишь нужно было отформатировать из под винды. Данные я конечно тогда потерял, но хард работает верой и правдой до сих пор. Просто я его теперь во всякое срамно не втыкаю.
> "Помню как лянуксь "убил" мне внешний хард с эксфат. Я его и так и сяк и фстабом и чем-то ещё пингвинячьим. Ни в какую. Я подумал, всё хард умер. Ну, бывает. И так провалялся он у меня до первого появления в зоне моей доступности винды. И, о чудо, оказалось, что его то всего лишь нужно было отформатировать из под винды. Данные я конечно тогда потерял, но хард работает верой и правдой до сих пор. Просто я его теперь во всякое срамно не втыкаю."Это Linux.
как-то не верится, что при этом стандартный линуксовый gparted не смог пересоздать таблицу разделов и отформатировать диск
Именно, что не мог. Так конкретно сломало мне его это ваше поделие. А то, что не верится - это понятно. Ведь линукс - это вопрос веры. Для того, чтобы видеть гордую птицу в компостном петухе нужна сильная вера.
> Именно, что не мог. Так конкретно сломало мне его это ваше поделие.
> А то, что не верится - это понятно. Ведь линукс -
> это вопрос веры. Для того, чтобы видеть гордую птицу в компостном
> петухе нужна сильная вера.По-моему нужны всего то работающие мозги. Не справиться с каким-то несчастным винчом это уж вообще дниной надо быть. К тому же винчи в NTFS обычно с фабы форматируют - так что этот типа-"линуксоид" еще и слегонца заврался, ус в процессе отклеился.
Кстати, а драйвер от Парагона-то так и не взяли, в итоге?
так он г-но был полное, readonly и то недоделанное.Парагон просто решил застолбить поляну, но пролетел.
А вот драйвер refs хер дождемся.
> Кстати, а драйвер от Парагона-то так и не взяли, в итоге?Ну а нафига, если у самсуня код утек, его и допинали в результате. Самсунь решил что раз такая пьянка то вкомитят в майнлайн. Откуда мы и узнали потом о качестве самсунговского кода. И о том как 1 кодер оказывается на минимум 3 здоровых проекта надрывался. Где в каждом по десятку рож просится.
> Проблема устранена в выпусках ядра Linux 6.4.10, 6.1.45, 5.15.25, 5.10.90, 5.4.253, 4.19.291, 4.14.324 и 6.5-rc5.exFAT был добавлен в Linux 5.4. Странно, что затронуты более старые ядра.
И я посмотрел ядро 5.4, там исправления нет. Возможно, что оно не подвержено уязвимости. Там нет файла dir.c.