Война с армией восставших тостеров: почему безопасный код встроенных систем - это передний край современной безопасности.

10 сентября 2021 г. 10:12
 7379

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

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

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

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

Хотя маловероятно, что «армия тостеров» придет поработить человечество (хотя Tesla bot уже вызывает некоторые опасения) в результате кибератаки, вредоносные киберсобытия все же возможны. Некоторые из наших автомобилей, самолетов и медицинских приборов полагаются на сложный код встроенных систем для выполнения ключевых задач, и перспектива взлома этих объектов потенциально опасна для жизни.

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

Разработчики не являются экспертами по безопасности, и ни одна компания не должна ожидать от них выполнения этой задачи, но они могут быть оснащены гораздо более мощным арсеналом для борьбы с актуальными для них угрозами. Встраиваемые системы - обычно написанные на языках C и C++ - будут использоваться все чаще по мере роста и изменения наших технологических потребностей, и специализированное обучение разработчиков инструментам безопасности в этой среде является важной стратегией защиты от кибератак.

Взрывающиеся духовки, сбивающиеся с пути автомобили... есть ли реальная опасность?

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

Вопрос «умных» автомобилей особенно сложен: на борту имеется множество встроенных систем, каждая из которых выполняет свои микро-функции - от автоматических стеклоочистителей до обеспечения работы двигателя и тормозной системы. Переплетаясь с постоянно растущим набором коммуникационных технологий, таких как WI-Fi, Bluetooth и GPS, «умный» автомобиль представляет собой сложную цифровую инфраструктуру, подверженную многочисленным кибер-атакам. Учитывая, что к 2023 году на дорогах всего мира появится 76,3 миллиона умных автомобилей – потребуется заложить целый новый пласт защитных мер для обеспечения настоящей безопасности.

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

Однако для создания и выполнения кода, соответствующего этому «золотому стандарту», требуются инженеры по встраиваемым системам, которые уверенно - не говоря уже о безопасности - владеют инструментами.

Почему повышение квалификации в области безопасности встроенных систем является столь специфичным?

Языки программирования C и C++ по сегодняшним меркам уже устарели, но все еще широко используются. Они составляют функциональное ядро кодовой базы встраиваемых систем, а Embedded C/C++ наслаждается блестящей, современной жизнью как часть мира подключенных устройств.

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

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

Защита встроенных систем с самого их внедрения - обязанность каждого.

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

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

Практическое решение проблем безопасности встраиваемых систем

Переполнение буфера, дефекты инъекций и ошибки бизнес-логики - все это распространенные подводные камни при разработке встраиваемых систем. Когда они зарыты глубоко в лабиринте микроконтроллеров в одном автомобиле или устройстве - это может привести к катастрофе.

Переполнение буфера особенно распространено, и если вы хотите подробнее узнать о том, как оно помогло скомпрометировать духовку, о которой мы говорили ранее (позволяя удаленное выполнение кода), ознакомьтесь с этим отчетом об уязвимости CVE-2020-28592.

Теперь пришло время поработать с уязвимостью переполнения буфера в реальном Embedded C/C++ коде. Пройдите этот тест, чтобы узнать, сможете ли вы найти, идентифицировать и исправить плохие примеры кода, которые привели к этой коварной ошибке:

[Пройти тест].

Вы справились? Посетите www.securecodewarrior.com для прохождения эффективного обучения по безопасности встраиваемых систем.

Источник: https://thehackernews.com

Системы Информационной Безопасности