The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

25 уязвимостей в RTOS Zephyr, в том числе эксплуатируемые через ICMP-пакет

27.05.2020 10:11

Исследователи из компании NCC Group опубликовали результаты аудита свободного проекта Zephyr, развивающего операционную систему реального времени (RTOS), нацеленную на оснащение устройств, соответствующих концепции "Интернет вещей" (IoT, Internet of Things). В ходе аудита было выявлено 25 уязвимостей в Zephyr и 1 уязвимость в MCUboot. Разработка Zephyr ведётся при участии компаний Intel.

В сумме было выявлено 6 уязвимостей в сетевом стеке, 4 - в ядре, 2 - в командной оболочке, 5 в обработчиках системных вызовов, 5 в подсистеме USB и 3 в механизме обновления прошивки. Двум проблемам присвоен критический уровень опасности, двум - высокий, 9 умеренный, 9 - низкий и 4 - для принятия во внимание. Критические проблемы затрагивают IPv4 стек и парсер MQTT, опасные - драйверы USB mass storage и USB DFU. На момент раскрытия информации исправления были подготовлены только для 15 наиболее опасных уязвимостей, неисправленными пока остаются проблемы, приводящие к отказу в обслуживании или связанные с недоработками в механизмах дополнительной защиты ядра.

В IPv4 стеке платформы выявлена удалённо эксплуатируемая уязвимость, приводящая к повреждению памяти при обработке определённым образом модифицированных ICMP-пакетов. Ещё одна серьёзная проблема найдена в парсере протокола MQTT, которая вызвана отсутствием должной проверки длины полей в заголовке и может привести удалённому выполнению кода. Менее опасные проблемы, приводящие к отказу в обслуживании, найдены в IPv6-стеке и реализации протокола CoAP.

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

Много проблем затрагивают USB-стек и отдельные драйверы. Например, проблема в USB mass storage позволяют вызвать переполнение буфера и выполнить код на уровне ядра при подключении устройства к подконтрольному атакующему USB-хосту. Уязвимость в USB DFU, драйвере для загрузки новой прошивки по USB, позволяет загрузить модифицированный образ прошивки во внутренний Flash микроконтроллера без применения шифрования и обойдя режим защищённой загрузки с проверкой компонентов по цифровой подписи. Дополнительно был изучен код открытого загрузчика MCUboot, в котором была найдена одна неопасная уязвимость, которая может привести к переполнению буфера при испльзовании протокола SMP (Simple Management Protocol) через UART.

Напомним, что в Zephyr для всех процессов предоставляется только одно глобальное совместно используемое виртуальное адресное пространство (SASOS, Single Address Space Operating System). Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании. Все системные ресурсы определяются на этапе компиляции, что сокращает размер кода и увеличивает производительность. В системный образ могут включаться только те возможности ядра, которые требуются для выполнения приложения.

Примечательно, что среди ключевых достоинств Zephyr упоминается разработка с оглядкой на безопасность. Утверждается, что все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение, рецензирование кода, анализ внедрения бэкдоров и моделирование угроз.

  1. Главная ссылка к новости (https://research.nccgroup.com/...)
  2. OpenNews: Выпуск свободной операционной системы реального времени Zephyr 1.8
  3. OpenNews: Foundries.io представила платформы для разработки безопасных прошивок для IoT устройств
  4. OpenNews: FreeRTOS перешёл под крыло Amazon и выпущен под лицензией MIT
  5. OpenNews: Новый проект Linux Foundation по созданию ОС реального времени для интернета вещей
  6. OpenNews: В TCP/IP-стеке FreeRTOS выявлены уязвимости, приводящие к удалённому выполнению кода
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/53033-zephyr
Ключевые слова: zephyr, intel, rtos
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (131) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 10:47, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    >обращение по отрицательному номеру системного вызова приводит к целочисленному переполнению

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

     
     
  • 2.15, Аноним (15), 12:08, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    согласен, использование signed/unsigned должно как бы отражать предметную область. Если бы отрицательные номера системных вызовов имели практический смысл - ваще ок. Но использовать -2^N...2^N-1 диапазон, когда используешь по факту 0...2^N - ну такое. Всегда, когда работаешь с числами на ЭВМ, знак или беззнак нужно выбирать, исходя из того, какой wraparound тебе нужен по смыслу/менее катастрофичен.
     
     
  • 3.32, Аноним (-), 14:03, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Обычно на wraparound все кладут, а потом получают СЮРПРИЗ! Ну или как вариант можно чекать в рантайме результат. Только скорость математики в несколько раз обвалится, из-за разбавления проверками.
     
     
  • 4.60, HyC (?), 16:34, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На него все кладут потому-что формально тип кагбе автоматически приводится, компилятор не матерится, а череп морщить чего оно там по контексту надо, что можно и что нельзя не царское дело.

    Поэтому как 50 лет грабли собирали так их же до сих пор и собирают.

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

     
     
  • 5.61, Аноним (61), 16:49, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А когда предлагаешь новые проекты на Rust начинать, где такой проблемы нет (и многих других), начинают шипеть и нечленораздельно возмущаться.
     
     
  • 6.98, Онаним (?), 00:01, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет кода - нет проблем, в принципе.
     
  • 6.111, Аноним (111), 16:11, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А когда предлагаешь новые проекты на Rust начинать, где такой проблемы нет
    > (и многих других), начинают шипеть и нечленораздельно возмущаться.

    Потому что там других проблем есть, начиная с хайподр@черской экосистемы завязанной на стремную мозиллу.корп. Когда у ЯП вся экосистема завязана на 1 корпораса прославившегося в основном поимением своих девелоперов - это очень так себе заявка. Разве что на залет.

    Ну и синтаксис у этого хруста какой-то инопланетный. Иные проги на этом самому страшному си++ уже втыкают.

     
  • 5.64, Аноним (64), 17:18, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Проблема не в приведении типа А в том что если вы даже просто допустим суммируе... большой текст свёрнут, показать
     
     
  • 6.99, Annual (??), 00:10, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну, вообще, в свежих компилерах завезли ASAN, UBSAN, а в шланге и
    > вроде integer sanitizer. Так что автоматические граблесобиралки подвезли.

    Дрянь же все эти ASAN.
    Потому что плохо сочетаются с языком.
    А в языке явно сделано зловредно. Переполнения сложнообнаружимы и неопределённое поведение. То есть отсутствуют нормальные языковые средства и это зловредно внесённая особенность языка. __builtin_add_overflow тоже редкая дрянь (потому что a + b превращается в __builtin_add_overflow и грубо расходится с традиционным синтаксисом C).
    Вообще в C надо сказать все необходимые элементы есть. Например сигналы... longjmp... Но...  У б людки так и продолжают совать правила с необнаружимыми переполнениями. А в последние времена эти вы б л ядочные "санитайзеры".


     
     
  • 7.112, Аноним (-), 16:25, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В смысле Чего там сочетаться должно Оно всего лишь компиляется несколько иначе... большой текст свёрнут, показать
     
  • 4.82, Аноним84701 (ok), 19:07, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Но далеко не всегда и далеко не везде code include limits h include stdi... большой текст свёрнут, показать
     
     
  • 5.94, Forth (ok), 21:52, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бенч неправильный для современных процов с их конвейерами Одно сложение в цикле... большой текст свёрнут, показать
     
     
  • 6.104, Аноним84701 (ok), 02:18, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вообще-то так и задуманно без конвееров и мельтдов W спекулятивного выполнения ... большой текст свёрнут, показать
     
     
  • 7.108, Forth (ok), 08:51, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Там не malloc, там memcpy.
    Как раз в той новости про memcpy патч перформанс никак не затрагивает. Потому что проверки попросту не те, в патче же видно, поменяли знаковые на беззнаковые. Больше их не стало.
    Я за то, чтобы не вставлять проверки на переполнение везде безусловно, потому что на монстрах типа интела оно ненамного тормозит всё. На жалких армах типа cortex-m с его убогим конвейером на три инструкции каждый бранч на счету. Вот уж где loop unroll бывает дает жару. :)
    Конечно надо это проверить тщательно составленным бенчмарком, но чудес на арме не жду.
     
     
  • 8.109, Аноним84701 (ok), 12:33, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Верно, что-то меня на маллоке перемкнуло Да не, в комментариях как обычно у... большой текст свёрнут, показать
     
  • 5.113, Аноним (-), 16:27, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Но далеко не всегда и далеко не везде:
    >       int of = __builtin_add_overflow(i, add, &i);  

    Только вот код непортабельный, а так все хорошо, прекрасная маркиза. Я и еще круче могу - asm() и телемаркет, там можно насовать очень злой и эффективный код. Только он еще менее портабельный...

     
     
  • 6.115, Аноним84701 (ok), 17:00, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Компилируется и работает на штеуде и второпишке с ее armv7 там конечно более ощ... большой текст свёрнут, показать
     
     
  • 7.118, Аноним (-), 17:24, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    При том на обоих небось gcc или шланг Так конечно можно, но все же портабельнос... большой текст свёрнут, показать
     
     
  • 8.125, Аноним84701 (ok), 19:38, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сделай в виде макро и ifdef да, так тоже можно 8211 если кто спросит, то я ... большой текст свёрнут, показать
     
     
  • 9.135, Аноним (135), 17:58, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Прости, 84701, но я со своей стороны считаю что 1 ifdef делает код просто Г... большой текст свёрнут, показать
     
  • 7.122, Michael Shigorin (ok), 18:34, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На e2k в прошлом году бы ещё не собралось http altlinux org lcc builtin Потом... большой текст свёрнут, показать
     
  • 2.16, Аноним (16), 12:13, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Не удивлён. Встречаются те, которые пишут просто int вместо uint8, uint32 в коде для микроконтроллеров с 32 кб флеша и 4 кб ОЗУ.
     
     
  • 3.34, Аноним (-), 14:12, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В случае 32-битных микроконтроллеров - у него один фиг регистры 32 бита и от уменьшения uinit код может и не улучшиться. А иногда и ухучшается. Относительно int тот же uint32_t явно конкретнее указывает пожелания, int на разных железках может быть разным и это так себе.

    А так там бутлоадер приведен офигеть просто. В мк с 32 кил кода он вообще влезет, интересно? Там алгоритмов напихано побольше чем в GRUB, пожалуй :)

     
     
  • 4.47, Аноним (47), 15:05, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >4 кб ОЗУ.
    >32-битных микроконтроллер

    именно столько озу у 32битных микроконтроллеров и бывает. не больше не меньше

     
     
  • 5.65, Аноним (64), 17:20, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > именно столько озу у 32битных микроконтроллеров и бывает. не больше не меньше

    Я не понял 1 момент:
    - Это вы поумничать решили, будучи не в теме?
    - Или вы решили покапитанить?

    Я прямо 50/50. Ну так, глядя на вон тот STM32F с 16 кил флеша и 4 кило рамы. И да, он 32-битный при этом, а что? :)


     
     
  • 6.105, с (?), 03:10, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > STM32F

    это что?
    ты сам то в теме?

    stm32f1* и stm32f4* это арм разных поколений, м3 и м4, уж обьем озу там есть из чего выбрать, у голубой таблетки за 50р 20кб. А 4кб при 32битах это экстим какойто.

     
     
  • 7.114, Аноним (-), 16:50, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это семейство процов STM32F посматривая на свежезапаяный STM32 STM ы навороч... большой текст свёрнут, показать
     
     
  • 8.147, с (?), 06:13, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Я не утвержрал есть и stm8f это другое семейство ну очевидно, впрочем нет, лит... большой текст свёрнут, показать
     
     
  • 9.148, Аноним (148), 11:34, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Абсолютно Это некое собственное 8-битное ядро STMicro вместо ARM Единственное ... большой текст свёрнут, показать
     
     
  • 10.149, с (?), 14:34, 31/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо, но уже рано поглядывая на десяток тестовых платы на какомто клоне, кот... большой текст свёрнут, показать
     
     
  • 11.150, Аноним (-), 02:28, 01/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если это про F1xx то там 2 сигнала, boot0 и boot1, это 2 джампера Неверный уров... большой текст свёрнут, показать
     
     
  • 12.151, с (?), 18:05, 01/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Там gd, пробовал все комбинации, мигает светодиодиком тестовым и все, прозванива... большой текст свёрнут, показать
     
     
  • 13.152, Аноним (-), 04:03, 04/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    GD32F Какой именно Я посматривал на них, но купить пока не сподвигся, увы Зна... большой текст свёрнут, показать
     
     
  • 14.153, с (?), 10:09, 04/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    https ibb co B2SqR6c это не gd, я видимо хотел купить, но решил не заморачиват... большой текст свёрнут, показать
     
     
  • 15.154, Аноним (-), 17:58, 07/06/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это не GD Какой-то CS У клонов _бывают_ отличия, надо смотреть даташиты Да ... большой текст свёрнут, показать
     
  • 3.52, Lex (??), 15:48, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    В теории, знаковые и беззнаковые должны были всем упростить жизнь и сделать её лучше.. по крайней мере, так казалось на заре подобного типизированного подхода...

    А теперь - воистину какой-то дурацкий цирк и дырявая абстракция со всеми этими интами-юинтами-8-16-32-64-итп

     
     
  • 4.62, Аноним (61), 16:52, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Всему виной дебильные правила неявного приведения.
    При том что typecast в uin32_t можно сделать и на void* по недосмотру(попутав переменные), во весело потом.
     
     
  • 5.95, Аноним (95), 21:55, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > typecast в uin32_t можно сделать и на void* по недосмотру

    Давно уже такое не позволяется ни гнутыми сями ни шлангом. Нужен промежуточный каст в (u)intptr_t

     
     
  • 6.100, Forth (ok), 00:42, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может я что не так понимаю?
    Ну ладно, вот такое сделаем в одну сторону и в другую:
                                                                                                                                                                                                                                        
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h>

    int main(void) {
      uint64_t i = 1;

      void *p;

      p = (void*) i;

      printf("%s", (char*) p);

      i = (uint64_t) p;

      printf("%ld", i);

      return 0;
    }

    gcc -g -Wall -Wextra -Wpedantic -O3 -std=c99 test.c

    ./a.out
    Segmentation fault (core dumped)

    P.S.
    gcc version 9.3.0
    Дефолтные флаги (gcc test.c) конечно тоже молчит как партизан. uint64_t ессно потому, что процессор 64 битный.

     
     
  • 7.103, Аноним (95), 02:13, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну ладно, вот такое сделаем в одну сторону и в другую:

    Это потому что у тебя размер int-а увеличен по сравнению с условием (uint32_t). Последний в void * на 64-битной машине не скастится.

     
     
  • 8.106, Forth (ok), 08:35, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Это у меня под рукой не было компилятора для 32 битной системы Я-то думал это и... текст свёрнут, показать
     
     
  • 9.110, Аноним (95), 14:52, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Use -m32, Luke Но это же opennet, тут не принято дочитывать то, на что отвечаешь... текст свёрнут, показать
     
  • 2.31, Z (??), 13:52, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Использование int это Unix style :)
     
     
  • 3.33, 1 (??), 14:09, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    неа - тут ты неправ
     
  • 3.35, Аноним (-), 14:12, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это C89 античный. И это грабли - потому что на разных железках размер int не гарантирован одинаковым. Это создает поле для багов.
     
     
  • 4.53, Lex (??), 15:51, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    По большому счету, у него вообще не должно быть «размера».
    А то, это уже какой-то byte/word/dword/итп, а не типо_абстракция_для_высокоуровневого_языка
     
     
  • 5.63, Аноним (61), 16:54, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    C и не является языком высокого уровня. Проходит по категории среднего.
     
     
  • 6.67, Аноним (64), 17:27, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > C и не является языком высокого уровня. Проходит по категории среднего.

    Он разный. Вон libcello показывает как из него слепить нечто довольно высокоуровневое. Если оно зачем-то надо. Некоторые на нем умудряются объекты наворачивать. Хоть их изначально там и нет.

     
     
  • 7.83, Аноним84701 (ok), 19:31, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Э-э-э, я вас расстрою, но возможность с помощью костыле и подпорок придать похож... большой текст свёрнут, показать
     
     
  • 8.116, Аноним (116), 17:01, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Если можно глушить высокоуровневыми примитивами - это показатель высокоуровневос... большой текст свёрнут, показать
     
  • 5.66, Аноним (64), 17:26, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Офигенно До тех пор пока не захочется - Сделать что-то с данными в памяти - С... большой текст свёрнут, показать
     
     
  • 6.86, Lex (??), 20:14, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И что Без какого-либо стандарта передачи данных, на другом конце всё равно ... большой текст свёрнут, показать
     
     
  • 7.117, Аноним (-), 17:13, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И - то Абстрактный int - совсем не то же что uint32_t Когда у меня есть послед... большой текст свёрнут, показать
     
  • 2.76, Ordu (ok), 18:07, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На кой вообще было использовать знаковый тип для номеров системных вызовов?

    Потому что без разницы.

    > В случае беззнакового, при -1 была бы попытка вызвать самый последний из возможных.

    В случае беззнакового не было бы -1, был бы 0xff...ff, и он был бы явно недопустимым.

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

     

     ....большая нить свёрнута, показать (53)

  • 1.2, ryoken (ok), 10:52, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >> Примечательно, что среди ключевых достоинств Zephyr упоминается разработка с оглядкой на безопасность. Утверждается, что все стадии разработки проходят обязательные этапы подтверждения безопасности кода: fuzzing-тестирование, статический анализ, испытания на проникновение, рецензирование кода, анализ внедрения бэкдоров и моделирование угроз.

    ну ага

     
     
  • 2.5, Аноним (5), 11:08, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    25 - неплохое число уязвимостей для Целой Операционной Системы. Давай сравним это число с количеством уязвимостей в любой другой оси? Например, операционной системы GNU/Linux (начиная с ядра и заканчивая калькуляторами).
     
     
  • 3.8, Аноним (8), 11:14, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А в Zephyr есть калькулятор? А то будет не очень честное сравнение.
     
  • 2.37, Аноним (-), 14:14, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > не помогли, вопреки наставлениям местных диванных экспертов

    Ну ты то покажешь как пихтонрасты операционки и прошивки микроконтроллеров кодят? А то вон написали redox, так он походу даже реактос обогнал по степени [не]нужности.

     
     
  • 3.79, anonymous (??), 18:43, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А что мешает rust для МК использовать?
     
     
  • 4.119, Аноним (119), 18:06, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А что мешает rust для МК использовать?

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

     
     
  • 5.132, Вебмакака (?), 00:15, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Юзер314 это ты? Стек чем на С без ассемблера настраиваешь, или на полшишечки не считается?
     
     
  • 6.136, Аноним (136), 18:22, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Cortex-M можно застартить вообще совсем без асма Я проверял Там в таблице вект... большой текст свёрнут, показать
     
     
  • 7.141, Forth (ok), 19:23, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    1) Использование предоставленных производителем платформы средств типа armlib (__user_setup_stackheap() например) . Ну да, там сделают mov sp, на нам-то не пофиг?
    2) Опять же как в 1). CMSIS макросы и прочее.

    Не надо доводить до абсурда, а то работу будет некогда работать.

     
     
  • 8.146, Аноним (-), 01:07, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    1 Я не люблю фирму ARM и не хочу пользоваться их либами, особенно на мутных усл... текст свёрнут, показать
     
  • 4.131, Вебмакака (?), 00:07, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Особая микроконтроллерная атмосфера. Так, срачи Си против ассемблера не очень давно были актуальны.
     
     
  • 5.139, Аноним (148), 18:48, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Особая микроконтроллерная атмосфера.

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

    > Так, срачи Си против ассемблера не очень давно были актуальны.

    Ну я упер у чувака с DSPICом reed solomon'а. Ессно на сях, ессно того же легендарного Phil Karn KA9Q. Интересно, у кого-нибудь в принципе хватит духа ТАКОЕ на асме выписывать? И на сколько архитектур этого геройства хватит :)

     
     
  • 6.142, Forth (ok), 19:30, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Главное не увлекаться.
    Я лично предпочитаю вариант, когда разработчики получают ТЗ, описание алгоритмов и архитектуры проекта, затем проектируют устройство из того что нужно, берут BSP, библиотеки, RTOS  и т.п.
    И делают в итоге за 3 месяца, а не за год, качественно и в срок.

    Ну да, не знают где какие битики лежат в FW да и не надо.

     
     
  • 7.144, Аноним (-), 00:48, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > И делают в итоге за 3 месяца, а не за год, качественно и в срок.

    Это пока внутрь этих штук не посмотришь.

    Да и что такое BSP для микроконтроллера? Если вдруг кр00той эксперт не в курсе, микроконтроллеры поставляются как незапаянные чипы. Поэтому "boart support package" в ситуации когда этот самый борд под задачу делается, гм, допустим, мной - это вообще как и кто BSP релизить должен?! Или это имеется в виду что купить ардуину и поюзать... ? :)

    > Ну да, не знают где какие битики лежат в FW да и не надо.

    А потом случается педаль газа у тойоты и дико ср00щие кирпичами водилы. А так все хорошо, прекрасная маркиза.

     
     
  • 8.145, Аноним (145), 00:57, 30/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    p s разок мне просто дец как приперло - и я за 2 дня и налутал борд и отрихт... текст свёрнут, показать
     
  • 2.49, Аноним (1), 15:31, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Очередные сишные дыры))

    Ну чё, ну давай Electron в STM32F103 запихаем. Нам-то слабо что-ли?

     
     
  • 3.57, Lex (??), 16:14, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну чё, ну давай Win7 в STM32F103 запихаем. Нам-то слабо что-ли?

    Ненаучо. По слухам, православная сишечка с плюсами и безо всяких электронов. полюбому влезть должно и еще 99% памяти свободной останется.

     
     
  • 4.78, Аноним (78), 18:43, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А вот и не смешно. В этот МК JS/Python проекты не влазят. А на C++ либы влазят
     
     
  • 5.87, Lex (??), 20:17, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За применение плюсОв для мк с действительно серьезно ограниченной памятью ИМХО надо сс.ными тряпками бить.. возможно, даже по лицу.

    Для полноты ещё не хватает вспомнить про ардуину :)

     
     
  • 6.92, Аноним (1), 21:28, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я проводил опыт. Намеренно налепил иерархию классов с виртуальными методами и всё это скомпилил для Ардуины и залил. Был сам удивлён, что катастрофы с занимаемыми ресурсами не произошло.
     
     
  • 7.107, Lex (??), 08:45, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На тиньку 13-ю с 1Кб флеш 64 байта озу на тиньку 2313-ю с 2Кб флеша и 128 ба... большой текст свёрнут, показать
     
     
  • 8.140, Аноним (148), 18:51, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вот кстати одна штука которую в расте вроде слегка просекли как в си и некоторые... текст свёрнут, показать
     
  • 4.90, Аноним (1), 21:24, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так камрад Самоподобный топит за то, что всякие сишечки надо заменить managed языками.
     
  • 4.121, Аноним (-), 18:29, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну чё, ну давай Win7 в STM32F103 запихаем. Нам-то слабо что-ли?

    А что, чувак Ubuntu на AVR загружал... :). В F103 есть варианты с FSMC (внешняя шина).

     
     
  • 5.134, Lex (??), 16:51, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А что, чувак Ubuntu на AVR загружал... :)

    Мб все-таки на ARM загружал ?
    А то, для интереса бегло поискал, не попалось ни одной соотв. новости

     
     
  • 6.137, Аноним (137), 18:26, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Мб все-таки на ARM загружал ?

    Нет! На AVR - что и сделало это достижение убер-эпиком. Он прицепил ей жирный внешний RAM на шину и ... сэмулировал ARMv5 (!!!) c mmu.

    > А то, для интереса бегло поискал, не попалось ни одной соотв. новости

    Да вроде даже тут на опеннете и было. Правда с какой скоростью AVR эмулирует ARMv5 все наверное догадались. Чувак грузил убунту на этом около суток, чтоли. Но все же смог зайти в шелл и даже набрать пару команд, хоть это и напоминало пошаговую стратегию: вы ввели команду - ход переходит к CPU :D


     

  • 1.6, Аноним (-), 11:12, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Сейчас снова набегут растоманы с криками "ко-ко-ко! это всё ваш небезопасный Ц! вы все должны писать на расте!" вместо того, чтобы самим написать на своём расте что-нибудь полезное.
     
     
  • 2.10, Аноним (10), 11:16, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +9 +/
    ко-ко-ко! это всё ваш небезопасный Ц! вы все должны писать на расте!
     
  • 2.13, qetuo (?), 11:48, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Как ни странно, вместо "растоманов" обычно прибегают фанатики анти-"растоманы", приплетающие раст по поводу и без.
     
  • 2.18, Аноним (16), 12:18, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Конечно! Они уже создали микропитон и esptuino на джаваскрипте! Подумаешь, что памяти в 10 раз больше кушает, в 50 раз медленней циклы работают, для домашней поделки то хватит, а для промышленной партии в сотни тысяч такие расходы уже несовместимы с жизнью.
     
     
     
    Часть нити удалена модератором

  • 4.27, Аноним (16), 13:40, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Суть одно: криков много, дела мало. Поэтому и в одну кучу.
     
     
  • 5.75, Аноним (137), 17:55, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Суть одно: криков много, дела мало. Поэтому и в одну кучу.

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

     
  • 4.39, Аноним (-), 14:18, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Ясно

    Чего тебе ясно? Один микроконтроллерщик назвал весь этот сброд пихтонрасами. Отличное название, почти всю кучу хайпованых макак верящих в серебряные пули включает.

     
     
     
    Часть нити удалена модератором

  • 6.54, Аноним (54), 15:53, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    На C есть примеры не дырявых программ, очевидно что дело не в языке программирования.
     
     
  • 7.56, Fracta1L (ok), 16:09, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > На C есть примеры не дырявых программ

    Это какие?

     
     
  • 8.74, Аноним (-), 17:53, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    DJBDNS например А так в любой большой программе есть баги Часть из них приводи... текст свёрнут, показать
     
  • 8.96, Аноним (47), 22:17, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Hello World ... текст свёрнут, показать
     
  • 8.102, Аноним (102), 01:52, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А тебе уже говорили какие ... текст свёрнут, показать
     
  • 6.68, Аноним (-), 17:44, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Что у фанатиков дырявой сишки бошки такие же дырявые)

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

     
  • 6.80, WD40 (?), 18:47, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    У тебя тоже есть уязвимость. Если вакансии будут только на крестах, то с голоду можно помереть.
     
     
  • 7.88, Lex (??), 20:19, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Но кого мы обманываем.
    Скорее всего, если вакансии и будут, то на не_плюсах ..:)
     
     
  • 8.124, Аноним (124), 18:42, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это смотря какая причина наличия вакансий Я видел одну, год висела, на дел... текст свёрнут, показать
     

  • 1.7, Аноним (10), 11:14, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    SASOS-нули с безопасностью
     
  • 1.9, Страдивариус (?), 11:14, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > В IPv4 стеке платформы выявлена удалённо эксплуатируемая уязвимость, приводящая к повреждению памяти при обработке определённым образом модифицированных ICMP-пакетов.

    Шел 2020 год, а школоте упорно не давали забывать про вариации ping of death.

     
     
  • 2.12, ryoken (ok), 11:33, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Шел 2020 год, а школоте упорно не давали забывать про вариации ping
    > of death.

    Уверен, для кого-то это будет новостью :D.

     

  • 1.14, Аноним (1), 12:05, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >Дополнительно был изучен код открытого загрузчика MCUboot, в котором была найдена одна неопасная уязвимость, которая может привести к переполнению буфера при испльзовании протокола SMP (Simple Management Protocol) через UART.

    На Rust переполнений буфера быть не может!

     
     
  • 2.19, Аноним (16), 12:20, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Почему же её назвали Rust, почему уж сразу не Shit или какой-нить Punk?
     
     
  • 3.36, Father Karras (?), 14:14, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кто-то из моих адептов пережил так неудачно сфейленный мной армагеддец.

    И продолжает в том же духе.

     
  • 3.40, Аноним (-), 14:20, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему же её назвали Rust, почему уж сразу не Shit или какой-нить Punk?

    Shithonrust Punk. Железный человек, судя по описанию. Бухой и ржавый.

     
  • 2.20, Аноним (15), 12:23, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Могут, скорее их проэксплуатировать нельзя просто. Доводилось встречать растописцев, которые кроме овнершипа и лайфтаймов дальше внимательно спеку не читали, поэтому try-catch в Rust-стиле (обработка panic, возникающей при любых операциях, где у чего-то задекларирован фиксированный размер и адресация по индексам) и не производится. Ну спасибо что хоть прога на проде падает в прайм-тайм, а не светит дырками.
     

  • 1.22, Аноним (22), 12:58, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    интернет свищей
     
     
  • 2.28, Аноним (16), 13:42, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > интернет дрищей

    fixed

     
  • 2.69, Аноним (-), 17:46, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > интернет овощей

    //так честнее

     
     
  • 3.93, Аноним (1), 21:39, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну это про тех, кто топит за IoT даже там, где не особо-то и нужно.
     
     
  • 4.120, Аноним (119), 18:11, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Ну это про тех, кто топит за IoT даже там, где не особо-то и нужно.

    Тебе может и не нужно. А мне пригодится идея стать распределенным...

     
     
  • 5.126, Аноним (126), 21:06, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так распределяйся. Мне IoT пц как нужно. Но в том виде в каком за него топят - не нужно. Они его топят - и это правильно.
     
     
  • 6.138, Аноним (137), 18:36, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так распределяйся.

    Я это уже слегка попробовал и, вообще, понравилось. Однажды я смогу процитировать одного персонажа и не соврать.

    > Но в том виде в каком за него топят - не нужно.

    Смотря кто топит. Если жирные корпорации и их дружки, то от них понятно что ожидать: очередной шпионаж, тоталконтрол и мелкие пакости.

     

  • 1.26, Аноним (-), 13:30, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > Разработка Zephyr ведётся при участии компаний Intel.

    Ясно-понятно. Дырки-то в процах уже заштопали циганской иглой с белыми нитками.

     
     
  • 2.29, WD40 (?), 13:44, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "цыган встал на цыпочки и сказал цыплёнку: «Цыц»"
     
  • 2.30, Аноним (15), 13:50, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вот разнылись-то, а. Meltdown и Spectre как были в стадии proof-of-concept, так и поныне там. Нужна хренова туча одновременно выполненных условий, чтобы у тебя с компа украли чувствительную инфу таким образом. Вероятность того, что пароли сопрут, вкрутив нормальный руткит с кейлоггером или тупо запудрив голову Машке из бухгалтерии, гораздо выше.
     
     
  • 3.41, Аноним (41), 14:22, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Однако идея стыбзить все то же самое БЕЗ руткита и кейлогера яваскриптом каким - очень даже. А безопасник потом сойдет с ума пытаясь найти руткит которого нет.
     
     
  • 4.58, пох. (?), 16:32, 27/05/2020 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 5.70, Аноним (-), 17:48, 27/05/2020 Скрыто ботом-модератором     [к модератору]
  • +/
     

     ....ответы скрыты (5)

  • 1.42, Аноним (42), 14:26, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Тыкните их носиком в RUST!
     
     
  • 2.46, Аноним (46), 14:55, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Привет! А что ты написал на своём RUST, чтобы тыкать кого-то "носиком"?
     
  • 2.50, Аноним (1), 15:37, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ой, не надо. Пахнет сильно резко!
     
  • 2.71, Аноним (-), 17:49, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Тыкните их носиком в RUST!

    А давай ты лучше сам в него ткнешься и вместо пиндежа на форуме что-нибудь дельное накодишь?

     
  • 2.97, Аноним (-), 23:06, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    С добрым утром! https://github.com/ixy-languages/ixy-languages
     

  • 1.43, YetAnotherOnanym (ok), 14:29, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >  уязвимость, приводящая к повреждению памяти при обработке определённым образом модифицированных ICMP-пакетов

    PoD4IoT.

     
  • 1.45, None (??), 14:55, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Если бы я был серьёзным оператором бот-нет сетей, участие в подобный проектах "ОС" было бы одним из моих основных приоритетов. Вкладываться в будущее ведь надо.
     
     
  • 2.51, Аноним (1), 15:40, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И пользователю выгодно. Майнят, тем самым, кофе заваривая.
     
  • 2.59, оператор (?), 16:34, 27/05/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    да ладно, время на фигню тратить. Эти обезьяны и так все за нас сделают. Будущее безоблачно. "Интернет свищей", ага.
     

  • 1.73, Аноним (73), 17:53, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >. Специфичный для приложений код комбинируется с адаптированным под конкретное применение ядром и образует монолитный исполняемый файл для загрузки и запуска на определённом оборудовании.

    вспоминается Cray.. и их catamount..

     
  • 1.81, Аноним_ (?), 18:49, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Интернет щелей.
     
  • 1.85, commiethebeastie (ok), 19:54, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >обращение по отрицательному номеру системного вызова приводит к целочисленному переполнению

    Главное в индийские ракеты её не ставьте.

     
     
  • 2.101, Michael Shigorin (ok), 01:00, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Winwars 2000?..
     
     
  • 3.123, Аноним (124), 18:39, 28/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Цива же
     
  • 2.133, Аноним (95), 01:38, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Главное в индийские ракеты её не ставьте.

    Почему в индийские-то? Тут осенью первый запуск 'Ariane VI' планируют. Вот и посмотрим, осилят ли проггеры повторение успеха первого запуска "Ariane V" или нет?

     
     
  • 3.143, commiethebeastie (ok), 20:26, 29/05/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему в индийские-то?

    Ядерный Ганди в циве. Он настолько миролюбивый, что вызывает переполнение и начинает стрелять по всем ядерными ракетами.

     

  • 1.91, Аноним (91), 21:28, 27/05/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    S in IOT stands for "Security"
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру