Опубликована корректирующие выпуски библиотек OpenSSL (3.0.8, 1.1.1t) и LibreSSL (3.5.4, 3.6.2) в которых устранена опасная уязвимость (CVE-2023-0286), позволяющая добиться получения содержимого произвольных областей памяти процесса при обработке подконтрольного атакующему списка отозванных сертификатов (CRL) или токена с временной меткой...Подробнее: https://www.opennet.me/opennews/art.shtml?num=58622
> что может быть использовано для чтения содержимого памяти или инициирования аварийного завершения процесса.классика
Опять сишники ненастоящими оказались.
Вас послушать, так единственные проблемы с уязвимостью - сишные дырени и структуры языка. Си против Раста и наоборот, причём без уточнений - как же надоело это читать.
Хотя для меня, как для человека между разбирающимися и не разбирающимися в программировании людьми очень удивительно, что уязвимостей столько, такое ощущение, что их больше, чем букв в программах. За гранью прогнозов. Наше IT удивительно дыряво.
Что-то не так с самим устройством программ или с их идеей...
:)
Не единственные, но по статистике уязвимостей проблемы с памятью занимают в районе 70%.Можно сколько угодно кричать о том, что программисты плохие. Однако практика показывает, что пока код пишут люди, ошибки будут неизбежно.
И смысл инструментов типа раста и прочих более высокоуровневых языков в том, чтобы как можно больше проверок переложить с мясных мяшков на плечи самой машины.
>>по статистике уязвимостей.. 70%..Так это потому что весь системный софт пишется в основном на C и C++.
Странно, что не 99% ;)
Не-не, там была четкая формулировка.
"~70% of the vulnerabilities Microsoft assigns a CVE each year continue to be memory safety issues"
Он так и написал. А еще у Linux Foundation, и Google Chrome схожий процент.
Все очень просто, это криптографические библиотеки, которые, в числе прочего, должны быть быстрыми. От сюда и начинаются всякие хитрые оптимизации, которые и ведут к таким вещам (и того-же Rust'а это точно так-же касается).
Возможно потому что они должны быть сначала надежными, а потом быстрыми?
А не наоброт?
Нет. Медленные не нужны.
вынужден тебя огорчить, дыра ни разу не в оптимизированном коде и быстрым ему быть вообще незачем - он выполняется раз на соединение.Проблема что SSL/TLS - протокол придуманный м-ками получателями грантов и профессорами универов, ни разу в жизни не получавшими в подворотне в рыло от нигра.
Просто потому что они никогда из своей тачки там не вылазят.Его нереально нормально написать вообще. Добавляет проблем то что openssl стоит на фундаменте ssleay написанном чуваком которому вообще пое..ть было на такие проблемы - его единственной целью было сделать чтоб https сайты хоть как-то можно было хостить на линуксах забесплатно.
то то у несуществующих проектов - ни одной уязвимости нет
чаво это несуществующих? Я уже и CoC закомитил, и readme.md !
>Только дайте что-нибудь на раст, сразу сломаю!Всего тебе https://ossrank.com/p/506-rustdesk?page=1
наилучшего
Повторюсь:Так и не понял, зачем нужен LibreSSL, если в итоге эксплойты повторяются в обоих проектах. Эталонный NIH синдром, а обещали "обеспечение высшего уровня безопасности" (с).
там просто неправильные С программеры
как говорил автор 14 вариантов инициализации "зачем вы пишете с багами? просто пишите без багов!"вот если бы программеры были правильные, то все было бы без ошибок
14 вариантов в плюсах, где автоматическое управление памятью больше 10 лет как уж, точно такое же как в этих ваших растах.
Может уже auto писать, а не ручками 14 раз? Я хоть и автор но понимаю толк в инциализации.
Просто все 14-ть - с ошибками, повторяющимися в проектах.:) Вероятно.
А ошибки всё те же, что и в Си.
золотые слова
Мышки, станьте ёжиками!
Так LibreSSL это форк OpenSSL, но с чисткой от устаревшего кода. В новости одна уязвимость относится к LibreSSL и восемь к OpenSSL.
Это не совсем так
>>В частности, адрес X.400 разбирался с использованием типа ASN1_STRING, в то время как для поля x400Address в структуре GENERAL_NAME был использован тип ASN1_TYPE, что приводило к использованию при сравнении (GENERAL_NAME_cmp) типа ASN1_TYPE вместо ASN1_STRING.Тёплое с мягким?
си и раст
типобезопастноть, зочем!?
нам главное скорость и пофиг что у пол интернета будет дыра в шифровании
У пол-интернета дырень в прокладке между стулом и клавиатурой, дыра в шифровании тут вторично.
великолепная идея!
аналогично можно сказать про автомобили и прокладкой между рулем и сидушкой
давай теперь выкинем из авто абс, есп, удержание в полосе, ну и до кучи поворотники и тормозане хочешь тут выложить свой ip и пароль?
Предлагаю выкинуть всех костяных мешков с этой планеты в космос для оптимизации эволюции.>не хочешь тут выложить свой ip и пароль?
Это нарушит законы Российской Федерации о персональных данных, поэтому - нет.
Так, прекрати подсказывать автотазу! Он уже и так половину твоего бизнес-плана реализовал.Учти, пешком ты от них тоже не увернешься!
Спасибо. Сегодня Вы в ударе!
Современные машины умеют сами останавливаться если водитель от страха лицо руками закроет.
И старые тоже умели. Достаточно тяжёлое препятствие решает проблему на раз.
> чтение из области вне границ буфера
> обращение к области памяти после её освобождения
> двойное освобождение памяти
> некорректное разыменование указателя
> разыменование указателя NULLмва-хаха! они что решили собрать все возможные типичные баги?
воистину в слове CVE первая буква С не просто такнаверное опять неправильные пограмисты нагадили в код
надо было просить экспертов с пенька написать хорошо, правильно и без ошибок
Любители батплагов молчать!
А то, они же в школе маятся и на парах (я удаленщик работаю когда хочу, если что)
> правильно и без ошибокэто у тебя кристалл глупости сформирован фанатичными представлениями об идеальном
Ну и где ваш rustssl то?
https://github.com/rustls/rustls
Rustls is a modern TLS library written in Rust. It uses ring for cryptography and webpki for certificate verification.ring exposes a Rust API and is written in a hybrid of Rust, C, and assembly language.
Most of the C and assembly language code in ring comes from BoringSSL, and BoringSSL is derived from OpenSSL
Обертка над оберткой над форком той же самой OpenSSL, в общем =\
> в OpenSSL 3.0.8 также устранено
> чтение из области вне границ буфера
> обращение к области памяти после её освобождения
> двойное освобождение памяти
> разыменование указателя NULLГосподи, как же это прекрасно. Прсто бинго типичного секьюрного проекта на сишечке, на котором держиться вся мировая критическая сетевая ифраструктура.
А статистический анализатор уровня выполнения справился бы с тем, чтобы найти эти проблемы?
Стати́ческий ана́лиз ко́да (англ. static code analysis) — анализ программного обеспечения, производимый (в отличие от динамического анализа) без реального выполнения исследуемых программ.Надо просто изобрести статический анализ уровня выполнения и он найдет все ошибки
>Надо просто изобрести статический анализ уровня выполнения и он найдет все ошибкиВсе изобретено уже давно,просто в железе на это забили -"потенциальная адресация" ,примерный термин с английского не переводиться.Указатели заменяются специально защищёнными объектами (аппаратные атрибуты).Данные и код размещают в разной памяти.А также можно использовать микрокод,как в майфреймах.И все - 80% кривых ошибок ,особенно с памятью выявляются на аппаратном уровне.
А это точно будет работать быстрее чем java/c# и go?
В java вместо указателей strong link. Неосвободить память и освободить дважды невозможно потому что её освобождает сборщик мусора. Обратиться за границы массива невозможно, возникнет IndexOutOfBoundsException, обратиться к пустому указателю не возможно, возникнет NullPointerException. Присвоить неправильный тип невозможно возникнет ClassCastException.
> А это точно будет работать быстрее чем java/c# и go?По крайне мере на майфреймм Ибм микрокод с атрибутами работает быстрей Явы, но там разница не критическая,и понятно что там оптимизации под микрокод. Может быть что аппаратная реализация оптимизированная под байт код будет тоже быстрая,есть же на Арм аппаратная реализация Явы.
Дело в том, что на мейнфреймах IBM есть оптимизации и для jvm. Но берут их не потому, что там hello world на микросекунды быстрее отрабатывает, а для массовой параллелизации задач, бесперебойной работы при выходе оборудования из строя и ещё немного потому, что до сих пор никого не уволили за то, что он выбрал продукцию IBM.
> оборудования из строя и ещё немного потому,Что тяжко ломаются эти майфрейммы.Есть у этих аппаратов из за этого ограничения на экспорт. Там полноценные атрибуты на память и есть аппаратная карточная файловая система.А микрокод как и Ява не даёт прямого доступа к оборудованию.Читал когда Ибм более лояльно относилось к открытому коду-она горы документов выложила в том числе и к майфрэйму, руководство по адаптации.Я удивлялся как новейшие решения лежали в перемешку с анохронизмами.Хотя бы совместимость с 16 битным кодом,совместимость по оборудованию (можно было подключать от S-360), и оригинальная 48 бит адресация (расширяется до 64 бит ,это уже добавили).
> держиться вся мировая критическая сетевая ифраструктураВ том числе и твой любимый безопасный язычок. Теперь живи с этим.
Раст можно переписать на расте и тогда будет тру)
Rust? Мы не поставляем ни одной библиотеки и прослойки для наших ядер, и компиляторов тоже.
Да это и неважно, внутри Андроида джава в основном. А больше-то применений у армов и нет особо. А не, в домашних роутерах ещё, но там от ядра всё зависит, а UI на похапе.
Говорят есть язык который мог бы от такого случая спасти…
только не произноси его вслух!
а то набегут и начнут рассказывать про ножи, поваров, свободу программистов портить память когда они этого хотят и тд
>только не произноси его вслух!Паскаль? Ада?
Ну смотри - в детстве я показывал соседке, что значит идиома "бежать сломя голову", из-за чего разбил стеклянную часть двери и сильно порезался. Кто-то бы сказал, что хорошо бы связать мне ноги чтобы я быстро не бегал, но нафиг такую защиту.
Когда по делу сказать нечего, приводят аналогии и рассказывают притчи.
Абстрагирование - важная вещь в понимании. Мы способны найти общее и даже общие закономерности в разных процессах и это важно.
Я про то, что если что - много ограничений может появиться, что плохо. Не только инструментально плохо, но и психологически.
Ну так borrow checker не связывает ноги
Машину вы используете тоже без ремней безопасности? Они же пристёгивают вас к креслу!
> Машину вы используете тоже без ремней безопасности? Они же пристёгивают вас к
> креслу!У меня нет машины. А вообще - я не говорил, что всегда плохи ограничения, я говорил, что плохо когда всегда ограничения, или не по теме.
Впрочем я не умею пристёгиваться. Ибо редко езжу. Один раз довелось ехать в газельке на переднем сиденье. Может быть из-за этого меня выставили назад... а может из-за пакета с лошадиным говном, но возможно я его даже не просыпал на пол водителю..
> плохо когда всегда ограничения, или не по теме.Если мешают ограничения borrow checker'а, то используй сырые указатели. Никто не заставляет всегда пользоваться только ссылками.
ОБС (Одна Бабка Сказала)...
Вот чем бабки у подъезда занимаются... код пишут оказывается
А я думал это софт для стриминга
Мог бы если бы на нем что-то писали
В том то и дело, что только говорят. Языком про язык любой анонимус через тор коммент на опеннете напишет.
Это язык общения с НИМ. "О, госпади, спаси!"
было бы неплохо услыгать аргументы не-любителя-нпм
даже не могу придумать как он объяснит почему это правильно
Раст бы помог убрать чтение данных за пределами буфера, но отказ в обслуживании бы не исправил. Ждем либу на Расте.
Дело не в правильно-не правильно, а в том, что любой опытный прогер (а не дереализованный яркими дергаными фантазиями анимэшник) не может написать код без ошибок на любом языке, и он прекрасно об это знает.
Неадекваты же, вечно недовольные текущим, избегают реальности в некое сферическое будущее, где будет всё идеально как им хочется, и у них все проблемы из-за прошлого и настоящего. Это выглядит так, как будто сидите в луже в яме на длинной дороге, построенной не вами, и говорите, что будущее за гладкими дорогами (но конечно же лично вы ничего для этого не сделаете, т.к. это скучно, долго, медленней, чем воображение, а откроете майнкрафт или двач дальше избегать реальность). И вам вечно все мешают, начиная от родителей, правительства, сишников, только почему-то кушать вам подай, программу вам принеси и подуй в одно место, ведь вам просто обязаны это, включая безошибочный код.
А еще double-free и use-after-free (0215, 4450).
И разыменование указателя NULL (0217, 0401).
Точнее он даже бы не позволил допустить такую ошибку.
Т.е. почти все проблемы он бы решил.
Да, ждём от вас rsSSL, а покамест будем пользоваться сабжем
Да вы и после rsSSL сабжем пользоваться будете, толку то.
Догадайтесь с трёх раз, почему.
- Память не резиновая.
- Проц законы физики тоже не нарушает.
- 1.5 неоттестированных фичи из пары сотен - это маловато.
Уже есть https://github.com/rustls/rustls
Вот скажи мне, растаман. Это такая шутка? Ты хоть открывал ссылку то?Цитирую: Rustls is a modern TLS library written in Rust. It uses ring for cryptography and webpki for certificate verification.
Открываем этот ring: ring exposes a Rust API and is written in a hybrid of Rust, C, and assembly language.
Most of the C and assembly language code in ring comes from BoringSSL, and BoringSSL is derived from OpenSSL
А что не так?
Баги в статье в криптографии? - Нет.
Поэтому твоя отсылка на то что ring взял сишные и асм куски из BoringSSL/OpenSSL - пердеж в лужу.
А ты что грубишь то? :) Отсылка на то, что это не безопасно, чекер не сможет проверить наличие гениталий у борова.
Когда вы уже поймете что раст это не серебрянная пуля?
Он нужен чтобы из восьми ошибок в этой новости была одна или две.
И это уже будет очень круто.Ты смотрел кода которые они взали по криптографии?
Там есть какие-то выделения памяти и тд? Или это тупая числодробилка?
Если числодробилка - то зачем там боров чекер? И т.д> Отсылка на то, что это не безопасно
Ну да, ну да, есть же только черное и белое, никакой середины у нас нет.
Если у нас нет возможности переписать openssl целиком, не нужно переписывать даже частями, так?
Просто для интереса, глянь с какого года пишут openssl, а с какого сабж.
> Он нужен чтобы из восьми ошибок в этой новости была одна или две.И ещё десятка три функциональных/логических, внесённых при переписывании.
А докажи что их сейчас нет в OpenSSL?))
Зачем? Как это повлияет на то, что при переписывание к уже имеющимся будет добавлено ещё?
> Когда вы уже поймете что раст это не серебрянная пуля?Никогда, мы считаем, что раст это ЯП, к-й решает все проблемы. Он даже может автоматически управлять памятью там, где ни malloc(), ни free() нет.
На такие [возможные] проблемы нормальный компилятор выдает предупреждения, чтобы программист их хотя бы прочитал.
Э, вот не надо за анимешников.
Я дереализованный яркими дергаными фантазиями анимешник и тот самый прогер по совместительству.
Ниачом.Читать через memcmp() - ну удачи, сколько там, 1 байт за попытку.
А попытки раз в час?Остальные "уязвимости" тоже из области эксплуатации в собственном специально подготовленном коде на своих особых данных на локалхосте.
Я предлагаю с этого дня удалять все комментарии где есть слово раст или rust.За*ло.
Все, кто хочет видеть rust в $проект_X, приглашаются к тому, чтобы переписать код на rust и убедить upstream, чтобы ваш патч приняли.
Все, кто думает, что rust избавит от всех уязвимостей, советую ознакомиться с типами уязвимостей и обнаружить для себя, что несколько их классов, например, ошибки в логике, rust никак не решает.
Когда ж это закончится.
> и убедить upstream, чтобы ваш патч приняли.И как ты представляешь убедить отбитых хейтеров его принять.
Именно, растаманы знают, от каких классов ошибкок он защищает.
И ты можешь заметить, что из всей пачки ошибок из новости только две можно отнести к логическим -
измерение сетевых задержек и сравнение типов ASN1_TYPE (и то с натяжкой, потому что при нормальной системе типов, при нормальных enum ее допустить крайне сложно).
Остальное - лютейший гoвнokoд c памятью.
>Остальное - лютейший гoвнokoд c памятью.БОльшей части этих ошибок можно было бы избежать, если бы кто-то использовал анализаторы и санитайзеры(удивлен, что их мало кто использует). Я уверен, что даже на -Wall болт положили. Поэтому нужно боротьтся и менять саму культуру разработки, а не создавать языки, которые под лычкой "модная система типов" и "боров чекер" имеют обычные анализаторы и просто не дают совершить потенциально опасное действие.
Плюсую. Вот ради интереса санитайзер в проекте топика используется?
Ты ж понимаешь, что своим утверждением просто заявляешь "разрабам openssl нacpaть на безопасность, они не включили даже варнинги не то что анализаторы"?
Я не знаю как у них на самом деле, может у них все включено.
Но если оно выключено - ты НИКАК не заставишь их это включить.
Все что идет выключенное по-умолчанию - просто игнорируется by default.
И в каждой такой новости возникает вопрос - "какого черта вы до сих пор этим всем не пользуетесь???"Именно поэтому самый разумный способ - запретить это делать, пока программер осознанно не решит это сделать (напр. словом unsafe).
"модная система типов" это намного большее чем просто анализатор.
Это и optional которые позволяют не лепить кучу проверок на null (и не забивать на них, потому что "не, ну проверок много, оно же тормозить будет")
И enum, которые можно сравнивать только с enum того же типа, а не с чем попало. Про ассоциативные типы даже говорить нет смысла.
И зависимые типы, и трейты, и куча всего что позволяет допускать меньше ошибок, в том числе логических.
>Ты ж понимаешь, что своим утверждением просто заявляешь "разрабам openssl нacpaть на безопасность, они не включили даже варнинги не то что анализаторы"?Да.
Я вообще уверен, что 90% всего opensource(и не очень)-кода написано в пьяном угаре, а так как переделывать никто не хочет, то и продолжают лепить старое. Поэтому стараюсь использовать только те программы, которые имеют маленькую кодовую базу(можно прочитать) и которые не имеют лишний функционал.
Например, продукты движения suckless.
Только анонимы опеннета знают как правильно писать на Си. Жаль только что их никто не просит исправить все проекты мира...
>Жаль только что их никто не просит исправить все проекты мира...А мы бы и не пошли, даже за большие деньги.
У нас уже есть своя тайная сеть, ОС и прикладной софт, о котором смертные не знают. Нам просто незачем помогать насекомым.
>Только анонимы опеннета знают как правильно писать на Си. Жаль только что их никто не просит исправить все проекты мира...они ещё умеют писать на расте, но потом весь код на расте почему то превращается в тыкв... то есть в высеры на опеннете . Программисты на расте такие токсичные потому что они уже все программы мира переписали на раст уже 18 раз,но весь код превратилсяя в токсичные высеры.
Вот можешь посмотреть их пайплайн: https://github.com/openssl/openssl/actions/runs/4124496105Для Ъ: openssl используют санитайзеры. И собирает разными компиляторами с предупреждениями.
Да, часть уже видел, но бот посчитал мой коммент плохим и потер((
Получается им это все не помогло. Печально, нужно новые инструменты.
Воу-воу-воу. Ок, мы поняли. Где rustssl то? Где он?
Так вот же он - rustls, уже пишется!
> Где rustssl то? Где он?Воу-воу-воу. Палегчи! Не всё сразу! Растовиков просто на всех не хватает, ты же и другие опеннетные онолитеги не кинулись на расте переписывать? Вот, допустим, нашелся бы такой герой, написал бы тебе rustssl, но ты бы уже кричал "а где ffmpegrust? где QEMUrust? где BlederRust?". Там столько за десятилетия на_манки_кодили, что тебе бы на тысячу лет хватило бы немногочисленных (по сравнению с сишниками) растаманов троллить. Гниленький приёмчик.
>Воу-воу-воу. Палегчи! Не всё сразу! Растовиков просто на всех не хватает, ты же и другие опеннетные онолитеги не кинулись на расте переписывать? Вот, допустим, нашелся бы такой герой, написал бы тебе rustssl, но ты бы уже кричал "а где ffmpegrust? где QEMUrust? где BlederRust?". Там столько за десятилетия на_манки_кодили, что тебе бы на тысячу лет хватило бы немногочисленных (по сравнению с сишниками) растаманов троллить. Гниленький приёмчик.если растаманов так мало то почему в каждом углу их помёт и на весь интерент воняет? может это такая порода которая даёт только помёт и совсем не даёт моло... тоесть кода?
Как отписали во внутренней ветке выше с пруфами на пайплайн - нет, у них куча всяких санитайзеров, включены варнинги (не Wall, но тем не менее) и даже fuzzing.
И ничего им не помогло.
У раста вообще задница он при сборке себя выдаёт гигабайты предупреждений. И при сборке единственной программы, жырнолиса, ещё больше.
Может тогда нужно их просто исправлять?
В сборке кода на си тоже можно включить хоть все ворнинги и гордо их игнорировать. И что?Зато в расте действительно важные вещи - это ошибка компиляции, а не ворнинг.
Ее так просто не проигноришь.
Но если компилятор предлагает сделать хуже? С нормальным языками то же самое, может, меньше неочевидного в итоге, но проседают эффективность и читаемость. Когда разрабы не способны отключить срач в логе, это о чём то, да говорит.
Если предлагает сделать хуже - ты suppress'ишь ворнинг и пишешь развесистый коммент пояняющий почему ты прав, а копилятор - нет. Если это удовлетворяет ревьюверов/ментейнеров - то оно попадает в код.
Каждую неделю выходит новая версия компилятора, где всё то, к чему тебя приучали последние 5 лет, оказывается worst practices и так писать больше не надо. Поскольку новая версия компилятора выходит в среднем 50 раз в год, то ты должен переучиваться и переписывать весь свой код нонстоп, и в этом весь смысл.
какое фейеричное вранье. Открыл старый растовский проект, который не трогал 2 года - перекомпилировалось без проблем, выполнилось и даже с биржи данные получило.Но да, варнинги про устаревание редко проскакивают в сторонних библиотеках из зависимостей.
Называть вот это -- редко? Даже не знаю. Тут ни сами разработчики языка, ни единственный пользователь не поспевают за релизами. А перекомпилировалось оно в режиме совместимости синтаксиса, или с новой версией?
с самой последней версией с дефолтными настройками
Может быть, это очередной привет мир. Мой привет мир тоже требует 100 гб на диске (на самом деле 50, если собирать только релиз, потому что дебаг нереально тормозит и бесполезен) и не использует интересного синтаксиса (я отказался от найтли по причине нарушения совместимости), поэтому тоже собирается. Ну я и не говорил, что собираться не будет, но насыпает мусора в логи знатно. Постоянно меняют правила написания кода, вот о чём я сказал.
Ниже тебе отписал, но ты похоже устал читать, слабенький. Функционал - чтение и несложная обработка некоторых данных с криптобиржи Binance. Точно не хелло ворлд, чуть больше. Но нечего с тобой болтать, не в коня корм. Тебе хоть ссы в глаза - всё божья роса.
>ФункционалХмм, ну, ты написал это после того, как я обновил страницу. И, собственно, подтвердил, что речь идёт о привет мире. Мой привет мир тоже огромный блоб с кучей логики, но, привет миром от этого быть не перестаёт. И мне пришлось выкинуть большие куски важной логики из-за невозможности применять найтли в проде. А именно генераторы и асинхронную работу с файлами. Я говорил о полноценных продакшен применениях, типа webrenderer у фф (3% рынка это всё же достаточно серьёзно).
перепроверил (хотя обновляю сразу, как новое выходит) - версия 1.67.0. Моего кода там, правда, не так уж много, но куча сторонних крейтов. Функционал - чтение и несложная обработка некоторых данных с Binance.
Ты это серьезно?
Времена когда "компилятор сделал хуже" прошли лет 10 назад.
Сейчас попытки программеров что-то оптимизировать в большинстве случаев приводят отстрелам конечностей разной фатальности.> нормальным языками
> меньше неочевидноготогда это явно мимо темы - тк кол-во UB это отличный показатель
Компилятор всегда будет делать хуже, кроме того, он не предсказуемый и с каждым релизом поведение может меняться (это я про компиляторы плюсов). Поэтому хороший проверенный код внезапно будет оказываться совершенно не работоспособным.
Компилятор должен соответствовать стандарту.
Т.е.
- или в нем был баг (ну, бывает - его были обязаны исправить)
- или код был написан не по стандарту - сами виноваты
- или код был в "серой зоне" (implimentation defined)
И разрабы компилятора имеют полное право это менять.А может есть примеры конкретных поломок?
Баги или не баги, сложно сказать. Что-то и баги, как с IPA, а что-то и вполне корректное поведение. Можно посмотреть на gentoolto как на (уже устаревший) пример, или, там, CloverOS (у меня самого что-то похожее), но, на самом деле, проблем куда больше и они регулярно меняются. Я, скорее, имел в виду более низкоуровневые вещи, такие, как включение или не включение определённых оптимизаций, будет ли переменная помещена в регистры или нет, характер используемых оптимизаций. Генерируемый код на нормальные, казалось бы, конструкции, может поменяться довольно значительно. Но вот пару лет назад я столкнулся с софтом, которому нужно было включать pedantic после обновления компилятора. И поскольку мне нужен был только пропатченный бинарь, я не в курсе, что там дальше сталось. У меня много таких бинарей используется, не найду.
Что-то мне подсказывает, что такие вещи как "будет ли переменная помещена в регистры или нет" не гарантируются ни одним компиляторов что си, что с++. И если нужен такой тонкий контроль - нужен asm.
Часть оптимизаций можно регулировать директивами, часть ключами, но в основном оно все глубоко под капотом.Насколько я знаю, стандарты (с и с++) не описывают оптимизации и странно требовать от компиляторов повторяемости. Вам не повезло и оно стало хуже, а кому-то другому стало лучше, иначе бы никто с этим не заморачивался.
> этих ошибок можно было бы избежать, если бы кто-то использовал анализаторы и санитайзеры"Избежать" ошибок таким образом нельзя чисто по определению, потому что анализаторы и санитайзеры отлавливают ошибки уже после того, как их совершили.
В том-то вся соль...
Статический анализ почти никто не использует? Зачем тратить время на его настройку и переписывание уже написанного за несколько лет, кое-как работающнго кода если можно его не тратить.
Если бы программисты использовали санитайзеры и обесклычиватели https://kosmetiksavto.ru/images/catalog/tovar/_thumbs/_file6... тогда небывало бы большинства ошибок и не понадобились моднявые язычки с бортов чекером и лычкой системы типов.
Но повестка навязывает язычок хотя достаточно санитайзера и обесклычивателя
Ошибки в логике, это что-то более трудное и высокоуровневое. Для того, чтобы справляться с ними компилятор должен делать предположения типа "что же подразумевалось" и может строить модель программиста.
К сожалению у меня чувство, что мы придём к этому. Ну а потом уже и программисты будут особенно не нужны.
Либо это троил пишут, либо целенаправлено такиделают. В любом случае комментарии без тех обоснования надо удалять я считаю.
Моя жизнь просто скучна и я отправляю комментарии ради них самих. Я считаю, что избыточная коммуникация - это вполне себе особенность нашего вида.
Надеюсь к нам не прилетят болтуны из Ложной Слепоты за это.
Эх, скорей бы.
> Моя жизнь просто скучна и я отправляю комментарии ради них самихКак рассказать всему миру что ты овощ. Definitive guide. Ты можешь книжку такую выпустить.
> В любом случае комментарии без тех обоснования надо удалять я считаю.Если тебе не нравится некий комент, жми "сообщить модератору" и обоснуй.
Когда кто-то только начинает переписывать, то сразу же набегает куча особо одаренных с криками "зачем переписывать!", "годами же работало!"...
А когда кто-то таки переписывает - то начинается другая песня "зачем переписали!", "это ж еще llvm тащить", "на моей некроплатформе оно не соберется, плак-плак" и тдЗакончится это когда сишники перестануть делать такие ошибки.
> Закончится это когда сишники перестануть делать такие ошибки.И перейдут, наконец, к изучению языка Modula-3.
Этого не случится никогда. Слишком уж паскалеобразная гадость. А попробовав разок сишку на паскаль назад уже вообще совсем не хочется. Хоть там что.
> Все, кто думает, что rust избавит от всех уязвимостейТаких "всех" почему-то придумывают только сишники и приписывают это утверждение растовикам. Растаманы всегда поправляют таких "забулдыг" (заблуждающихся) как ты и каждый раз, неустанно, тыкают тебя носом в то, что это избавит от 70% ошибок типичных сишных ошибок - ошибок работы с памятью, а 30% "логических" (как ты написал) останутся. Чудес не бывает. Забудь мантру про "от всех ошибок". И, на опережение, забудь мантру "если не от всех ошибок и 30% остается - значит нинужна". Тебе может и не нужно, ведь ответственный код ты не пишешь.
> За*ло. Все, кто думает, что rust избавит от всех уязвимостейА постоянный поток новостей о бесконечно текущих сишных проектах вас, извиняюсь не, з*л? Rust избавит не от всех, а от 70%, связанных с памятью в дырявом C/C++ - а это уже хорошо.
> ошибки в логике, rust никак не решает.
Странный аргумент. Ошибки в логике вообще никакик языки не решают, банально потому, что язык (и даже компилятор) не может знать, что у разработчика в голове.
В вебе сей почти нет - а поток CVEшек эвон какой. А если учесть что он еще и стимулирует подход что за кодера подумают другие - это станет какой-нибудь более легко эксплуатируемой и более вредной пакостью, типа расшифровки все и вся, детских логических атак (которые на openssl и то что использует его впрочем и сейчас прекрасно работают) и проч. С упиранием ключей или вклиниванием MITM.
Напиши фильтр для адблока или юзерскрипт, делов-то, если такой слабонервный.
Просто нужно доказать растерам, что всё нужно писать на паскале, а паскальщикам, что всё нужно писать на расте и стоять с попкорном, смотреть как они бурлят)
Как подгорает от правды да? Как только очередная сишная дырень, так сразу со стороны параши раздаются возгласы сишников "запретите им нас обижать".
Непонятная фигня. Давай что-то про некрожелезо, хочу потроллить пенсичей с их 4 пнями. Сюда для этого только и захожу.
Просто никто не любит безграмотных людей с тупыми вопросами. И дело вовсе не в отличиях в предпочтениях. А грамотный специалист получит уважение независимо от используемой платформы.
А они ведут статистику по авторам этих уязвимостей? Было бы интересно нет ли там чего-то подозрительного...
По статистике 100% авторов - корявые сишники.
Не знаю как насчет автырей но темп они держат изумительно: если месяц прошел без CVE в openssl, значит пентестеры и исследователи просто взяли отпуска.
Безопасность в голове, а не на языке. Ни одна машина в наше время не будет подсказывать как добиться безопасности, в виду того, что даже опасности машина увы тоже не понимает, а когда машина научится понимать, люди станут не нужны.
В голове, верно. Только умная голова безопасность автоматизирует. А глупая - уповает.
Автоматизация потом приводит к тому что кодер начинает считать что за него подумает вон то. И в какой-то момент продалбывает все и вся. Most dangerous time is when you feel yourself safe.Ну вон матрикс. Такой из себя безопасный, только end to end crypto сломали. В их дефолтной либе которую они всем раздавали. А после этого все остальное как-то уже и не важно, они провалили свое основное обещание. Кого на этом фоне мелочи волнуют?
Впрочем openssl не лучше: это плохая либа, деланая дилетантами в крипто, которые к тому же не разу не безопасники, зато упертыне на реализации всех фич SSL/TLS. Достаточно фатальное сочетание, т.к. гарантирует жесткий багодром.
> анализ времени их обработкиВознесём же благодарственную молитву спасительному джиттеру!
Знаете, в чем концептуальная разница между сишкой растом? Если ошибка памяти возникнет в проекте на сишке - все на неё положат и она повторится в другом месте. А если в сейф коде на расте - будет скандал и раст будут чинить. А сишка никто никогда не починит.
Очередная поебда CVE-languages.
Опять в разборе ASN.1 задница.
Выдумавшему эту нотацию надо дать орден за одну из самых невменяемых к реализации теорий, да.
О, отлично, видать заодно пофиксили багу, которая крашила мой второй конфиг OpenVPN. Хех, прикольно, я уже чуть не поседел из-за странных сегфолтов.
Мы создаем LibreSSL так как дыры в OpenSSL нас достали, говорили они...