LINUX.ORG.RU
ФорумTalks

Если Rust, значит безопасно

 , ,


1

5

«Если написано на Rust, значит безопасно».

Комедия в трёх актах:

  1. Сотрудники компании Cryspen реализовали на языке Rust криптографические библиотеки libcrux и hpke-rs, которые являются, цитата «The formally verified crypto library for Rust». Если написали на Rust, значит безопасно.

  2. Независимые исследователи нашли 13 уязвимостей, которые нарушают формальную верификацию, пруф: https://eprint.iacr.org/2026/192. И открывают pull request-ы на эти уязвимости.

  3. Все PR-ы удаляют, авторов банят, позднее добавляют похожие фиксы (кое-где копируя код из удалённых PR-ов) и меняют формулировку с «libcrux - the formally verified crypto library» на «libcrux - a high-assurance cryptographic library in Rust» (https://github.com/cryspen/libcrux/commit/261d13e7a8b7e808982d666b63204996355a36e7) (не везде).

Они ещё добавили, что будут закрывать любые issuer и PR, которые раскрывают уязвимости.

★★★

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

А вот баны и попытки скрыться за покровами постфактум - вообще другое дело, за такое бы по рукам давать.

Bfgeshka ★★★★★
()

У тебя раст чешется? Во-первых это не раст, а покажи болячку врачу он тебе скажет что это на самом деле. Во-вторых - «Если написано на Rust, значит безопасно» - это только от полоумных хейтерочков можно услышать, крайне позорный демагогический приём, если чо

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

Проблема не в языке, а в адептах языка, которые распускают миф. И уже появляется вопрос, вот откуда решили, что libcrux является формально верифицированной? Только потому что написали её на Rust? Откуда уязвимости, которые нарушают формальную верификацию? А сколько ещё подобных библиотек, которые переписали на Rust и назвали безопасными и формально верифицируемыми, хотя они таковыми не являются?

ma1uta ★★★
() автор топика

The formally verified crypto library for Rust
Независимые исследователи нашли 13 уязвимостей, которые нарушают формальную верификацию
меняют формулировку с «libcrux - the formally verified crypto library» на «libcrux - a high-assurance cryptographic library in Rust»

Буквально на днях в соседнем треде один лорчанин фантазировал о формальной верификации и как ЛЛМки будут ее делать, никогда не ошибаясь :)

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

Неа, а вот ты как раз применил тот же демагогический приём что и ТС. Те 3-4 ржависта которые ещё остались на лоре, шарят и никогда такого не скажут, остальные в ужасе разбежались от уровня лоровской «аналитеги» (

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

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

В целом, народ сходится в том, что неполезно

Существует общий консенсус, даже среди тех, кто выступает в пользу безопасности через неясность, что принцип «безопасность через неясность» никогда не должен использоваться в качестве основной меры безопасности. Это, в лучшем случае, вторичная мера, и раскрытие информации о неясности не должно приводить к компрометации.

tiinn ★★★★★
()

Ну то есть, постепенно энтропия домыслов о русте повышается. Совсем скоро это будет просто еще один язык программирования, со своими милыми особенностями (типа, пиши на нем хорошо, а плохо не пиши).

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

Буквально на днях в соседнем треде один лорчанин фантазировал о формальной верификации и как ЛЛМки будут ее делать, никогда не ошибаясь :)

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

Откуда взялось доказательство теоремы - хоть человек его придумал, хоть LLM, хоть просто из /dev/urandom байтов накачали - на безошибочности верификации вообще никак не сказывается. Потому что доказательство, после того как было построено, должно пройти формальную механическую проверку (ту самую верификацию), которая ни с человеком, ни с llm вообще никак не связана. Если в доказательстве есть изъяны, проверку оно не пройдёт. Только и всего.

В то же время, поиски доказательства весьма трудоемки. Если бы LLM тут мог бы помогать - было бы просто отлично. Мне-то кажется, что в этой сфере у LLM всё должно быть намного грустнее, чем даже в сфере кодинга. Код де-факто спокойно терпит бредятину (компилируется, запускается, кое-как работает иногда), а вот в доказательстве теоремы бредятина не прокатит. Может, LLM мог бы для каких-то промежуточных несложных лемм бойлерплейт расписывать, чтобы человек на это меньше сил и времени тратил бы.

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

И кстати, половина кода libcrux на сишочке, и ещё 14% на ассемблере, но претензии только к расту. Может, о чудо, дело определяется не одним только языком.

zurg
()
Ответ на: комментарий от MoldAndLimeHoney

териритически если llmка едет на квантах то можид

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

По какой-то причине rust и такие разработчикидюже часто идут рука об руку

Причина называется «предвзятость подтверждения». А если аккуратно посчитать, то с любым языком будет примерно одинаково.

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

Причина называется «предвзятость подтверждения».

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

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

Rust словил очень много хайпа (уж очень значительные вещи он обещал).

Это так.

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

Это тоже так.

Но концентрация багоделов всё равно средняя по больнице. Да и слетелись не только инфоцыгане и хайпожоры, но и просто любители изучения всего нового, или те, кто надеется, что опыт кодинга именно на расте в будущем будет полезен при трудоустройстве. Много кто слетелся. Хайпожоры с инфоцыганами просто заметнее всего: такова уж сама их суть — быть на виду.

То есть, они заметнее, но по количеству они всё равно капля в море. Это примерно как с авиакатастрофами, о которых трубят все СМИ и знает всё население, несмотря на то, что в автомобильных авариях погибает на порядок (или два? не помню) больше людей.

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

Rust словил очень много хайпа

Не больше чем, в своё время С, С++( и до сих пор жёсткий сектанский культ у обоих ), Java/C#, Go, и сквозь всё это где-то на задворках лисп ), и с соответсвующей поправкой на рост айтешечки

значительные вещи он обещал

То что действительно обещал, вобщем-то, честно выполняет

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

вот откуда решили, что libcrux является формально верифицированной? Только потому что написали её на Rust?

Похоже, слишком многие путают «язык формально гарантирует X и Y» с «программы на языке формально верифицированы».

Разрабы наверняка не путают, но эксплуатируют чужое невежество.

unsigned ★★★★
()

А почему нельзя «The formally verified crypto library for C»?

Ведь речь идет о формальной верификации?

Psilocybe ★★★★★
()

«The formally verified crypto library for Rust»

– Доктор, мой сосед говорит, что может жену три раза за ночь, а ведь ему 90 лет.
– В чём проблема? Вы тоже говорите.

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

И кстати, половина кода libcrux на сишочке, и ещё 14% на ассемблере, но претензии только к расту.

У меня есть подозрения, что ОП об этом не знал, а также о том, что такое формальная верификация) Но наброс все равно пошел-поехал)

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

Не больше чем, в своё время С, С++

Это неправда.

То что действительно обещал, вобщем-то, честно выполняет

И снова неправда. Со степенью выполнения есть нестыковочки. Наобещали с три короба, а выполнили как смогли:
1. Для safe-кода (и borrow checker) нет доказательства soundness, за то были (или до сих пор есть? не слежу за темой) примеры, когда safe код проходит проверку borrow checker и при этом осуществляет некорректную работу с памятью;
2. На практике большинство проектов на rust содержат unsafe-код, что аннулирует обещанные мрии о memory-safety.

Претензии тут не по технической части (понятно, что тут best effort и реальный прогресс), а по части инфоцыганства.

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

Да ладно, при обсуждении любого проекта на си бурление по этому поводу. Из самого громкого гцц, сам линукс.

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

А почему нельзя «The formally verified crypto library for C»?

+1

Для си-шки хотя бы есть варианты формальной семантики самого языка (его подмножества). А для растишки есть?

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

что аннулирует обещанные мрии о memory-safety.

С таким подходом вообще нет языков с memory-safety. Всякие питоны, явы и пхп в пролёте - у них есть ffi, а значит никаких гарантий.

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

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

Ни о каком «everyone to build reliable ... software» в ситуации с FFI даже речи идти не может, это автоматически становится упражнением для избранных, с обмазыванием си-шного кода санитайзерами, фаззинг-тестами, и тд. Ну или без обмазывания. Но в любом случае, с принятием соответствующих рисков насчет отсутствия memory safety.

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

Как будто что-то плохое. И в 90-х не было гитхаба, но вот с сишки на плюсцы, благодоря хоть какой-то совместимости языков всё ещё переписывают.

zurg
()

«Если написано на Rust, значит безопасно».

С точки зрения идиотов недоучек, несомненно.

yvv1
()

Если Rust, значит безопасно...

Три раза «Ха!» 😁

«Глобально-надёжно.» — говорили они...

Где-то я это уже слышал.

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

Те 3-4 ржависта, которые действительно что-то пишут, они именно пишут. А вот так называемые лоровские ржависты они пишут только на лоре и только мантры.

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

Это я прямо из cve-rs накопипастил, чтобы в одном файле было. Не знаю, чего у него там не канпеляется

ratvier ★★
()

Независимые исследователи нашли 13 уязвимостей, которые нарушают формальную верификацию,

И причём тут Rust, когда ошибка в логике? Ты хоть пруф-то читал?

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

Ну неееет. Это конечно фишка растовиков.

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

Те 3-4 ржависта, которые действительно что-то пишут, они именно пишут. А вот так называемые лоровские ржависты они пишут только на лоре и только мантры.

Да как-то мантры в основном от хейтеров идут. Сами выдумали каких-то фанатиков, у которых «на Rust, значит безопасно», сами подписались везде на тег rust и жадно выискивают баги в софте на нём, чтобы затем сказать «ага, не безопасно!», хотя никто и не заявлял, что Rust даёт все возможные гарантии — только вполне конкретные. Нет, может и были 1–2 сумасшедших (и то не факт, что не тролли), которые несли бред, но теперь этот миф на всех программистов на Rust распространяют, потому что так жить проще. Ну или на «большинство». Хотя это такой же бред, как «арч ломается при каждом обновлении», или «все маководы — геи». Больше таких мифов и приписываний оппонентам заведомо идиотской позиции только в политических дискуссиях (с обеих сторон причём), но их примеров я тут приводить не буду, дабы не разжигать.

Казалось бы, вроде среди линуксоидов должно быть больше людей с критическим мышлением и умением не делить мир на только чёрное и белое. Но нет, есть вопросы, в которых эмоции давлеют над любым здравым смыслом. Наблюдать за этим иногда смешно, но всё чаще — стыдно как-то (испанский стыд).

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

Буквально на днях в соседнем треде один лорчанин фантазировал о формальной верификации и как ЛЛМки будут ее делать, никогда не ошибаясь :)

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

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

я приводил пример, в прошлом месяце эксперементальная нейросетка (вроде Аристотеля,но чуть поинтереснее) доказала лемму Полищука-Шпильмана. Получилось около 2000 строк , она повыносила леммы, в целом весьма неплохой код. У неё ушло около 8 часов и стоило это порядка 250 долларов. Понятно, что инженер 2000 строк за 8 часов не напишет.

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

Уже давненько перешли к принципу responsible disclosure. Т.е. проблема сообщается приватно и даётся 3-6 месяцев на её устранение, потом идёт публикация. По взаимному согласию можно и раньше, или если это принципиальная уязвимость в железе, то и позже.

Но некоторые до сих пор не в курсе, и вместо вознаграждения присылают письмо с угрозами. Вот недавно: Я нашёл уязвимость, а они - адвоката.

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

Еще как только раст появился, уже 10 лет назад, на лорчике @tailgunner развенчивал straw man, что раст защищает не от всего, а только от определенного класса ошибок, с тех пор ничего не поменялось)

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

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

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

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

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

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

много переписывателей на раст шумят

А по-моему, совсем не много. Было несколько переписывателей, которые шумели очень громко. Но громкость не равна количеству.

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

вот концентрация выдуманной крутости - повышенная

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

unC0Rr ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)