LINUX.ORG.RU
ФорумTalks

70% багов в Chrome из-за неверной работы с памятью

 , , ,


1

4

https://www.chromium.org/Home/chromium-security/memory-safety

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

Что на это скажут приверженцы «они просто не умеют писать на C/C++», «в C++ тоже есть умные указатели, зачем вам этот раст» и «понанимали дебилов»?

Из интересного, они рассматривают вариант использования своей/патченой std и бан сырых указателей на уровне компилятора.

★★★★★

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

Я, возможно, открою вам глаза, но раст в этой области ничего принципиально нового не делает. Те же конструкторы и деструкторы, что и в С++, но сделанные по-человечески. Киллер-фичей являются тайпклассы и лайфтаймы уровня языка вкупе с borrow checker’ом, предотвращающие большую часть ошибок с ссылками и параллельным доступом.

правильные подходы

Нет. Более того, стандартная библиотека еще и принуждает тебя использовать неправильные подходы, так как обновляют ее раз в несколько лет и хранят обратную совместимость. Работа с файлами – позорище. Работа с путями – позорище. Вектор – позорище, особенно конструкторы и работа с resize/reserve. Право, с сишной стандартной библиотекой приятнее работать. Именно поэтому каждая крупная компания выкатывает свою стандартную библиотеку – чтобы не иметь дела с этим.

На С++ можно писать большие, надежные программы, без уязвимостей и багов. Вопрос как в денежной стоимости, так и в временных затратах. Раст позволяет делать это дешевле, особенно при расчете на долгий срок.

Siborgium ★★★★★
()
Последнее исправление: Siborgium (всего исправлений: 2)
Ответ на: комментарий от LamerOk

Конструкция unsafe, в которой тебе придется писать такой код. Язык не может предоставить гарантии в такой ситуации, поэтому их предоставляешь ты сам. Если накосячишь, то будет проще найти предположительное место ошибки.

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

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

От чего у меня должен происходить разрыв шаблона? От мнения человека, который не осилил скачать latest nightly и потестить?

Сразу виден уровень растеров, для них скачать и запустить что то запредельное, в их мирке не каждый это осилит!

Нет, это важно.

Это другое, да.

stasolog
()
Ответ на: комментарий от Kroz

И С++ заставляет тебя использовать правильные подходы, которые одинаково хорошо работают как с памятью, так и с другими ресурсами.

По этому моя любимая конструкция в c++ это

class A {
private:
  /* const */ std::vector<float> values;
};

Внимание вопрос! Почему я не напишу тут const, хотя это константные данные?

Вместо этого я пишу комментарий!

Правильные подходы!

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

Я не критикую синтаксиси раста, я критикую подход.

Который просто развитие RAII плюсов и анализа регионов. То есть ты критикуешь подход C++ и одновременно защищаешь его, ок.

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

Не томи, давай, расскажи уже какие конструкции раста защитят от чтения/записи по неверному смещению в файле?

Лайк, если защищен от чтения по неверному смещению с помощью божественной системы типов c++.

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

Сразу виден уровень растеров, для них скачать и запустить что то запредельное, в их мирке не каждый это осилит!

Ты не осилил и этого, но писать чушь тебя хватает.

Это другое

Это действительно другое, и я объяснил почему.

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

Ты не осилил и этого, но писать чушь тебя хватает.

Осилил. Твои оправдания?

stasolog
()
Ответ на: комментарий от Kroz

О, у нас видимо уже третий человек готов представить нам хотя бы один проект, где не было багов из-за memory management. Ну хотя бы один, ну пожалуйста.

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

Сударь, в очередной раз имею вам сообщить, что вы скудоумный «малолетний дебил» (с).

Сложно найти человека, который бы относился к чистому Си хуже, чем я. И чем больше мне приходится иметь дело с чистой ламповой сишечкой, тем хуже я к этому языку отношусь.

Приплести меня в качестве «правильного С программиста» мог только человек с говном в башке, вроде вас.

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

Вы вполне могли сраться в очередной раз по поводу «C++ нужно закопать, а Rust лучше всех» самостоятельно. Делая вид, что от ваших споров здесь что-то изменится и в индустрии вот прямо с завтрашнего дня после ваших убедительных доводов в LOR-овском talks все резко поменяется. А по сути, вы здесь ничем не лучше бабулек с семечками на лавке у подъезда.

И если какому-то недоумку вздумалось позвать на ваши посиделки еще и меня, то почему бы мне не высказать то, что я думаю по этому поводу?

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

Я ни из какой не из секты. Мне кажется большинство из этих багов быстро были закрыты или возпроизводятся в тепличных(или редких) условиях или имеют преувеличенную опасность.

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

Почему так много батхерта? Каст в невинный топик вызывает у взрослого мужика приступ визгливой ругани? Камон, имей достоинство.

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

Какой-то форумный нонейм решил порассуждать о достоинстве?

От вашей унылой клоаки хочется держаться подальше. Во многом из-за царящей на профильных формах гремучей смеси из анонимной смелости, тупости и лицемерия.

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

eao197 ★★★★★
()

Забавно, что здесь сторонники и противники rust поменялись местами. Обычно торг идёт по теме «если есть хоть один unsafe, значит код небезопасный, значит фигня этот раст». Теперь же «если есть хоть одна ошибка в большом проекте на С, значит С отстой, переписывать на rust». Продолжаю наблюдение.

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

Ты не совсем правильно интерпретировал ход дискуссии. После того, как выяснилось, что 70% critical багов в Chrome это memory issues, некоторые личности начали утверждать, что это программисты плохие, и на самом деле при прямых руках memory issues не возникают. Правда потом выяснилось, что никто не может привести ни одного проекта, где люди бы не стреляли себе в ноги.

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

Это уже детали. Меня больше интересует общий ход спора (и этого и предыдущих): покажи «100% безопасный код на rust», нет, это ты покажи «100% безошибочный код на c», нет, ты, нет, ты и т.д. и т.п.

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

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

Это принципиально важный вопрос, на самом деле.

Ну как бы если люди говорят, что в хроме быдлокодеры, то может они знают не быдлокодеров?

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

Взрослый мужик реагирует воплями про говно в голове и школьников на упоминание своего проекта? Да нет, не мерещится :D

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

но тогда утечек вообще нет, т.к. память будет возвращена когда процесс завершится

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

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

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

Да. Как собственно и все твои доводы. Все это именно субъективно. Но вот я что точно могу сказать: за последние пять лет ежедневного использования хрома, у меня ни разу он не зависал, не падал, не вешал систему, не вызвал утечку моих данных и прочее. Может те несколько сотен уязвимостей, что ты упомянул не такие уж и уязвимости.

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

openssl хотя бы проходил аудит и его проблемы известны

Как ни парадоксально, все хотят аудит, но никто не хочет давать деньги.

https://github.com/ctz/rustls/issues/189

Классическая «tragedy of the commons»: выигрывают все, но платить кому-то надо, поэтому все ждут пока кто-то другой заплатит.

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

Простите, вы случайно не применяете ли логику «Аспирин не панацея, кроме него есть и другие лекарства, долой аспирин»?

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

Это не эквивалентно. Эвивалентный пример был бы: смена врача пневмонию не вылечит, если назначения не выполнять. Или более явно: если процесс разработки где-то нарушен (в результате слишком нереалистичных сроков например), то на плюсах или расте один хер будет говнокод.

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

Но смена врача, который использует лекарство на основе оружейного нитроглицерина (в рекомендациях: «не встряхивать, не подвергать воздействию света, принимать в тёмной комнате в бронежилете класса 6а»), может чему-нибудь и поможет.

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

Забавно, что здесь сторонники и противники rust поменялись местами.

Разве что в том смысле, что Сишники в этой теме выставляют себя безумными фанатиками.

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

Не дураки. Ты понимашь, что значит процесс разработки? У них может быть смещен фокус в сторону выявления багов, а первоначальное кодирование идет более быстрыми циклами. К тому же баги то, они выявили и устранили.

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

Не поясничай пожалуйста. Баги были устранены, значит дело закрыто.

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

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

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

Аффтар написал, что «looks like this is happening, stay tuned for a couple of months». Пожелаем ему удачи что ли.

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

Я не имел ввиду врачей дебилов.

Э? А кто рекомендует: «Не использовать a+1, если есть вероятность, что a == INT_MAX. Не использовать a[i], если есть вероятность, что a+i выходит за границы аллоцированной области больше чем на 1 байт (размер байта смотри в приложении 1). Не использовать free(ptr), если ptr не был получен с помощью malloc или аналогичных функций или если уже был вызов free(ptr). Не использовать несколько операций над одним значением для которых не определены точки следования. Не использовать чтение и запись в одну и ту же область памяти из разных потоков без синхронизации. Не использовать итератор, если он был инвалидирован (список операций, которые инвалидируют итераторы для разных структур). И т.д., и т.п.»

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

red75prim ★★★
()
Последнее исправление: red75prim (всего исправлений: 2)
Ответ на: комментарий от rumgot

Или более явно: если процесс разработки где-то нарушен …, то на плюсах или расте один хер будет говнокод.

А это уже линия рассуждения «а не надо ошибаться, тогда и ошибок не будет». Надо ли объяснять что с ней не так?

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

А с другой стороны от отрицания «используешь unsafe == rust не нужен» идёт переход к торгу «ошибки есть, но мало, а вот покажите свои проекты …», что уже свидетельствует о немалом прогрессе.

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

идёт переход к торгу «ошибки есть, но мало, а вот покажите свои проекты …», что уже свидетельствует о немалом прогрессе.

Просто флакон забросил в толксы, главные участники вообще не заметили вброса.

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

Напиши ещё пять раз «@eao197 – сишник» и он весь тред своими батхертами заполнит.

kirk_johnson ★☆
()
Последнее исправление: kirk_johnson (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.