LINUX.ORG.RU
ФорумTalks

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

 , , ,


1

4

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

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

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

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

★★★★★

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

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

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

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

Дык фаерфокс же.

(Я из будущего.)

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

Да, я в курсе. Секта Свидетелей Святого C игнорирует вопросы в духе «можете показать хоть один проект, где не обосрались с памятью?».

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

А чем секта свидетелей не-портящего-память Rust в этом отношении лучше? Только тем, что на швитом Rust ничего путного не сделано в отличие от позволяющей-ходить-в-память-по-указателю сишки?

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

Аргумент «на Rust нет популярных (среди кого, кстати) проектов поэтому ОН ТАКОЙ ЖЕ ДЫРЯВЫЙ КАК C» – не аргумент. Потому что safe Rust дает гораздо меньше поводов обосраться с памятью, чем C, просто на уровне синтаксиса.

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

safe Rust дает гораздо меньше поводов обосраться с памятью

А с этим кто-то спорит?

Вот только и большого сложного полезного софта на Rust не наблюдается. Не потому ли что на нем что-то сложнее нескучного cat/grep написать слишком проблематично?

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

Вот только и большого сложного полезного софта на Rust не наблюдается.

alacritty, rustls, boring tun.

Не потому ли что на нем что-то сложнее нескучного cat/grep написать слишком проблематично?

Не потому ли, что языку всего пять лет? Алсо grep написать довольно сложно, лол.

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

alacritty

Не берусь судить о популярности, но

  1. 33 мегабайта исходников для единственного эмулятора терминала? Там что, пак нескучных текстур в комплекте идет?
    [ebuild  N     ] x11-terms/alacritty-0.4.0::gentoo  USE="-debug" 33590 KiB
    
  2. https://github.com/alacritty/alacritty/issues/673 — подобный дискомфорт хуже CVE. Надеюсь, что это не rust такой тормозной, а просто авторы такие криворукие.

rustls

Где ПРОДУКТ? Это какая-то библиотека (кстати, gmp внутри не пользует?)

boring tun

Лол, а миллионы пользователей по всему миру в курсе? Типичная история узбеха.

BoringTun is successfully deployed on millions of iOS and Android consumer devices as well as thousands of Cloudflare Linux servers.

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

Где ПРОДУКТ?

Это TLS библиотека. Ты можешь выкинуть дырявый openssl и взять её.

Это какая-то библиотека (кстати, gmp внутри не пользует?)

Нет, не использует.

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

подобный дискомфорт хуже CVE

А ну да, конечно, input latency хуже code execution %)

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

ну хоть какая-то конкретика. про высокие позиции это явно про actix. Когда я его смотрел давно, он состоял из usafe чуть больше чем на половину, сейчас он как я понимаю весь из себя правильный и выглядит хорошо. Но, понятно с самими тестами не всё так просто https://habr.com/ru/post/485452/. Просто интересно сам сайт https://actix.rs на actix? А то там явно использован hugo (он же на go?) генератор он могёт для этого чуда генерить шаблоны?

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

много где

Кроме rxvt она где-нибудь используется? Я просто её как-то использовал в проекте, и у меня сложилось ощущение, что кроме пары чуваков из коммерческой разработки она никому не нужна.

kirk_johnson ★☆
()

Java and Kotlin JavaScript Rust Swift Other?

Лол.

36% bugs use after free

То есть есть 36% от всех багов и известно где они. Причём обращение к незанулёному указателю после free. Исправляется одним if с предыдущим занулением поинтера. А они эти места переписать на другой язык взялись? Странно.

В целом какие то критичные места где важна стабильность и железобетонность и не так парит скорость можно переписать на Rust или чём ещё, нет ничего плохого. Но так как конкретных мест где баги явно не показали повангую что сырые указатели пробрасываются через несколько функций возможно с несколькими кастованиями просто по причине скорости и что будет дешевле, таки исправить баги и всё или таки переписать на другой язык вообще? Просто дело в том что баг исправить это максимум 1% изменить связного кода, а если переписать по нормальному то от 50% и выше и хранить надо в виде отдельной библиотеки сразу для удобства.

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

Главное что бы они там утечек не добавили, патчить плюсовый std и комрилятор и поддерживать его? Это типа легче чем фиксить баги в браузере? Если да, то ок. Пусть автоматизируют, нет ничего плохого.

LINUX-ORG-RU ★★★★★
()
Ответ на: комментарий от kirk_johnson

Ты можешь выкинуть дырявый openssl и взять её.

На 100% уверен, что это не drop in replacement. А API у openssl та еще какаха и использовать его неправильно, пожалуй, полегче будет, чем разобраться, как его правильно использовать в многопоточной среде.

Нет, не использует.

А с большими числами как работает? Это весьма фундаментальная вещь и что-то мне подсказывает, что происходит это через https://github.com/fizyk20/rust-gmp, которая есть биндинг к libgmp.

Наверное, сложные вещи переписать на rust не так легко, как это кажется с высоты proud hello world developer/wheel reinventer.

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

На 100% уверен, что это не drop in replacement. А API у openssl та еще какаха и использовать его неправильно, пожалуй, полегче будет, чем разобраться, как его правильно использовать в многопоточной среде.

Конечно не drop in. Но ты можешь просто выкинуть openssl.

А с большими числами как работает? Это весьма фундаментальная вещь и что-то мне подсказывает, что происходит это через https://github.com/fizyk20/rust-gmp, которая есть биндинг к libgmp.

Ну открой код да почитай, я буду смотреть в тот же репозиторий что и ты :D

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

Конечно не drop in. Но ты можешь просто выкинуть openssl.

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

Ну открой код да почитай, я буду смотреть в тот же репозиторий что и ты :D

Эвона как интересно, ты же не читая код смело заявил, что внутри какая-то своя длинная арифметика, а теперь уже вилять начинаешь.

Слабоват сектант оказался, несите следующего!

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

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

Б - безопасность

Эвона как интересно, ты же не читая код смело заявил, что внутри какая-то своя длинная арифметика, а теперь уже вилять начинаешь.

Я посмотрел список зависимостей и GMP там нет. Если хочешь раскопать, что там для длинной арифметики (и нужна ли она им там), ты можешь посмотреть сам.

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

Слабоват сектант оказался, несите следующего!

Когда нет аргументов, ори, что твой опоннент сектант. Ну как всегда.

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

Если хочешь раскопать, что там для длинной арифметики (и нужна ли она им там)

Нужна-нужна, без нее никак.

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

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

Когда нет аргументов, ори, что твой опоннент сектант. Ну как всегда.

Но ты же в самом деле по всем признакам из секты швидетелей не порочащего память rust-а.

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

Я погрепал в rustls и ring, не нашел. Может не так уж и нужна? :)

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

Но ты же в самом деле по всем признакам из секты швидетелей не порочащего память rust-а.

У вас там уже методички по выявлению Rust программистов появились? Сишники НАСТОЛЬКО боятся работу потерять?

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

Я внимателен. В природе пока не нашлось ни одного сишного программиста, который бы не сделал в программе баг с memory corruption. Найдешь такого – покажешь.

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

Сишники НАСТОЛЬКО боятся работу потерять?

Лол, какая работа? Хорошо если в этом треде хоть один из сектантов получает деньги за разработку на rust. Так, пиарят для души по большей части.

Я вообще ржавые вакансии видел только в блокчейн/hft областях, но это своя особенная атмосфера. А в моем уютном хайлоаде даже go не вытеснила плюсцы. Что уж говорить о каком-то rust, который в парадигму «фигак-фигак и в продакшн» не может ни разу.

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

Лол, какая работа? Хорошо если в этом треде хоть один из сектантов получает деньги за разработку на rust. Так, пиарят для души по большей части.

Ну я писал продакшон на Rust.

Я вообще ржавые вакансии видел только в блокчейн/hft областях, но это своя особенная атмосфера. А в моем уютном хайлоаде даже go не вытеснила плюсцы. Что уж говорить о каком-то rust, который в парадигму «фигак-фигак и в продакшн» не может ни разу.

Да может запросто, ты чего. Особенно для всякой веб-ерунды и микропе^W микросервисов.

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

Ну я писал продакшон на Rust.

Почему в прошедшем времени? Стартап не выстрелил?

Да может запросто, ты чего.

Ой сомневаюсь. Порог вхождения высокий — закидать джунами будет трудновато. А rust-сеньоры хоть и умные, но думают больше, чем фигачат. Вот и получается, что «фигак-фигак» делать некому.

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

Почему в прошедшем времени? Стартап не выстрелил?

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

Ой сомневаюсь. Порог вхождения высокий — закидать джунами будет трудновато. А rust-сеньоры хоть и умные, но думают больше, чем фигачат. Вот и получается, что «фигак-фигак» делать некому.

Rust типа один самых трендовых языков. Найти парочку толковых мотивированных студентов, которых хлебом не корми дай на расте за бабки пописать – вопрос трех недель поиска/отсева.

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

Это был не стартап, просто в рамках эксперимента мы часть сервисов написали на Rust.

А остальное на чем было?

Найти парочку толковых мотивированных студентов, которых хлебом не корми дай на расте за бабки пописать – вопрос трех недель поиска/отсева.

Вот только есть одно «но»: написать надо не очередной grep, а что-то реально самобытное. Не осилят.

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

Что же это такое самобытное, что его только python джуны (или кто?) могут написать?

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

Ага, ну то есть вы из секты «умвр»?

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

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

Зато доводилось патчить. ИЧХС софт, который тихонечко портит память и содержит UB, но в общем работает — обычное дело.

А между segfault/panic/NPE разницы нет никакой — для пользователя это все одинаково «не работает».

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

Посмотрел на заголовок статьи (уже третья на эту тему). Посмотрел на некультиста kawaii_neko, старательно игнорирующего эту информацию. Долго думал.

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

Но допустить ошибку на наём в разы сложнее. Если CVE станет 5%, а не 70% - то это уже отлично.

Вот не думаю, что это будет 5%. Будет где-то 50%. Раз «допустить ошибку на наём в разы сложнее», девелоперы расслабятся: зачем набивать руку на правильных подходах?

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

Почему всегда, когда я вижу критику раста, ее пишет человек который не написал на нем ни строчки?

Потому, что дело не в языке, а в подходе.
Я не критикую синтаксиси раста, я критикую подход.

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

Как будет бороться с утечками файловых дескрипторов, сокетов и др. ресурсов?

Эти проблемы независимы от языка.

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

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

С++ заставляет тебя использовать правильные подходы

Это Стокгольмский синдром в терминальной стадии.

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

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

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

разрыв шаблона

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

Это не так важно

Нет, это важно. Глупо требовать от тестовой площадки того, что требуют от полноценного браузера.

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

actix состоял из unsafe потому, что так нравилось писать его автору, чему не так давно был посвящен срач. Реальной необходимости в этом не было, более того, автору предлагали пулл-реквесты с фиксами его кода, он не принимал, так как считал, что его способ лучше. Что ж, флаг в руки, его право.

Siborgium ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.