Опубликован выпуск проекта sudo-rs 0.2.10, развивающего написанные на языке Rust варианты утилит sudo и su. Новая версия примечательна исправлением двух уязвимостей, которые проявляются среди прочего в дистрибутиве Ubuntu 25.10, в котором sudo-rs задействован вместо утилиты sudo. Примечательно, что до этого кодовая база sudo-rs успешно прошла два независимых аудита безопасности - в августе 2023 года и в августе 2025 года...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64226
Опять дыры в безопасности в коде на языке, который должен был избавить программиста от лишних размышлений. Почему так? И почему ИИ (обязательный инструмент при программировании на Rust на минуточку) не может помочь?
Чтобы генерить подобные комментарии даже ИИ не нужен, лишь один простой шаблон, который вы везде повторяете.
Забавно слышать про шаблон, когда каждая новость про Rust начинается с одного и того же шаблона.
Какого шаблона? Он в этой новости есть?
Я отредактировал новость, добавив портянку про безопасную работу с памятью, боровов и тд. Скоро появится.
То есть, вы заявляете о шаблонности каждой новости про Rust, а когда вам указали, что это не так, вы решаете пойти и отредактировать новость, чтобы она стала шаблонной? Ну да, это же для растохейтеров стандарт: придумать себе чучело, а потом героически подгонять под него реальность.
В каждой новости про выход компилятора.
Вам завидно что ваш конпелятор редко обновляется?
> Опять дыры в безопасности в коде на языке, который должен был избавить программиста от лишних размышлений.Раст избавляет лишь от лишних размышлений при работе с памятью. Ни от чего другого спасение не заявлялось.
Опять воины против Раста ыыдумывают себе ветряные мельницы, и сами же с ними воюют. 🤦 Не надоело еще?
Где противоречие? Всякий раз говорили, что именно отсутствие необходимости заботиться об ошибках с памятью высвободит силы на продумывание более качественной логики. Но да, отсутствие ошибок с памятью принесло ряд совершенно новых неожиданных ошибок.
> Всякий раз говорили, что именно отсутствие необходимости заботиться об ошибках с памятью высвободит силы на продумывание более качественной логикиНет, не говорили. Где вы видели такой бред?
Согласен, что это бред, но именно это говорили фанаты Rust.
> Согласен, что это бред, но именно это говорили фанаты Rust.Пока что я это слышу от воина против Раста, воюющего против ветряных мельниц, которые он сам себе придумал.
Ну как же, вот Аноним ниже пишет, что Rust позволяет сократить количество логических ошибок.
> отсутствие ошибок с памятью принесло ряд совершенно новых неожиданных ошибок.Понятно. Очевидно, нужно возвращать ошибки с памятью.
Вы не понимаете. Они же не пишут с нуля, они вынуждены читать код на си, где им приходится НАПРЯГАТЬСЯ чтобы понять решение с памятью и переписать
> Всякий раз говорили, что именно отсутствие необходимости заботиться об ошибках с памятью высвободит силы на продумывание более качественной логики.Давай условно согласимся, что говорили. Но ты сам написал "более качественной логики", а не "абсолютно качественной, абсолютно безошибочной". Т.е. какое-то кол-во "логических" ошибок остаётся даже с твоей придуманной формулировкой. Ну вот они и есть - две ошибки. А было бы (на другом, небезопасном языке), условно, пять. Но это не важно. Позже наверняка и в этом поделии ещё найдут, но их будет меньше, чем если бы "переписывали" на си. А теперь представь, что у этих же программистов к необходимости заботиться о бизнес(и обычной)-логике, добавилась бы когнитивная нагрузка заботиться и об ошибках работы с памятью. Как ты думаешь, общее количество ошибок от этого конечно же сразу упадет?
> Но да, отсутствие ошибок с памятью принесло ряд совершенно новых неожиданных ошибок.
ага, таких же новых и неожиданных, как и возникающие при программировании на си. К которым _в придачу_ накодят более чем в два раза бОльше ошибок работы с памятью, которые, судя по новостям, генерируют больше 90% опасных CVE. А тут оценки опасности даже до 5 из 10 не дотягивают.
> > Опять дыры в безопасности в коде на языке, который должен был избавить программиста от лишних размышлений.
> Раст избавляет лишь от лишних размышлений при работе с памятью. Ни от чего другого спасение не заявлялось. Опять воины против Раста ыыдумывают себе ветряные мельницы, и сами же с ними воюют. 🤦 Не надоело еще?Несколькими постами дальше в треде (из растофильского):
> Отлично, на расте проще писать программы без ошибок логики, чем на сях, так что это ещё один аргумент за раст. Спасибо.
Вы там между собой определитесь, что ли.
> Опять дыры в безопасности в коде на языке, который должен был избавить программиста от лишних размышлений.Сишники выдумали эту глупость и продолжают повторять. Зачем - спроси сишников. Я начинаю думать, что сишники просто глупые люди, раз они такие серьёзные ошибки на ровном месте совершают.
Safe Rust убирает ошибки работы с памятью, а не вообще все ошибки на свете. Почему вам это так трудно понять? Вроде простая мысль.
> Почему так?
Так нипочему, потому что написанное не имеет отношения к реальному миру. Почему у тебя такие фантазии знаешь только ты сам.
> И почему ИИ (обязательный инструмент при программировании на Rust на минуточку)
Сегодня день открытых дверех в спец учреждениях? Зачем вы выдаёте эти дикие фантазии за реальность?
> не может помочь?
Это кстати тоже неправда. ИИ помогает очень сильно, другое дело что куча людей не хотят пользоваться ИИ т.к. зерги по разуму их осудят.
>ИИ (обязательный инструмент при программировании на Rust на минуточку)4.2
Ладно такие уязвимости могли допускать на заре появления юникса когда только учились кодидь а сейчас да такие бестолковый уязвимости надо бы таких кодеров выгонять из мира программирования а то так и будут косячить без конца то одни уязвимости то другие
Покажи свой код.
Не покажу.
sudo-rs, намного лучше чем просто sudo.
> sudo-rs, намного лучше... намного лучше создаёт поле для уязвимостей.
Ты правда хочешь увидеть список CVE стандартного sudo? Кто будет унизительно для ненавистников раста.
Сравни количество CVE за первый год sudo и sudo-rsВ даркнете уже сотни инструкций есть, как обойти то или иное ограничение, имея возможность запустить sudo-rs.
Skoda Octavia RS, намного лучше чем sudo-rs
Sydney Sweeney намного лучше чем sudo-rs
Oh, ya-YA! ;-)~~~Sidney Sweeney has good jeans!(C)
>Ладно такие уязвимости могли допускать на заре появления юникса когда только учились кодидь а сейчас да такие бестолковый уязвимости надо бы таких кодеров выгонять из мира программирования а то так и будут косячить без конца то одни уязвимости то другиеПросто раст очень "безопасный", и в это обстоятельство все уверовали и решили, что и студент сможет нынче программировать = куча багов и уязвимостей, а также постоянные оговорки, что "раст не там-то безопасен, а вот в другом месте..."
Напрягает одно, они переписывают то, что и так работает отлично и используют линукс и его сообщество как полигон, по рукам таким бить надо и чапалахи отвешивать, чтоб "место" свое знали...
>Просто раст очень "безопасный", и в это обстоятельство все уверовалиКто эти все? Под каждой новостью каждому Воену Супротив Раста объясняется, что Раст не защищает от всех возможных ошибок. Но Воену продолжают уверять, что "все уверовали".
>Напрягает одноРасслабься, а нето лопнешь от перенапряжения.
>они переписывают то, что и так работает отлично
Чем хотят в свободное время, тем и занимаются. Тебя забыли спросить. И нет, код на Си не работает отлично.
>и используют линукс и его сообщество как полигон,
Кто-то заставляет дистрособирателей тащить это в репы? Скажи, кто именно?
> добавлена в июльском выпуске
> опубликованной в апреле...
> независимых аудита безопасности .. в августе 2025 года (NGICore)???
Аудиторы безопасности пропустили эти ошибки, или что вам не понятно?
а чего тут понимать ? Вместо кода такой синтаксический спагетти-мусор, что даже профильные аудиторы толком не могут это разгрести
Я правильно понял вашу мысль: вы считаете, что на Rust в принципе нельзя писать нормальный код (синтаксис не позволяет)? В таком случае приведите пожалуйста пример хорошего по-вашему кода на языке с хорошим синтаксисом.
кудах-кудах )
Я просто читаю текст статьи и вижу почти прямым текстом вывод, что даже независимые аудиторы( именно во множественном числе и из разных структур ) не смогли даже разгрести логику в коде на расте, из-за чего пропустили дыры. да, без двойного освобождения памяти. Но дыры, тем не менее, остались и нехилые.Причём, утилиты весьма простые и небольшие. Что же будет в больших системах ?
> не смогли даже разгрести логику в коде на расте, из-за чего пропустили дыры.Это уже не дыры, а тоннели.
> Что же будет в больших системах ?
Для этого раст и создавался. Обфускаторы отдыхают.
> кудах-кудах )Не хочу думать о вас плохого, но почему вы кудахтаете?
> почти прямым текстом вывод, что даже независимые аудиторы( именно во множественном числе и из разных структур ) не смогли даже разгрести логику в коде на расте, из-за чего пропустили дырыВ тексте новости нет и намека на то, что аудит пропусьил уязвтмость именно из-за синтаксиса Раста.
Какзалось бы, по твоей же логике, языки с простым синтаксисом типа Питона вообще не должны содержать ошибок - но логика, очевидно, отключается, когда речь идет о Расте.
> Я просто читаю текст статьи и вижу
...фигу.
> Но дыры, тем не менее, остались и нехилыеЭто при оценке меньше 5 из 10? Ну да, ну да... Оценщик же не ты, а то ты бы им 11 поставил.
> Что же будет в больших системах ?
Спроси у клаудфлари или гугла. А-а-а-а-а, ну да... У них же студенческие поделки уровня хеловрота, которые второкурсник за вечер воскресенья пишет.
и, для повторения:
> Что же будет в больших системах ?
гугл вам уже рассказывал, что получилось, еще в 22-м (и с тех пор от раста не отказался, а только наращивает использование, потому что разработка на расте продуктивнее в два раза разработки на плюсах):
"To date, there have been zero memory safety vulnerabilities discovered in Android’s Rust code." (и это после двух лет разработки и полутора млн строк кода)
>разработка на расте продуктивнее в два раза разработки на плюсахВ новости так-то видна цена этой "продуктивности", даже переписать по готовому не могут ржавые товарищи...
Так "продуктивно" переписывать можно абсолютно на любом языке, если что...
> В таком случае приведите пожалуйста пример хорошего по-вашему кода на языке с хорошим синтаксисом.Ты не видел сишечных портянок с goto?
>Ты не видел сишечных портянок с goto?Это наезд или пример красоты языка?)))
> на Rust в принципе нельзя писать нормальный кодДа, Вы правы в этом высказывании.
Но это не моё высказывание. Это нормальный вопрос, на который вы не способны дать нормальный ответ. Почему? Потому что ваша реакция и аргументы эмоциональные, а не рациональные.
В расте нельзя написать безопасный код. Там в самом компиляторе сделана возможность подсовывать программе переменные окружения, которые она не будет проверять.
Трудно понять, что вы имеете ввиду. Приведите пожалуйста пример кода.
> Трудно понять, что вы имеете ввиду. Приведите пожалуйста пример кода.С реддита. Используется rust-coreutils
$ USER=root ls -la /rootБакс из приглашения командной строки пользователя.
В багзиле редхата висит подтвержденная бага на эту тему.
## If I do `grep unsafe` why do I find hundreds of occurrences?Because they are necessary.
The `unsafe` keyword is part of Rust's memory safety design. The most important thing it allows is dereferencing "raw pointers", and calling other functions marked as "unsafe", such as those found in the C library. Because sudo-rs is a system utility, it needs to interface with the operating system and system libraries, which are written in C. Most of the `unsafe` code in sudo-rs lives at those seams. A prime example of this is the `setuid()` function itself---without which it would be really hard to write sudo.
Also note that about half of our `unsafe` blocks happens in unit test code---to test our "unsafe parts". For the other half, every usage of `unsafe` is accompanied by a `SAFETY` specification, every one of which has been vetted by at least two sudo-rs team members.
Finally, wherever it was possible, we use [Miri](https://github.com/rust-lang/miri) to test our `unsafe` blocks to be sure we didn't create any so-called "undefined behaviour".
We have seen some attempts at 'myth busting' Rust code by counting the number of times `unsafe` occurs. But that is mistaking the forest for the trees. Of course we understand the criticism: sudo-rs is a new program and needs to prove itself. But we are not spreading myths about sudo-rs having "memory safety-by-design" at its core.
At the very least, a few hundred lines of well-documented `unsafe` code is still less than hundreds of thousands of them.
Сложные ошибки переполенения и указателя все освоили, даже все поняли в чём их суть. Это стало скучно и не инстересно. Теперь все изучают бизнес ошибки при кодировании) Очевидно же было что так будет. Или нет?)
а есть ли эти ошибки в оригинальном sudo?
у тебя спека на оригинальный sudo есть?
Ну была недавно одна, но такая себе, не очень критичная. Всего лишь получение прав рута любым юзером в системе https://www.opennet.dev/opennews/art.shtml?num=63505
Причём заметьте, не имеет отношения к "сишным дыреням" (нет проблем с памятью).
> Причём заметьте, не имеет отношения к "сишным дыреням" (нет проблем с памятью).Да, но вот есть аналогичная, но как раз сишная дырень с переполнением буфера
opennet.ru/opennews/art.shtml?num=54474
Причем прожила незамеченная целых десять лет, что уже тянет на закладку.
Бесполезная трата времени и сил, все эти переписывания. Хотя… Думаю это неспроста, такое рвение - попытка отжать у сишников всё, что они создали за многие годы.
Еще не нужно забывать про сменую лицензии обычно. Тоже неспроста.
В чем попытка отжать? Что значит "отжать у сишников"? Сишникам запрещено писать на расте что ли? Сишникам запрещено продолжать развитие своего судо?
и постоянно недоделки и ошметки какие-то на Rust, но зато "безопасно"
а то что свалится из-за несовместимости переписываний "не наши проблемы"
Безопастно!
> попытка отжать у сишников всёОтжали ровно 0 у.е. Удачи отжимать и дальше :)
отжали 826 тысяч евро у Sovereign Tech Fund https://www.opennet.dev/opennews/art.shtml?num=64105
> отжали 826 тысяч евроэт не они отжали, а на них помочились те же Sovereign Tech Fund, ибо для них это отмыв (откат). Они также завтра будут мочится на другой ЯП, который придет заменять ваш раст :)
> Бесполезная трата времени и сил, все эти переписывания. Хотя… Думаю это неспроста,
> такое рвение - попытка отжать у сишников всё, что они создали за многие годы.Не, там другое. Корпорациям не очень удобно жить с GPL в юзерспейсе. Вся суть переписывания -- в смене лицензии на пермиссив.
А то, что оно на другом языке, гарантирует отсутствие лицензионных претензий: никто не сможет даже в шутку сказать, что это производный продукт.
По той же причине Canonical спешит отестировать Rust-овые утилиты в дефолтной поставке.
>> Бесполезная трата времени и сил, все эти переписывания. Хотя… Думаю это неспроста,
>> такое рвение - попытка отжать у сишников всё, что они создали за многие годы.
> Не, там другое. Корпорациям не очень удобно жить с GPL в юзерспейсе.
> Вся суть переписывания -- в смене лицензии на пермиссив.
> А то, что оно на другом языке, гарантирует отсутствие лицензионных претензий: никто
> не сможет даже в шутку сказать, что это производный продукт.
> По той же причине Canonical спешит отестировать Rust-овые утилиты в дефолтной поставке.Какое им дело до sudo или coreutils?
Соглы. Одно только "но": почти бесполезная.
> Бесполезная трата времени и сил, все эти переписывания. Хотя… Думаю это неспроста,
> такое рвение - попытка отжать у сишников всё, что они создали
> за многие годы.Вот я склоняюсь к тому же: сообщество создало и оттестировало годную ОС и теперь КОПРОраты отжимают...
Смысл переписывания в том, что вполне возможно Rust компилятор добавляет нужную закладку в конечный продукт. В исходном коде компилятора конечно это не найдёшь, так как он компилируется предыдущей версией компилятора, в бинарнике которого присутствует код добавления закладки.
> компилятор добавляет нужную закладку в конечный продукттак это всякий компилятор всякого ЯП по определению может делать. Молчу уже про то, что эта хня в любой момент времени по необходимости может происходить с новым "релизом".
Ну и объясните в чём был смысл. Были одни уязвимости стали другие а учитывая что поделие новое там еще вагон невыявленых уязвимостей.
Были критические уязвимости, а стали несущественные, которые и за уязвимости трудно принять, так как по сути атакуешь сам себя.Из недавних дыр в sudo:
https://www.opennet.dev/63505 - получение прав root
https://www.opennet.dev/58507 - изменение любого файла в системе
https://www.opennet.dev/54474 - получение прав root
https://www.opennet.dev/54394 - смена владельца произвольного файла
https://www.opennet.dev/52284 - получение прав root
https://www.opennet.dev/51675 - повышение привилегий
https://www.opennet.dev/46633 - перезапись файла в обход SELinux
https://www.opennet.dev/32942 - получение прав root
ну так всё еще впереди. срок эксплуатации этого несравнимо мал по отношению в оригиналу.
В оригинале тоже будут находить новые дыры, так что их всегда будет больше.
но тогда зачем эта суета с переписыванием
> но тогда зачем эта суета с переписываниемЧтобы избавиться от дыр с памятью и сконцентрироваться только на логических.
И как можешь заметить, score у этих уязвимостей очень маленький.
получение прав рута это маленький score? ну-ну
Зачем его получать, если он уже есть? Ты читал описание уязвимости то?> привилегированный пользователь, имеющий полномочия выполнения через sudo
> Ты читал описание уязвимости то?"""
Уязвимость имеет смысл только при включении в настройках sudoers флагов rootpw и targetpw, которые по умолчанию отключены и поддерживаются начиная с версии sudo-rs 0.2.5, опубликованной в апреле.
""""""
Подразумевается, что изменение данных настроек должно менять поведение утилиты sudo, которая с этими настройками должна требовать пароль целевого пользователя, а не пароль текущего пользователя.
""""""
Уязвимость в том, что поведение не меняется и привилегированный пользователь по-прежнему МОЖЕТ использовать свой пароль для выполнения команд под root, хотя при активных флагах targetpw и rootpw ДОЛЖЕН ввести пароль root.
"""Коротко, у вас есть возможность исполнить от рута при знании пароля рута. Уязвимость в том, что вам достаточно ввести свой пароль, а не рутовый. Реальный юзер может знать рутовый пароль, но злоумышленник пароль рута не знает.
Но конечно же это выглядит абсурдным, вопрос, зачем мне sudo если я знаю рутовый пароль? В чем смысл sudo? Разрешать исполнять команды от другого пользователя, но для этого необходимо мне ввести пароль того пользователя? Это что за логика такая?
>Но конечно же это выглядит абсурдным, вопрос, зачем мне sudo если я знаю рутовый пароль? В чем смысл sudo? Разрешать исполнять команды от другого пользователя, но для этого необходимо мне ввести пароль того пользователя? Это что за логика такая?Чтобы не делать полноценный логин например, подхватить свой env и ещё куча возможных применений
> подхватить свой env и ещё куча возможных применениймы же фактически команду другого пользователя исполняем, которая работает с его же env, никто же не будет проектировать программу, требующую доступа к файлу (окружению), к которому нет доступа. Разве команда исполняющаяся от пользователя A, которая должна записать файл в путь HOME (переменная окружения, к примеру) сможет записать если в HOME=/home/B ?
>Разве команда исполняющаяся от пользователя A, которая должна записать файл в путь HOME (переменная окружения, к примеру) сможет записать если в HOME=/home/B ?Сможет.
man sudo
Там много чего интересного
> Сможет.sudo -u A touch /home/B/test_file.txt
Точно сможет? У А ведь нет прав на запись в B.
> но тогда зачем эта суета с переписыванием* сломать работающий опенсорс, создав зоопарк
* изменить лицензию
* внедрить технологию, которую сложно/долго собирать с нуля, а значит поощрать использование бинарей
Это другое
По отношению к чему? К ошибкам работы с памятью? Да, другое. По отношению к логическим ошибкам? Нет, оно самое.
Ну уязвимость и уязвимость, с кем не бывает!Большинство раздражает Rust пропаганда, так же как и ЛГБТ (деятельность в РФ запрещена) пропаганда. К языку программирования Rust и к программистам Rust претензий нет, так же как и нет претензий к геям и другим представителям.
И зачем надо было переходить на раст? Чтобы получить тоже самое что было?
Получили другое.
Как же так??? Обещали безопасно будет :D
Безопасную работу с памятью обещали.
sudo apt-get remove coreutils-from-uutils --allow-remove-essential
sudo apt-get install coreutils-from-gnu/etc/apt/preferences.d/uutils:
Package: coreutils-from-uutils
Pin: release a=*
Pin-Priority: -10как-то так
спасибо
я потестирую еще это решение прежде чем применять к основной системеapt install coreutils-from-gnu coreutils-from-uutils- --allow-remove-essential
что любопытно
Larger image size: A Docker image currently is 75 MB large. Rust-coreutils come in at 25 MB vs 7 MB for the classic coreutils, increasing the image size by 18MB to 93MB (+24%).
из-за rust coreutils распух Docker образ O_o судя по этой записи Migration to rust-coreutils in 25.10 на сайте обсуждений Ubuntu
Под ubuntu его непойми как собрали, бинарь uutils собранный вручную занимает 9 мбайт у меня (на 2 мбайта больше чем gnu coreutils)
Это же кто-то подтвердил и под оригинальной новостью https://discourse.ubuntu.com/t/migration-to-rust-coreutils-i...
И не проверить, что именно добавлено, ведь то, как ложится логика кода на ассемблер - только той самой версии компилятора и ведомо, безопасно, не так ли?
> И не проверить, что именно добавлено, ведь то, как ложится логика кода
> на ассемблер - только той самой версии компилятора и ведомо, безопасно,
> не так ли?Ох уж этот миф про то как код на ассемблер ложится, C/C++ тем же самым оптимизатором обрабатывается, там всё так же запутано.
Скорее всего в системе сборки дебиана не смогли strip/LTO настроить, впервые что ли.
> из-за rust coreutils распух Docker образ O_o судя по этой записи Migration
> to rust-coreutils in 25.10 на сайте обсуждений Ubuntuhttps://packages.debian.org/bullseye/coreutils
> 17,478.0 kBУ них там какой-то свой, особый корутилс?
Ну и да:
pkg rquery %n-%sh coreutils rust-coreutils
coreutils-18.6MiB
rust-coreutils-10.9MiB
sudo apt install coreutils-from-gnu coreutils-from-uutils- --allow-remove-essentialвсе сработало (пока)
взято из Migration to rust-coreutils in 25.10 и Ubuntu 25.10: How to Revert to GNU Coreutils
Интересно какой у них процесс был.
Так то надо брать все написанные тесты для sudo и прогонять их на sudo-rs. И вот если это было сделано, то это вопрос к авторам sudo на тему отсутствия таких тестов.
> это вопрос к авторам sudo на тему отсутствия таких тестовТочняк, это всё Си-шники виноваты! :D
>CVE-2025-64170 - ошибка, из-за которой не до конца введённый пароль выводился в стандартный входной поток и показывался в консоли,Бизапасненько так.
И снова логические ошибки, а не ошибки работы с памятью. В отличие от поделок на Си. Что и требовалось доказать.Раст конечно позволяет уменьшить количество логических ошибок тоже, но для этого программист должен уметь кодировать инварианты в типы, а это увы умеют не все, тут уж компилятор не заставит сделать правильно, в отличие от работы с памятью.
На этих, как ты выразился, "поделках на Си", весь Земной Шар IT стоит и ничего, крутится и не падает!
Ты адепт секты "не сломалось - не чини"? Потому что во-первых сломалось, а во-вторых весь технический прогресс построен на том, что люди чинили то, что "не сломалось".
> поделках на Си
> не падаетСишные проги не падают? 😂 Вот это новости!
Любые проги при определённых условиях падают... Главный вопрос - приводит это к катастрофам или нет.
> И снова логические ошибки, а не ошибки работы с памятью.Так эксплуатировать твою логическую ошибку может каждый васян, а поди проэксплуатируй ошибку с памятью со всякими роп-геджетами и обходами рандомизации адресного пространство.
То есть ты как бы намекаешь на то, что логические ошибки - это плохо. Отлично, на расте проще писать программы без ошибок логики, чем на сях, так что это ещё один аргумент за раст. Спасибо.
> То есть ты как бы намекаешь на то, что логические ошибки - это плохо."""
Уязвимость в том, что поведение не меняется и привилегированный пользователь по-прежнему может использовать свой пароль для выполнения команд под root, хотя при активных флагах targetpw и rootpw должен ввести пароль root.
"""Вот вам логическая ошибка, которую может проэксплуатировать любой васян. Помните новость про то как ребенок рандомно поклацал по клаве и разблокировал отцовский гномовский воркстейшен. Вот к чему я, логическая ошибка (архитектурный изъян) куда опаснее всяких ошибок памяти.
Вот вам книжка К. Касперский - Техника сетевых атак, которую многие из нынешнего поколения в глаза не видели.
> на расте проще писать программы без ошибок логики
Раст разве такое гарантирует? Логикой оперирует человек, а не ЯП.
> так что это ещё один аргумент за раст. Спасибо.
Сделав зубья граблей такими, что они не прокалывают вам ноги, вы не избавились от проблемы, что при наступание они не расшибут вам лоб!
> > на расте проще писать программы без ошибок логики
> Раст разве такое гарантирует? Логикой оперирует человек, а не ЯП.Каким образом у вас "проще" превратилось в "гарантирует"?
Дайте растохейтера который умеет читать и в логику, пожалуйста. А то пока только попадаются фантазёры, спорящие с голосами у себя в голове, а не с написанным.
Если же вдруг в вопросе имелось ввиду "чем проще?", то: typestate pattern, tagged unions (enum), must_use, Result, type parameters, traits, и так далее. Больше удобнвх инструментов, позволяющих закодировать инварианты в системе типов, которые потом проверит компилятор. Другими словами: проще сделать API, которым невозможно неправильно воспользоваться. Про это ещё часто говорят "еслм собралось - значит работает", хотя конечно это преувеличение в абсолютном смысле.
> Про это ещё часто говорят "еслм собралось - значит работает", хотя конечно это преувеличение в абсолютном смысле.Это не преувеличение, это прямая причина ошибок, подобным сабжевым. Хайповые маркетинговые нахваливания раста вбивают в головы ржавонеофитов эту мантру, ну и итог закономерен.
> Каким образом у вас "проще" превратилось в "гарантирует"?а что есть "проще"? разве логика программы зависит от используемого ЯП? Вы утверждаете, что "проще писать программы без ошибок логики" - ну вот где доказательства (считай гарантии), что при переписывании (написании) программы на ЯП раст вы не допускаете логических ошибок?
Повторяю, разве логическая ошибка зависит от используемого ЯП?
> Дайте растохейтера который умеет читать и в логику, пожалуйста. А то пока
> только попадаются фантазёры, спорящие с голосами у себя в голове, а
> не с написанным.в смысле "который умеет читать и в логику"? я не понял вашей мысли, перефразируйте.
> Другими словами: проще сделать API, которым невозможно неправильно воспользоваться.
а кто это делает? ЯП или человек? ЯП - инструмент в руках человека. Если человек криворук и не дружит с логикой - ни какой ЯП ему не поможет.
Вернемся к сабжу, указанная в новости логическая ошибка имеет место быть в сишной версии sudo - да или нет?
Чем вам замена грабель на грабли без зубов поможет уберечь ваш лоб?
> Про это ещё часто говорят "еслм собралось - значит работает", хотя конечно это преувеличение в абсолютном смысле.Говорить можно все что угодно, истина ведь одна (с соответствующим доказательством).
>а что есть "проще"? разве логика программы зависит от используемого ЯП?Ещё как. Пример - реализуйте двусвязаный список на расте
> Ещё как. Пример - реализуйте двусвязаный список на растену ка, дайте определение двусвязного списка.
Определение найдёте в любом учебнике
Банально, но в стандартной библиотеке естьUse a LinkedList when:
You are absolutely certain you really, truly, want a doubly linked list.
//doc.rust-lang.org/std/collections/index.html
Но вы, я думаю, имели ввиду реализацию средствами самого языка, модель языка может вам и не позволит это реализовать ввиду ограничений. Тоже самое я могу сказать про всякие longjump-ы в Си, попробуйте их реализовать без asm.
>Но вы, я думаю, имели ввиду реализацию средствами самого языка, модель языка может вам и не позволит это реализовать ввиду ограничений.Именно об этом и речь
> Именно об этом и речья не вижу в этом проблемы, язык говорит о своих ограничениях и зачем они необходимы, в том же Си свои ограничения. А если мы хотим избавить себя от всех этих ограничений, то мы должны использовать асм.
тут реализация, как видим одни unsafe и сырые указатели.//github.com/rust-lang/rust/blob/main/library/alloc/src/collections/linked_list.rs
"поддерживаются начиная с версии sudo-rs 0.2.5... Подразумевается, что изменение данных настроек должно менять поведение утилиты sudo, которая с этими настройками должна требовать пароль целевого пользователя, а не пароль текущего пользователя."Просто не надо было это делать. Зачем это вообще?
> "поддерживаются начиная с версии sudo-rs 0.2.5... Подразумевается, что изменение данных настроек должно менять поведение утилиты sudo, которая с этими настройками должна требовать пароль целевого пользователя, а не пароль текущего пользователя." Просто не надо было это делать. Зачем это вообще?И снова ржавуны ищут альтернативный "правильный" мир для раста... Ребята, вы пишете прозрачную замену для утилит GNU? Вы обязаны повторить их поведение точь-в-точь. Нравится вам это, не нравится -- вы на это подписались. Точка.
Да мне без разницы, на чем это написано. Утилиты с suid bit должны быть максимально простыми. А такая логика, которая по определению не покрывается никакими инвариантами типов, и на которую даже вменяемый тест не напишешь, должна быть под запретом. OpenBSD-шный doas - пример того, как надо.
> ошибка, из-за которой не до конца введённый пароль выводился в стандартный входной поток и показывался в консолиТам что, реально вот так прям написано?
if (strlen(entered_password) < strlen(real_password)) {
printf("%s\n", real_password);
}А зачем такой код вообще написали? И у аудиторов не возникло вопросов?
PS. Это не то что смешно, это страшно.
Эта закладка делалась, чтобы пароль иногда случайно оседал во всяких логах, откуда его уже можно добыть разными методами.
Нет конечно же. Вы невнимательно читали плюс там кривая формулировка ("...не до конца введённый пароль..."). Думаю, там не про сравнение длины "реального" и "введенного" паролей, а формулировку "не до конца введённый пароль" правильнее было бы заменить на "ввод, не завершенный/подтвержденный Enter'ом". Там наверняка про ввод произвольной длины произвольного текста (а не "меньшей длины реального пароля"), который не был завершен Enter'ом. Скорее всего тупо при истечении таймаута при ожидании Enter'а они зачем-то дампили буфер ввода в out. А в буфер с клавиатуры могла быть введена любая галиматья, а не обязательно "половина настоящего пароля". И эта галиматья тоже бы задампилась, если бы подождали таймаут.
> Скорее всего тупо при истечении таймаута при ожидании Enter'а они зачем-то дампили буфер ввода в out.Ну то есть у них там тогда вот так что ли написано?
timeout = read_password_into(password_buffer);
if (timeout) {
printf("%s\n", password_buffer);
}Страшно, очень страшно, если бы мы знали что это такое, мы не знаем что это такое.
И опять же - у аудиторов не возникло вопросов?
> И опять же - у аудиторов не возникло вопросов?нет спеки - нет аудита, о чем речь вообще?
> Примечательно, что до этого кодовая база sudo-rs успешно прошла два независимых аудита безопасности.
где спека (модель) безопасности данного проекта?
Его спека это код оригинала на Си.
Спеку не аудитят, аудит чего они проводили?
Эта музыка будет вечной!-- Ржавуны, ну как же так, вы опять хрень написали?!
-- А у нас memory safety, а больше мы вам ничего не обещали! У нас зато все ошибки -- это безопасные, святые, правильные ржавоошибки! И вообще, отцепитесь, у нас тут чекер боровов опять не дает проект собрать...
Еще не в спячке, шатун? Жирка не поднакопил, покушать пришел?> Эта музыка будет вечной!
Пока код пишут кожаные мешки - да, "логические" ошибки будут создаваться вечно, на любых языках. Это только сишники утверждают, что (произвольный) "безопасТный язык" взаместо программистов должен написать без ошибок и систему расчета зарплаты на предприятии и программу просмотра картиночек из инторнетов и всё-всё-всё остальное. Самое омерзительное, что свои глупые выдумки сишники приписывают разработчикам на других языках, а потом с остервенением бросаются их опровергать.
> "логические" ошибки будут создаваться вечнолюбая некорректная работа с памятью в Си приводящая к ошибке есть логическая ошибка!!! Это как 2+2=5, вычислил без калькулятора, ну получи выход за границы массива. И тут приходит растовик и предлагает всегда пользоваться калькулятором, в итоге что? Итог один - деградация, 2+2 сложить не способны.
> Это только сишники утверждают, что (произвольный) "безопасТный язык" взаместо программистов должен написать без ошибок
Выше я привел аналогию с граблями, с переходом на раст вы не избавились от ситуации когда граблями получаете по лбу.
> есть логическая ошибкаПотому и написано "логическая" (в кавычках), а не логическая. Я думаю Вам, как и всем тут, всё понятно, а Вы просто цепляетесь. Имеется в виду то самое гугловско-мелкомягкое разделение всех ошибок на две группы - на 70% ошибок работы с памятью и 30% оставшихся (как их любят называть на этом сайте, чтобы определить одним словом - "логические").
> Потому и написано "логическая" (в кавычках), а не логическая.Ну дайте определение "логическая" (в кавычках) - я чет не понял. Повторяю, некорректная работа с памятью в Си есть логическая (без кавычек, в прямом смысле слова) ошибка. Просто других ошибок и не бывает, ибо всякий алгоритм это логическая пошаговая запись. Любые ошибки связанные с информационной безопасностью - такие же логические ошибки, ибо нарушают логику следования определенным правилам описанным в модели безопасности.
> Я думаю Вам, как и всем тут, всё понятно, а Вы просто цепляетесь.
К словам? Так и надо, а как иначе если вы пренебрегаете строгостью определений.
> Имеется в виду то самое гугловско-мелкомягкое разделение всех ошибок на две группы
А здравый смысл мы уже потеряли? Кто такой гугл-мелкомягкие, чтобы давать такие определения? Вот поэтому отравлены мозги нынешней молодежи непонимающие, что ошибки работы с памятью, как ошибка, ничем не отличается от "логических" (в кавычках) ошибок, которые они имеют ввиду.
> Еще не в спячке, шатун? Жирка не поднакопил, покушать пришел?Как это по-анонимски -- цепляться к никам. Что-то умное можешь сказать?
>> Эта музыка будет вечной!
> Пока код пишут кожаные мешки - да, "логические" ошибки будут создаваться вечно,
> на любых языках. Это только сишники утверждают, что (произвольный) "безопасТный язык"
> взаместо программистов должен написать без ошибок и систему расчета зарплаты на
> предприятии и программу просмотра картиночек из инторнетов и всё-всё-всё остальное. Самое
> омерзительное, что свои глупые выдумки сишники приписывают разработчикам на других языках,
> а потом с остервенением бросаются их опровергать.Ох уж эти сишники, вечно обижают бедных растунов... А ничего, что и в этом, и в предыдущих тредах всплывает любимая повторялка растозависимых "у нас программа если компилируется -- то работает! уууух!" Причем они ж буквально это понимают, судя по результатам, и придумали ее явно не злобные сишники. Я уж не говорю о том, что растики не скупятся на личные оскорбления всех, кто с ними не согласен, ты тому живой пример.
> Что-то умное можешь сказать?Вам? Бесполезно. Вам постоянно говорят. А вы по кругу повторяете лозунги, ложность которых вам доказали. До вас не доходит. Не в коня корм.
Потому и складывается мнение, что или вы простые тролли, покушать зашли (наверное таких вас большинство), или необучаемы и профнепригодны.
Так что я Вам даже польстил, всего лишь назвал троллем.
Дело не в том, что раст плохой язык. Просто раст, по факту, принадлежит Google, а C - общественности. Дело в смене лицензии и медленном отжиме у общество её собственности через внедрения раст в свободные продукты.
>Дело в смене лицензии и медленном отжиме у общество её собственности через внедрения раст в свободные продукты.Фуф дошло. Не зря жизнь прожил.
Хейтеры раста сами вряд ли вообще занимаются безопасностью и пентестом. Они его хейтят просто потому что так принято в этом сообществе.Ни одна корпорация не стала бы переводить критические узлы просто потому что модно. Сишный код дает в разы больше возможных сценариев атак. Если бы sudo-rs и uutils были недостаточно готовыми, то никто бы не одобрил такой переход. Это долгосрочная стратегия. Сишный код - ошибки логики и ошибки работы с памятью. Раст - только ошибки логики. До 70% уязвимостей связаны с памятью. И их продолжат находить вне зависимости от вашей любви к си.
Лицензия тут ни при чем. Вне зависимости от лицензии экспулатация уязвимости принесет многомилиардные убытки. Расходы на лицензию не сравнить с расходами на уязвимость.
> Ни одна корпорация не стала бы... заниматься самодеятельностью, все по указке тов. майора. (аксиома)