Введение

Программное обеспечение низкого уровня для компьютеров

В вычислительной технике, прошивка – это программное обеспечение, обеспечивающее управление аппаратным обеспечением вычислительного устройства на низком уровне. Для относительно простого устройства прошивка может выполнять все функции управления, мониторинга и обработки данных. Для более сложного устройства прошивка может обеспечивать управление на относительно низком уровне, а также предоставлять сервисы аппаратной абстракции для программного обеспечения более высокого уровня, такого как операционная система. Прошивка используется в широком спектре вычислительных устройств, включая персональные компьютеры, телефоны, бытовую технику, транспортные средства, компьютерные периферийные устройства и во многих цифровых чипах внутри этих более крупных систем. Прошивка хранится в энергонезависимой памяти – либо в постоянном запоминающем устройстве (ПЗУ/ROM), либо в программируемой памяти, такой как EPROM, EEPROM или флэш-память. Изменение прошивки устройства, хранящейся в ПЗУ, требует физической замены микросхемы памяти, хотя некоторые микросхемы не предназначены для извлечения после производства. Программируемую память прошивки можно перепрограммировать с помощью процедуры, иногда называемой прошивкой (или перепрошивкой). Распространенные причины изменения прошивки включают исправление ошибок и добавление новых функций.

История и этимология

Ашер Оплер использовал термин "прошивка" в статье Datamation 1967 года как промежуточный термин между "аппаратным обеспечением" и "программным обеспечением". В этой статье Оплер говорил о новом типе компьютерной программы, которая, с точки зрения пользователя, имела иное практическое и психологическое назначение, чем традиционные программы. По мере роста сложности компьютеров стало очевидно, что для обеспечения согласованной среды, необходимой для запуска более сложных программ по усмотрению пользователя, сначала требуется запустить и выполнить различные программы. Это требовало программирования компьютера для автоматического запуска этих программ. Более того, поскольку компании, университеты и маркетологи стремились продавать компьютеры людям без специальных технических знаний, потребовалась большая автоматизация, чтобы позволить обычному пользователю легко запускать программы для практических целей. Это привело к появлению программного обеспечения, которое пользователь не запускает сознательно, и даже не знает о его существовании. Изначально под прошивкой понималось содержимое перезаписываемого хранилища управления (небольшой специализированной высокоскоростной памяти), содержащего микрокод, который определял и реализовывал набор команд компьютера, и который можно было перезагрузить для специализации или изменения команд, выполняемых центральным процессором (ЦП). Изначально прошивка противопоставлялась аппаратному обеспечению (сам ЦП) и программному обеспечению (обычные инструкции, выполняемые на ЦП). Она не состояла из машинных инструкций ЦП, а из микрокода более низкого уровня, участвующего в реализации машинных инструкций. Она существовала на границе между аппаратным и программным обеспечением, отсюда и название "прошивка". Со временем термин "прошивка" стал применяться к любой компьютерной программе, тесно связанной с аппаратным обеспечением, включая BIOS на ПК, загрузочную прошивку на смартфонах, компьютерные периферийные устройства или системы управления на простых потребительских электронных устройствах, таких как микроволновые печи и пульты дистанционного управления.

Продукты для домашнего и личного пользования

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

Автомобили

С 1996 года в большинстве автомобилей используется бортовой компьютер и различные датчики для выявления механических неисправностей. Начиная с 2010 года, в современных транспортных средствах также применяются компьютерные антиблокировочные системы тормозов (ABS) и компьютерные блоки управления трансмиссией (TCU). Водитель может получать информацию на приборной панели непосредственно во время движения, например, данные о мгновенном расходе топлива и давлении в шинах. Местные дилеры могут обновлять прошивку большинства автомобилей.

Мигающий

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

Взлом прошивки

Иногда сторонние разработчики создают неофициальную новую или модифицированную ("aftermarket") версию прошивки для добавления новых функций или разблокировки скрытого функционала; это называется кастомной прошивкой. Примером является Rockbox, заменяющая прошивку портативных медиаплееров. Существует множество любительских проектов для различных устройств, которые часто позволяют превратить ранее ограниченные устройства в полноценные вычислительные системы (например, запустить Doom на iPod). Взломы прошивки обычно используют механизм обновления прошивки на многих устройствах для установки или запуска. Однако некоторые требуют использования эксплойтов, поскольку производитель пытался заблокировать аппаратное обеспечение, чтобы предотвратить запуск нелицензионного кода. Большинство взломов прошивки распространяются как свободное программное обеспечение.

Хакерские атаки на твердотельные диски

Московская лаборатория «Касперский» обнаружила, что группа разработчиков, которую она называет «Группой уравнений», разработала модификации прошивки жестких дисков для различных моделей, содержащие троянскую программу, позволяющую сохранять данные на диске в областях, которые не удаляются даже при форматировании или очистке диска. Хотя в отчете «Лаборатории Касперского» прямо не утверждалось, что эта группа связана с Агентством национальной безопасности США (NSA), анализ кода различных программных средств «Группы уравнений» указывает на их принадлежность к NSA. Исследователи «Лаборатории Касперского» назвали действия «Группы уравнений» самой сложной хакерской операцией, когда-либо выявленной, и задокументировали около 500 заражений, вызванных этой группой, как минимум в 42 странах.

Риски для безопасности

Марк Шаттлворт, основатель компании Canonical, создавшей дистрибутив Ubuntu Linux, назвал проприетарную прошивку риском для безопасности, заявив, что "прошивка на вашем устройстве – лучший друг АНБ" и назвав её "троянским конем колоссальных масштабов". Он подчеркнул, что некачественная, закрытая прошивка представляет собой серьезную угрозу безопасности системы: "Ваша главная ошибка – полагать, что АНБ – единственная организация, злоупотребляющая этим доверием. На самом деле, разумно предположить, что вся прошивка – это рассадник уязвимостей, вызванный крайней некомпетентностью производителей и высочайшим уровнем квалификации широкого круга спецслужб". В качестве возможного решения он предложил использовать декларативную прошивку, которая описывала бы "аппаратные связи и зависимости" и "не должна содержать исполняемый код". Прошивка должна быть с открытым исходным кодом, чтобы код можно было проверять и верифицировать. Взломы прошивки также часто используются для внедрения вредоносного ПО в устройства, такие как смартфоны или USB-устройства. Один из таких взломов смартфона был продемонстрирован на ОС Symbian на конференции MalCon. На конференции Black Hat USA 2014 был представлен взлом прошивки USB-устройства под названием BadUSB, демонстрирующий, как микроконтроллер USB-накопителя можно перепрограммировать для эмуляции различных типов устройств, чтобы получить контроль над компьютером, похитить данные или шпионить за пользователем. Другие исследователи в области безопасности продолжили изучать возможности эксплуатации принципов, лежащих в основе BadUSB, одновременно опубликовав исходный код инструментов для взлома, которые можно использовать для изменения поведения различных USB-устройств.