Рубрика «firmware»

C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it.

Linus Benedict Torvalds

Читать полностью »

— Слушайте, а какой пульс должен быть во время пробежки?
— Ну не знаю – ударов 150.
— Да? А чего у меня 840?
— 840 в минуту?!
— А что, надо было в минуту считать что ли?
— А ты как считал?
— Ну, просто считал, пока не сбился… Так, ладно, я пошел пересчитывать.
(х/ф «День выборов»)

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

Ни дня без спорта: перепрограммируем китайский пульсометр - 1

Читать полностью »

Недавно на GoTo Chicago я читала лекцию на эту тему и подумала, что будет неплохо написать статью с выводами. Этот пост посвящён тому, почему прошивки с открытым исходным кодом важны для безопасности.

Уровни привилегий

В типичном стеке у вас различные уровни привилегий.

  • Кольцо 3. Приложения: минимальное привилегий, за исключением песочницы в пользовательском пространстве, которая ещё больше ограничена.
  • Кольцо 0. Ядро: ядро операционной системы, в случае ОС с открытым исходным кодом вы видите его код.
  • Кольцо −1. Гипервизор: мониторинг виртуальных машин (VMM), создаёт и запускает виртуальные машины. В гипервизорах с открытым исходным кодом, таких как Xen, KVM, bhyve и другие, вы видите код.
  • Кольцо −2. Режим управления системой (SMM), ядро UEFI: проприетарный код, подробнее об этом ниже.
  • Кольцо −3. Движок управления: проприетарный код, подробнее об этом ниже.

Отрицательные кольца указывают на уровни с привилегиями больше, чем у нулевого.
Читать полностью »

Предыстория

JetBrains CLion для микроконтроллеров - 1

CLion — это среда для разработки на С/С++, близкий родственник IntelliJ IDEA и, соответственно, Android Studio.

Я представляю вниманию сообщества перевод моего блог поста, в котором по шагам описано, как использовать эту IDE для написания прошивок микроконтроллеров.

Читать полностью »

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

Flussonic Watcher это:

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

В состав Flussonic Watcher входит:

  1. видеостриминговое ядро — сервер Flussonic;
  2. веб-портал, предоставляющий доступ администраторам и пользователям к камерам и архивам видео без использования плагинов;
  3. мобильные приложения;
  4. агент на камеру для доступа к ней из-за NAT без проброса портов, мирайя и смс;
  5. система интеграции с внешними биллингами, серверами авторизации;
  6. набор готовых бизнес-процессов и тех-регламентов на подготовку и продажу камер для клиентского видеонаблюдения.

Зачем нужен Watcher?

Читать полностью »

Несколько дней назад мы писали о 0day Local Privilege Escalation (LPE) уязвимости в UEFI-прошивке ноутбуков Lenovo ThinkPad, которой было посвящено интересное исследование security-ресерчера под ником Cr4sh. Продемонстрированный вектор эксплуатации уязвимости позволяет отключить встроенную аппаратную защиту под названием SPI Protected Ranges, которая используется для защиты SPI flash-памяти чипа от записи данных. Сама уязвимость присутствует в одном из UEFI-драйверов прошивки под названием SystemSmmRuntimeRt и позволяет исполнить произвольный привилегированный SMM-код в системе.

Уязвимость ThinkPwn в прошивках компьютеров оказалась серьезнее чем представлялось ранее - 1

В свою очередь, Lenovo выпустила уведомление безопасности, в котором указала, что не занималась разработкой уязвимого драйвера, так как обращается за этим к производителям прошивок BIOS/UEFI, которые, в свою очередь, используют наработки Intel и AMD. После этого стало понятно, что спектр ноутбуков и компьютеров, уязвимых для ThinkPwn, не ограничивается компанией Lenovo. Хотя кроме Lenovo никто из производителей компьютеров и материнских плат не обмолвился об этой уязвимости, стало известно что ей подвержены ноутбуки Hewlett-Packard Pavilion, компьютеры с материнскими платами от GIGABYTE (Z68-UD3H, Z77X-UD5H, Z87MX-D3H, и др), ноутбуки Fujitsu LIFEBOOK, а также Dell.

Читать полностью »

Устройство NVRAM в UEFI-совместимых прошивках, часть четвертая - 1И снова здравствуйте, уважаемые читатели.
Начатый в предыдущих трех частях разговор о форматах хранилищ NVRAM, используемых различными реализациями UEFI, подходит к своему логическому концу. Нерассмотренным остался только один формат — NVAR, который используется в прошивках на основе кодовой базы AMI Aptio. Компания AMI в свое время смогла «оседлать» практически весь рынок прошивок для десктопных и серверных материнских плат, поэтому формат NVAR оказался чуть ли не распространённее, чем оригинальный и «стандартный» VSS.
Если вам интересно, чем хорош и чем плох формат хранилища NVRAM от AMI — добро пожаловать под кат.
Читать полностью »

Устройство NVRAM в UEFI-совместимых прошивках, часть третья - 1 Перед вами третья часть моего повествования о форматах NVRAM, используемых UEFI-совместимыми прошивками различных производителей. В первой части я рассказывал об NVRAM вообще и о «стандартном» формате VSS, во второй — об интересных блоках, которые можно найти рядом с NVRAM в этом формате, а в этой речь пойдет о целой россыпи различных форматов, используемых в прошивках на платформе Phoenix SCT: FlashMap, EVSA, Intel uCode, CMDB, SLIC pubkey и SLIC marker.
Если вам интересно, что умудрились напридумывать на замену VSS разработчики из Phoenix — добро пожаловать под кат, только предупреждаю сразу, статья получилась достаточно длинной.
Читать полностью »

Устройство NVRAM в UEFI-совместимых прошивках, часть вторая - 1 Продолжаем разговор о форматах NVRAM в UEFI-совместимых прошивках, начатый в первой части. На этот раз на повестке дня формат блоков Fsys из прошивок компании Apple, FTW из прошивок, следующих заветам проекта TianoCore и FDC, который можно найти в прошивках, основанных на кодовой базе компании Insyde.
Если вам интересно, зачем нужны и как выглядят не-NVRAM данные, которые можно обнаружить рядом с NVRAM в прошивках различных производителей — добро пожаловать под кат.
Читать полностью »

Устройство NVRAM в UEFI-совместимых прошивках, часть первая - 1 Здравствуйте, уважаемые читатели. Когда-то очень давно, почти 3 года назад, я написал пару статей о форматах данных, используемых в UEFI-совместимых прошивках. С тех пор в этих форматах мало что изменилось, поэтому писать про них снова я не буду. Тем не менее, в тех статьях был достаточно серьезный пробел — отсутствовали какие-либо упоминания об NVRAM и используемых для её хранения форматах, т.к. тогда разбор NVRAM мне был попросту неинтересен, ибо те же данные можно получить из UEFI Shell на работающей системе буквально одной командой dmpstore.
По прошествии трех лет выяснилось, что хранилище NVRAM умеет разваливаться по различным причинам, и чаще всего это событие приводит к «кирпичу», т.е. воспользоваться вышеупомянутой командой уже не получится, а данные (или то, что от них осталось) надо доставать. Собрав пару развалившихся NVRAM'ов вручную в Hex-редакторе, я сказал "хватит это терпеть!", добавил поддержку разбора форматов NVRAM в UEFITool NE, и решил написать цикл статей об этих форматах по горячим следам и свежей памяти.
В первой части поговорим о том, что вообще такое этот NVRAM, и рассмотрим формат VSS и его вариации. Если интересно — добро пожаловать под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js