В корректирующих обновлениях Wasmtime 6.0.1, 5.0.1 и 4.0.1 устранена уязвимость (CVE-2023-26489), которой присвоен критический уровень опасности. Уязвимость позволяет организовать запись данных в области памяти вне границы, допустимой для изолированного WebAssembly-кода, что потенциально может быть использовано атакующим для организации выполнения своего кода вне изолированного окружения WASI...Подробнее: https://www.opennet.me/opennews/art.shtml?num=58775
Смысл было писать это на Rust? От уязвимостей он не спасёт...
а он обещал спаси от логических ошибок?
или ты это сам придумал?
фигасе ошибочка - переполнение буфера на десятки гигабайт!
в Heartbleed можно было читать всего 64 килобайт памяти и от этого стало легче?
напомни когда размер уязвимости начали мерять в Гб буфера?
с того самого, когда переполнение в 1 байт и в 1 ГБ - вещи, мягко сказать, совсем разные.
> а он обещал спаси от логических ошибок?си не за это же распинают? глючит человек, а страдает репутация языка.
это тупо...
если бы писали на другом языке, то уязвимостей было бы сильно больше
и да, раст не серебрянная пуля
Серебряная пуля – Modula 2.
Там вроде Ada выбирают сегодня.
>если бы писали на другом языке, то уязвимостей было бы сильно большеКакое сильное утверждение. Обосновывать его ты конечно же не будешь.
Смысл было писать это на Rust? - потому что кто-то любит rust и решил написать на нем свой проект.Вы почему-то рассматриваете, что альтернативой будет что-то лучше: по моему опыту в 9 случаях из 10 альтернативой было бы, что никто бы ничего делать не стал.
Хотят - пусть пишут. Хоть на чем. Нравится rust? Пожалуйста. Хоть на чем пусть пишут, главное пишут и радуются.
> радуютсяВ итоге, диапазон виртуальной памяти от 6 до 34 ГБ от базового адреса оказывался доступен для чтения и записи
Вот эти программы без багов, они сейчас здесь, с нами?
растаманы обещали справиться с переполнением буфера на этапе компиляции, а тут вона как неожиданно получилось...
Вы новость вообще читали? Раст тут причём? Ошибка в генерированном программой коде. Генератор написан с логической ошибкой.
>никто бы ничего делать не стал.Так было бы лучше. Меньше всякого культистского дерьма, к тому же уязвимого, людям бы приходилось использовать (есть альтернативно одарённые, предлагающие все программы компилировать в wasm и так распространять).
" запись данных в области памяти вне границы "
" на языке Rust "ну дык! на C писать надо было!
С си такое не могло случиться, потому что там никто не верит в обещания.
Угу, в си оно бы получило рут еще на этапе генерации кода))
Уязвимости в коде, генерируемом тем же, bison не шутка, но поэтому и нет доверия. Ничему. Когда ты ожидаешь, что кто-то уже позаботился об определённых вещах за тебя (ведь в рекламе не будут врать), ты расслабляешь булки. Это нормальное и ожидаемое поведение для приматов, как по мне, грязно только эксплуатировать природные особенности.
Переполнение то в машинном коде, генерируемом кодом на Rust.
А растаманы обещали, что все проверки границ будут в компилтайме...
Так они все в компайлтайме для кода на раст и выполняются.
> все в компайлтаймекритическая уязвимость с тобой не согласна.
>> все в компайлтайме
> критическая уязвимость с тобой не согласна.Переполнение буфера не в раст коде происходит.
>>уязвимость вызвана логической ошибкой при определении правил линейной адресации памяти в генераторе кода CraneliftCranelift (formerly known as Cretonne) is an optimizing compiler backend that converts a target-independent intermediate representation into executable machine code. It is written in Rust...
;)
И?
Буфер переполняет код, сгенерированный кодом, написанном на расте
Сгенерированный код руками не правится и не проверяетсяКонечно, это другое, но переполнение буфера можно считать результатом работы раст-программиста)
Безо всяких unsafe справились)
Да, логическая ошибка в коде допущенная программистом.
Раст не защищает от логических ошибок.
>Раст не защищает от логических ошибок.Раст написанный на расте защитит?
Если отстутствие проверки жоступа к памяти - логическая ошибка, то в расте по заявлением создателей не бывает логических ошибок.
Тут как обычно: если это происходит на си, то сишка плохая, а если на расте, то программист
Как ты вообще живешь с таким мозгом?> отстутствие проверки жоступа к памяти
где произошло? В раст коде? Нет, не в раст коде, там все ок.
Или ты предлагаешь раст-проверки еще и в другой генерированный код добавлять?> если это происходит на си, то сишка плохая, а если на расте, то программист
Если взять питон и написать кодогенератор для си и там будет такая проблема - то тоже будет виноват программист (хотя при кодогенерации раст-кода, раст бы спас ситуацию)
> то в расте по заявлением создателей не бывает логических ошибок.с дуба рухнул? От логических, как эта, ничего не спасает. Только в твоих влажных мечтах создатели раста могли такое заявлять. Раст спасает от ошибок работы с памятью, коих под 70% от всех ошибок в типичном си-коде. От того, что ты там знаки больше-меньше перепутаешь или умножишь вместо деления ничто не спасет.
Ну раст это хотя бы лучшее что у нас есть, на с/с++ проблемы бы вылезли ещё на этапе считывания файла с диска или парсинга :) А так у ребят будет раз в 10 меньше секьюрити багов (согласно статистике типов уязвимостей). Учите матчасть.
Чел, зачем ты пишешь, если ты не профик? Приходи в треды по своей профессии и там общайся.Смысл то какой белый шум генерить.
Конечно, код на расте - это же буквы и цифры. Какое там может быть переполнение.
А ничо что бага в асме и раст тут вообще не причём? Или "не читал, но осуждаю"? Понабежало школьников опять.
Они думают, что чем больше бреда напишут - тем больше их будут слушать. Необучаемые)
Хорошую отмазку придумали.
Выбери что-то одно : производительность, безопасность , работу с не доверенными источниками
> Выбери что-то одноПримечательно, что раста в этом списке нету.
но и С тоже
Производительность может быть безопасной. В ваше ЦПШ об этом не рассказывали? Ну так ты в вуз поступи.
Кричали выпускники провинциальных вузов, пока не приехал spectre
> Производительность может быть безопасной....так появился САБЖ :)
Wasmtime is a fast and secure runtime for WebAssembly.
Это лол...
логическая ошибка, печально, но хорошо что заметили
возможно в будущем научатся и их отлавливать
Не научатся. Кодогенератор очень сложный, в нем легко сделать ошибку
ну в 60х годах прошлого века про интернет только задумывались
видеозвонки были в научной фантастике наравне с телепортом и фазером
VR, машинное обучение, распознавание образов - думаю тоже только в фильмах и книгахкто знает что будет через лет 20-30
и это без учета того, что уже сейчас некоторые инструменты могут находить некоторые логические ошибки - например копипаста в условиях if
Люди пытаются воплотит то, что уже было придумано. Если сейчас этого никто не видит, то это не случится через 20-30 лет. Кроме того, там ресурсы подходят к концу. Эффективные портативные источники энергии так и не изобрели -- натриевые аккумуляторы менее опасны, но и менее эффективны. Нанометры тоже невозможно уменьшать бесконечно, и уже сегодня они не настоящие.
> Люди пытаются воплотит то, что уже было придумано.давай стразу определимся - то что не противоречит текущей физике, возможно к воплощению
а дальше как повезет - если откроем неизвестные законы физики, может и к звездам полетимиз того что не противоречит физике и уже исследуется:
- про батарейки ты и так написал, думаю в ближайшие лет 10-15 будут продолжать улучшаться
- нанометры можно улучшать, новые материалы, более жесткий ультрафиолет, или пространственное размещение слоев (типа Gate-All-Around)
- новые виды памяти (ReRAM, MRam) и прочие думаю еще имеют потенциал для развития, результатом которого может стать объединение оперативной и энергонезависимой памяти (идеально для реализации машины Тьюринга)
- квантовые компьютеры (уже есть куча разных вариантов технологии, которые в итоге сведуться в нескольким под запросы пользователей)
- оптоэлектроника (уже есть в каждом gpon терминале), возможно разовьется в полноценные транзисторные сборки или даже микроконтролеры
- системы соединения нервов и електроники, уже есть прототипы- электростанции и фабрики в космосе
- одноступенчатые корабли на орбиту
- ядерные реакторы и плазменные двигатели типа VASIMR
- ...Если в ближайшие 30 лет не запустят управляемый термояд, тогда придется строить много ветряков, солнечных панелей и ядерных реакторов для базовой выработки.
В общем есть куча всего интересного что можно сделать и есть куда стремится)
> одноступенчатые корабли на орбитуПослать тебя почитать хотя бы Циолковского, что ли...
DC-X, Skylon, Корона - да попытки оказались неудачные
но если каждый раз при неудаче отказывались от идеи, то сегодня сидели бы в пещерах
> каждый раз при неудаче отказывались от идеидо сих пор изобретаешь перпетум мобиле?
> Если в ближайшие 30 лет не запустят управляемый термоядДак Европе сейчас не до него... Так что про ИТЭР можно забыть, распилили там уже все средства и камеру тоже (гуглите про дыры в сварочных швах, даже это сделать не смогли).
до него или нет - посмотрим
+ не итером единым (есть тот же JET)
кроме токамаков есть варианты со стеллаторами, эксперименты с пробкотронами (TAE, Hellion Energy, российский ГДМЛ), лазерные технологии (NIF)
есть еще интересные идеи у Zap Energyи это без китайцев которые не сильно открыты в публикациях
> кроме токамаков есть варианты ...... расширения угольных разрезов в ЕС.
>квантовые компьютерыИм до сих пор применение не нашли. Кроме взлома шифров, да и то теперь пост-квант есть.
>оптоэлектроника (уже есть в каждом gpon терминале), возможно разовьется в полноценные транзисторные сборки или даже микроконтролеры
...
>возможно разовьется в полноценные транзисторные сборкиО нет, раскопали мумию. FYI микросхемы существуют уже лет... 50? 60?
>системы соединения нервов и електроники, уже есть прототипы
Боюсь спросить "електроники" или твоих невов? Когда ожидать сложных структур из нервов? Как скоро выйдет прототип мозга?
>ядерные реакторы
В планах? Беру свои слова назад, микросхемы появятся только через 15-20 лет.
>тогда придется строить много ветряков, солнечных панелей и ядерных реакторов для базовой выработки.
Когда появится прототип мозга, попробуй им понять, что ты тут сгенерировал.
Твой прототип вообще понимает, что такое базовая выработка.
>"Нанометры тоже невозможно уменьшать бесконечно, и уже сегодня они не настоящие. "Ага вот эти ребята.
Для вас уродов не имеющих даже массового надежного производства хотя бы 120нм хорошая отмазка, все же хорошо микроэлектроника российская давно не нужна (уперлись в нанометры) надо петон ИИ худи с какртинкой в комплекте, штурмовать и закупать дроны дижиай ссылка в описании. Собрать бы вас на одном параходе. И похрен что размер атома известен и можно тупо посчитать школьнику 2 класса сколько их вмещается в канавы 3 нм размером а говорят уже и к 2 нм подбираются в массовом производстве. Ненене уперлись в нанометры ололо я читалс татью уперлись дутые они дутые.
Я искренне надеюсь, что тебя тоже "денафицируют" (желательно свои же, для отельных лулзов).
> видеозвонки были в научной фантастикеВ 60-х годах-то? К этому времени они уже давно вышли из области фантастики, просто, как бы так выразиться, были не особо доступны массово.
Уже научились, формальное доказательство корректности кода, и языки с зависимыми типами, позволяющие записать доказательство средствами самого языка - Idris, например.Но это очень трудоемко. Для кода управления ядерным реактором или системами жизнеобеспечения затраты приемлемы, для этих ваших вебов - нафиг не надо.
Профаны не понимают этого, бро.
Какая-то лоускильная байда. Сишный код в чужую память не залезает и проверка делается бесплатно на уровне mmu, а эти получается, в рантайме чекают каждое обращение к памяти? Должно тормозить.
И будет тормозить, это же для веба
а-ха-ха...
традиция такая....
"Программа на С выходит за границы массива" - ааа! уязвимость! дырявая сишка!"Программа на rust выходит за границы массива" - это не уязвимость, а логическая ошибка, понимать надо!
> "Программа на rust выходит за границы массива" - это не уязвимость, а логическая ошибка, понимать надо!Где ты там видишь программу на расте, выходящую за границы массива, о Воен Супротив Раста?
https://github.com/bytecodealliance/wasmtime
> https://github.com/bytecodealliance/wasmtimeНастоящие Воены не читают дальше заголовка?
>> "Программа на rust выходит за границы массива" - это не уязвимость, а логическая ошибка, понимать надо!
> Где ты там видишь программу на расте, выходящую за границы массива, о
> Воен Супротив Раста?Уже не в состоянии в код посмотреть? Растоман во всей красе.
>>>; movl %esi, %ecx; movq -1(%rdi,%rcx,8), %rax
; movq %rsi, %rdx
; shll $3, %edx, %edx
; movq -1(%rdi,%rdx,1), %rax
>>> "Программа на rust выходит за границы массива" - это не уязвимость, а логическая ошибка, понимать надо!
>> Где ты там видишь программу на расте, выходящую за границы массива, о
>> Воен Супротив Раста?
> Уже не в состоянии в код посмотреть? Растоман во всей красе.Газификаторы луж^W^W Воены Супротив Раста во всей красе.
> ; movq -1(%rdi,%rcx,8), %rax
> ; movq %rsi, %rdx
> ; shll $3, %edx, %edx
> ; movq -1(%rdi,%rdx,1), %rax
Ты сам то посмотри, что копируешь. Два чтения из памяти в аккумулятор. Подряд. Ты пялился в код и тебя не смутило, что первое чтение не имеет смысла?
На само деле вот:
- ; movl %esi, %ecx
- ; movq -1(%rdi,%rcx,8), %rax
+ ; movq %rsi, %rdx
+ ; shll $3, %edx, %edx
+ ; movq -1(%rdi,%rdx,1), %rax
Удалённый вариант адресовал без ограничений. Новый вариант сбрасывает старшие 32 разряда rdx, поскольку операндом команды shll является edx.
https://github.com/bytecodealliance/wasmtime/commit/63fb30e4...
> Ты сам то посмотри, что копируешь. Два чтения из памяти в аккумулятор.
> Подряд. Ты пялился в код и тебя не смутило, что первое чтение не имеет смысла?
> На само деле вот:
> - ; movl %esi, %ecx
> - ; movq -1(%rdi,%rcx,8), %rax
> + ; movq %rsi, %rdx
> + ; shll $3, %edx, %edx
> + ; movq -1(%rdi,%rdx,1), %raxНу ты вон пялился в код и писал разоблачительный коммент, при этом тебя не смутило, что цитированный код идентичен твоему - за исключением плюсиков и минусиков (которые в новой-модной верстке не в каждом браузере копируются)?
"Программа на С выходит за границы массива" - ааа! уязвимость! дырявая сишка!
Именно так"Программа, сгенеренная программой на rust, выходит за границы массива" - сама программа на расте никуда не вышла.
Жаль что ты такой особенный, что не понимаешь разницы. Даже удивительно, что ты в состоянии писать на си.
`subprocess.run(sys.argv[1])`А! Питон позволяет запустить любую команду без проверок! Питон насквозь дырявый! А!
А, нет, стоп, это же то, что я хотел. Язык никогда не ограничивает разработчика в той логике, которую он может реализовать, только в инструментах для этого.Вы хоть одну строку кода в своей жизни написали? :D
> subprocess.run(sys.argv[1])проблемка в том, что "sys.argv[1]" - творение растаманов.
В растений вроде os.argv ?
Прошу прощение, не уследил за автоподстановкой. Не растение, а расте.
Это python
Многие языки позволяют запустить процесс по строке имени, если есть собственная реализация exec или доступ к системным вызовам.
> А! Питон позволяет запустить любую команду без проверок! Питон насквозь дырявый! А!А за эттим в соседнюю новость, где питоняши не слышали что входные данные еще и проверять надо.
>(rule 3 (amode_add (Amode.ImmReg off (valid_reg base) flags)
> (uextend (ishl index @ (iadd _ _) (iconst (uimm8 >shift)))))
> (if (u32_lteq (u8_as_u32 shift) 3))
> (Amode.ImmRegRegShift off base index shift flags))запутались в _@_ ^-^
> запутались в _@_безопасно запутались... всего-то на 28 гигабайт переполнили...
Опять местные кексперты показали уровень кекспертности. В пулике ни строки на расте не пофиксили, а код на ISLE - чёто типа ассемблера. Хотя чего это я, ни один кексперт и строки кода в своей жизни не написал, он асм от хтмля не отличит.
Логическая ошибка. АСМ от хтмл отличить очень просто - первый не является ЯВУ, а второй является языком разметки. Логичней было бы сказать "С от Bliss не отличит". Впрочем я сильно сомневаюсь, что ты знаешь что такое bliss..
Так ты сам за всю жизнь ни одной строки кода не написал, чего выпендриваешься?
Значит знаю о чём говорю xD
Каким же раздутым и абсурдным стал современный web.
особенно когда "Инструментарий написан на языке Rust".
Rust.js
надо усложнить язык Rust так, чтобы в нём было невозможно допустить логические ошибки.
Зачем так сложно, отключите логику и делов то :)
Поздно :D
"а уязвимость вызвана логической ошибкой при определении правил линейной адресации памяти в генераторе кода Cranelift, транслирующем независимое от аппаратных архитектур промежуточное представление в исполняемый машинный код для архитектуры x86_64."Больше оберток и разных. Больше абстраций кем-то придуманных и не всеми понимаемых. Долой простоту Си.
Не, это как раз нормально, именно так компиляторы и делают
А где гарантия что это последняя логическая ошибка? Язык уже сложен? Сложность превалирует над безопасностью?
Чьто такое runtime? Время выполнения?
Точнее этап выполнения, чтобы не путать с тем сколько времени выполняется программа. )
Если был бы код на си - была бы такая же дырень. Как в TPM, хардблид, или ядре... тысячи их
Если бы это было написано на расте там было бы столько же дыреней, но стоил бы этот код в 10 раз дороже.
В привиденном линке код не на расте написан, а на ассемблере. И фикс на нем.
https://github.com/bytecodealliance/wasmtime/commit/63fb30e4...
Ахаха, растохейтеры не читают новость, а сразу комментировать.
А ещё ОС не на расте, процессор не на расте, и, говорят, сами программисты тоже не на расте, а с помощью дырявой ДНК написаны. Вот когда вселенную перепишут на расте - вот тогда не будет уязвимостей, а до тех пор никакие претензии не принимаются.
Всё равно будут уязвимости, так то можно даже не напрягаться.
Вот что бывает, когда свой ЯП узковат для замысла программиста. Они лезут туда чем пользоваться не умеют.
> В привиденном линке код не на расте написан, а на ассемблере. И фикс на нем."на расте написан ЧПУ, это он намотал токаря на вал а не раст!"
Я попросил OpenAI, что нужно делать, чтобы выполнить мечту многих на Опеннете.- [ ] Провести исследование о причинах популярности языка Rust
- [ ] Подготовить аналитический отчет на основе проведенного исследования
- [ ] Разработать стратегию по уменьшению числа проектов, использующих Rust
- [ ] Создать блог, посвященный проблемам, связанным с использованием Rust- [ ] Организовать кампанию в социальных сетях для привлечения внимания к проблемам использования Rust
- [ ] Провести обучающие курсы по альтернативным языкам программирования
- [ ] Поддерживать контакт с сообществом разработчиков и продолжать продвижение альтернативных языков
- [ ] Создать петицию с требованием ограничения использования Rust в крупных проектах
- [ ] Подготовить материалы для конференции, посвященной проблемам Rust, и выступить с презентацией
- [ ] Создать альтернативный инструмент, который позволит использовать другие языки программирования вместо Rust
- [ ] Провести интервью с разработчиками, которые используют Rust, и выяснить, почему они выбрали именно этот язык
- [ ] Спонсировать разработку альтернативных языков программирования и создание инструментов для их использования
- [ ] Провести рекламную кампанию, направленную на привлечение разработчиков в сообщество альтернативных языков программирования
- [ ] Организовать хакатон, посвященный разработке проектов на альтернативных языках программирования
- [ ] Вовлечь в кампанию компании, предоставляющие услуги программирования и производство программного обеспечения, чтобы они использовали альтернативные языки программирования
- [ ] Создать открытый проект, где разработчики могут делиться своим опытом использования Rust и альтернативных языков программирования
- [ ] Провести опрос разработчиков, чтобы выяснить, какие языки программирования они предпочитают, и на основе этого разработать стратегию дальнейшего продвижения альтернативных языков
- [ ] Создать образовательную программу для студентов и начинающих разработчиков, где они могут изучать альтернативные языки программирования и получать сертификаты
- [ ] Выступить на международных конференциях и выставках, чтобы привлечь внимание к проблемам использования Rust и продвижению альтернативных языков программирования
- [ ] Участвовать в разработке стандартов, которые будут регулировать использование Rust и других языков программирования в крупных проектах
- [ ] Создать онлайн-курсы и видеоуроки по альтернативным языкам программирования, чтобы разработчики могли изучать их в любое время и в любом месте
Чек-лист, когда комьюнити недовольно растом. )
> по альтернативным языкам программированияZig выглядит очень хорошо.
> Участвовать в разработке стандартов, которые будут регулировать использование Rust и других языков программирования в крупных проектахДля начала, неплохо бы, сам язык стандартизировать.
Как это сделать если у них цель сложность ради сложности. Как только ты что-то стандартизировал ты сразу снизил сложности и прекратил дальнейшее усложнение в рамках версии. Это недопустимо. Сложность должна быть сложной.
> сложность ради сложностиТри слова и ты описал всё современное IT.
> Я попросил OpenAI, что нужно делать,ChatGPT залогинься! И базу русского подгоните ему нормальную, ну что за позор то, alicebot лучше чатился.
А что не так с его словами?
То самое чувство, когда ИИ написал в сто раз более полезный комментарий, чем любой из критиков этого языка.
> запись данных в область памяти вне границы,
> допустимой для изолированного WebAssembly-кода,
> Инструментарий написан на языке RustНо как же так, Холмс?! :)
>>> а уязвимость вызвана логической ошибкой при определении правил линейной адресации памяти в генераторе кода Cranelift, транслирующем независимое от аппаратных архитектур промежуточное представление в исполняемый машинный код для архитектуры x86_64....
>>> This commit removes two incorrect rules as part of the x64 backend's computation of addressing modes. These two rules folded a zero-extended 32-bit computation into the address mode operand, but this isn't correct as the 32-bit computation should be truncated to 32-bits
- ; movl %esi, %ecx
- ; movq -1(%rdi,%rcx,8), %rax
+ ; movq %rsi, %rdx
+ ; shll $3, %edx, %edx
+ ; movq -1(%rdi,%rdx,1), %rax
>> запись данных в область памяти вне границы,
>> допустимой для изолированного WebAssembly-кода,
>> Инструментарий написан на языке Rust
> Но как же так, Холмс?! :)Элементарно Ватсон! Настоящие опеннетные Воены Супротив Раста не читают дальше заголовка и не умеют в ЯП ...
Внезапно оказывается, что полагаться на безопасные язычки не стоит и надо учиться кодить безопасно самому, да ещё и с ресурсами работать. Никогда такого не было и вот опять....А потом ещё окажется, что безопасные язычки отучают думать о ресурсах и безопасности - вот вою-то на болотах прибавится!