LINUX.ORG.RU

CVE-2025-68260: Первая уязвимость в коде Linux на Rust

 , ,


0

4

Грег Кроа-Хартман анонсировал первую уязвимость с присвоенным CVE в части кода на Rust в Mainline-ядре.

Уязвимость обнаружена в коде подсистемы Binder, переписанном на Rust. Возможное состояние гонки в unsafe блоке может повредить указатели связанного списка и привести к краху ядра.

Уязвимость воспроизводится в ядре 6.18 при использовании нового, переписанного на Rust драйвера Binder.

>>> Оригинал новости на Phoronix

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 1)
Ответ на: комментарий от Sm0ke85

там точно ничего плохого не может быть

Врёшь как сивый мерин - ни один эксперт этого не говорил.

zabbal ★★★★☆
()
Ответ на: комментарий от gns

Я полагаю, что люди, доверяющие компилятору раста не в состоянии доверять своему опыту и чутью.

А полагающиеся на компилятор С делают это как-то опытнее, чутьё там используют, мягкую туалетную бумагу. Даже дышат при этом как-то одухотворённее что-ли. И код при этом у них выходит более аналоговый, тёплый, парной… прям как в деревенском сортире после пачки дрожжей на рассвете…

Для успешного программирования на расте нужно что-то другое.

Уметь программировать например. Я б посоветовал и тебе научиться, но судя по что ты путаешь segfault и race condition тебе не дано.

zabbal ★★★★☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от Sm0ke85

Но позвольте, эксперты в один голос кричали

Это кто вам так кричал? Не слушайте их больше. В случае возникновения вопросов, обращайтесь лучше к официальным докам, там разъяснено не только что такое unsafe и зачем он нужен, но и какие именно небезопасные конструкции позволено использовать внутри. Небольшая статья на несколько экранных страниц.

yvv1
()
Ответ на: комментарий от Sm0ke85

Знаешь, я бы предпочел, чтобы баги не были «неочевидными»

Тебе-то какая разница? Ты ж всё-равно программировать не умеешь.

zabbal ★★★★☆
()
Ответ на: комментарий от hatred

зачем нужно было существующий модуль переписывать на Rust, а не использовать последний для нового функционала.

Потому что авторы модуля захотели использовать более безопасный язык. Тебя при этом, что характерно, спросить забыли. Видимо они придерживаются принципа «воняет - не трогай».

zabbal ★★★★☆
()

Первая уязвимость в коде Linux на Rust

Ого! (открыл тему)

состояние гонки в unsafe блоке

Да блин! (закрыл тему)

Radjah ★★★★★
()
Ответ на: комментарий от Sm0ke85

Спешите видеть! Только на ЛОРе! Сишник, не видящий ошибку с памятью в собственноручно написанных десяти строках кода, даже когда его тычут в неё носом, и никогда не слышавший о valgrind, рассказывает о ненужности линтеров!

unC0Rr ★★★★★
()
Ответ на: комментарий от Sm0ke85

это попахивает корпоратским захватом линукса…

Ещё один мамкин нетакусик не в курсе кто на самом деле пишет ядро :-D

zabbal ★★★★☆
()
Ответ на: комментарий от Sm0ke85

Это сравнение пальца и непальца - вообще не в ту лужу…

Это буквально оно. В древние времена тоже было очень много воя по поводу языков высокого (на тот момент) уровня примерно с той же аргументацией.

В ржавом переложили на компилятор вообще ни разу не дубовые вещи…

Управление памятью по понятным паттернам - вещь, которая может быть сделана машиной без всякой недетерминированной эвристики.

«обмазаться линтерами и обмазать проверками весь код» - вообще негодная идея, это называется выкинуть производительность в помойку…

Ты точно программист, или просто теоретизируешь? Какое отношение линтеры имеют к производительности?

Как оказалось

Не оказалось.

liksys ★★★★
()
Ответ на: комментарий от yvv1

Небольшая статья на несколько экранных страниц.

Ты правда думаешь что вот это вот способно прочитать что-то объёмнее чем твит? Завидую твоему оптимистическому взгляду на людей :)

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

Я б посоветовал и тебе научиться, но судя по что ты путаешь segfault и race condition тебе не дано.

С тобой разговаривать так точно не дано. Из меня тролль — как из говна пуля, впрочем я честно в этом всегда признавался. Так что иди в бан!

gns ★★★★★
()
Ответ на: комментарий от gns

Так что иди в бан!

О, теперь ты себя ещё и модератором возомнил? Сначала выдуманные «растоманы», теперь окончательно в отрыв от реальности пошёл.

А ведь всего-то и надо что не врать и не выдумывать несуществующее в попытке рационализировать своё старческое брюзжание на новую технологию - и не придётся так позориться на публике.

zabbal ★★★★☆
()
Ответ на: комментарий от DarkAmateur

Ну да, главное не проверять это утверждение поиском по ядрам на rust (redux к примеру)

LexS007
()
Ответ на: комментарий от quantum-troll

Ну это плохо применимо для верификации отсутствия гонок. В логических моделях фактор времени плохо учитывается, если учитывается вообще.

Типы тебе не помогут, если нужно верифицировать взаимодействие потоков управления во времени.

Кстати, для раста есть что-то похожее — https://frama-c.com/html/acsl.html

gns ★★★★★
()

Хотел злорадно написать, что я так и знал, но когда увидел, что проблема именно в связанном списке, из-за которого я быстро отказался рассматривать Раст всерьёз, стало прямо смешно. Если серьёзно, то, конечно, вопрос не в наличии уязвимостей, а в их количестве. Если их станет (вдруг чудом) резко меньше, придётся признать, что в Расте есть смысл. Но пока до этого далеко. Линукс и уязвимости - это близнецы-братья, как Ленин и Партия.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от pftBest

just causes a crash

Всего то навсего, ерунда какая, ОС крашнулась :) Конечному пользователю абсолютно безразлично по какой причине у него перестал работать компутер и можно там воспользоваться memory corruption или нельзя всем пофиг.

Frohike
()
Ответ на: комментарий от Sm0ke85

Ты же понимаешь, что когда очевидные баги отсеяны, остаются только неочевидные баги?

quantum-troll ★★★★★
()
Ответ на: комментарий от zabbal

Ещё неизвестно, что хуже - старческое брюзжание или молодецкое слабоумие плюс отвага.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от gns

Да ладно, а кто же нам втирал, что Раст автоматически на этапе компиляции побеждает гонки, и что именно поэтому мы все должны забыть свои говноязычки и перейти на него?

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от Frohike

Судя по твоей аватрке, грамотные сишники находятся не ближе, чем на комете Атлас III, а на Землю таких не завезли.

den73 ★★★★★
()
Ответ на: комментарий от den73

а кто же нам втирал, что Раст автоматически на этапе компиляции побеждает гонки

Действительно, кто? Я таких утверждений ни от кого из знакомых с Rust не видел.

zabbal ★★★★☆
()
Ответ на: комментарий от zabbal

Хорошо, а как будет правильно? «Раст не решает проблем с гонками и не обладает никакими преимуществами перед другими языками в этом отношении»? Просто, чтобы если я вдруг встречу такого человека, сказать ему «ты первый растаман, который утверждает, что раст помогает бороться с гонками». На свою память не полагаюсь.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от Frohike

можно там воспользоваться memory corruption или нельзя всем пофиг

Ламерам и вправду пофиг - иди дальше в тикток втыкай. А вот любому кто знаком с безопасностью - точно не пофиг.

zabbal ★★★★☆
()
Ответ на: комментарий от den73

Хорошо, а как будет правильно?

Раст защищает от ошибок при работе с памятью, которые составляют львиную долю CVE.

Всё остальное хейтеры придумали сами.

liksys ★★★★
()
Ответ на: комментарий от den73

Техническая аргументация будет, или как обычно?

liksys ★★★★
()
Ответ на: комментарий от den73

выглядит это странно, был некоторый код, который решили переписать на заведомо безопасном ЯП, чтобы обезопасить. но специально отключили режим безопасности и притащили в ядро дырку. Даже если бы не притащили, зачем включать unsafe в ядре? То-есть, на безопасном раст такое нельзя сделать, но ради того чтобы раст бы в ядре они включают unsafe ?

fMad ★★★
()
Ответ на: комментарий от den73

На свою память не полагаюсь.

Ну то есть в сообщении выше ты использовал риторический приём под названием «врать напропалую»?

zabbal ★★★★☆
()
Ответ на: комментарий от liksys

Первая же ссылка в Яндексе, ведующая на Хабр:

Безопасность в Rust
Одной из ключевых особенностей Rust является обеспечение строгих гарантий безопасности памяти. Rust предотвращает множество типичных ошибок, таких как гонки данных и неправильное использование памяти, с помощью двух мощных механизмов: системы владения (ownership) и системы заимствования (borrowing).

Это хейтер написал?

den73 ★★★★★
()
Ответ на: комментарий от zabbal

Нет, я прекрасно помню, придётся и тебе тоже эту же цитату привести.

Безопасность в Rust
Одной из ключевых особенностей Rust является обеспечение строгих гарантий безопасности памяти. Rust предотвращает множество типичных ошибок, таких как гонки данных и неправильное использование памяти, с помощью двух мощных механизмов: системы владения (ownership) и системы заимствования (borrowing).

Я ничего не продвигаю, а вот сектанты растолюбы готовы врать, я вижу, с любой точки и в любом направлении. Я бы постыдился, честно сказать.

den73 ★★★★★
()
Ответ на: комментарий от den73

Это написал хз кто. А теперь мы с тобой сходим на официальный сайт и посмотрим, что пишут уже там.

Rust’s rich type system and ownership model guarantee memory-safety and thread-safety — enabling you to eliminate many classes of bugs at compile-time.

Всё, понял? Вот и ладушки.

liksys ★★★★
()
Ответ на: комментарий от den73

Понятия не имею, точно не я. :) Если использовать безопасные типы данных раста без изменяемых вручную указателей, то оно бы и ничего, хотя отследить временные зависимости потоков управления статическим анализатором не знаю, возможно ли в принципе.

Мы страдаем передергиванием и обобщением. Если кто-то сказал, что раст безопасен по памяти, то мы стремимся обобщить это на все случаи жизни. Мышление-то клиповое и не вникающее в детали. Нам сказали — безопасно, ну значит всегда безопасно.

gns ★★★★★
()
Ответ на: комментарий от fMad

Конечно нельзя. В этом и глубина замысла. Язык объявлен безопасным, а на самом деле все бекдоры можно сберечь.

den73 ★★★★★
()
Ответ на: комментарий от gns

Сам дурак. Когда мне говорят «гонки - это не проблема языка», когда наступили на грабли, а перед этим мне говорили «раст защищает от некоторых видов гонок», то это противоречие. Для противоречия не нужно, чтобы шестерёнки полностью совместились. Достаточно несовпадения в одном зубчике и всё заклинит. Я не обобщаю, я читаю ровно, что написано и владею логикой высказываний на уровне хотя бы школьника. А что у вас там на мессах растоманов происходит, я не знаю.

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от fMad

Некоторые вещи невозможно написать без unsafe, потому что речь идет об общениия с оборудованием - наше железо просто вот такое. Другие вещи требуют unsafe из-за взаимодействия с сишным кодом.

При этом большая часть ядра состоит не из этого, а из бизнес-логики, в которой перекладывание памяти встречается повсеместно. И вот там-то как раз всё работает как задумано.

liksys ★★★★
()
Ответ на: комментарий от den73

состояние гонки в unsafe блоке

Мне начинает казаться что идиотом ты не прикидываешься.

zabbal ★★★★☆
()
Ответ на: комментарий от fMad

А как еще-то? Там вон весь интерфейс к аллокатору памяти unsafe extern «C». Модель использования указателей в ядре ортогональна подходу, используемому в Расте. Ну вот и пытаются скрестить ужа с ежом.

gns ★★★★★
()
Ответ на: комментарий от den73

Проблема не в списке, а в многопоточном доступе.

unC0Rr ★★★★★
()
Ответ на: комментарий от zabbal

А вот любому кто знаком с безопасностью - точно не пофиг.

Я этих "любых знакомых с безопасностью " целые стада за карьеру видел, очень много слов и никакого толка. Не говоря уже о том, что воспроизвести уязвимость «знакомые с безопасностью» не в состоянии :) Смело можно mitigations=off и ничего не будет. Вся суть «безопасности» в том, что «знакомые с безопасностью» хотят кушать и ничего не делать. Не осуждаю, если что.

Frohike
()
Ответ на: комментарий от den73

Под «сам дурак» имел в виду, что не надо именно мне приписывать клиповое мышление. Проблема на стороне авторов противоречащих высказываний.

den73 ★★★★★
()
Ответ на: комментарий от Frohike

Иногда лучше жевать, чем программировать.

den73 ★★★★★
()
Ответ на: комментарий от den73

перед этим мне говорили «раст защищает от некоторых видов гонок», то это противоречие.

Никакого. Ты же сам написал — «от некоторых видов гонок».

Из физтеховского юмора: «если на Земле не было бы женщин, то на ней никого бы не было. Откуда следует, что все живущие на Земле — женщины». Ну примерно такая же логика, да?

gns ★★★★★
()
Ответ на: комментарий от Frohike

Вся суть «безопасности» в том, что «знакомые с безопасностью» хотят кушать и ничего не делать.

Ты это буквально комментируешь в новости про устранение дыры в безопасности ядра, LOL.

zabbal ★★★★☆
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.