Однакож...

Dec 05, 2013 17:55

Чё это все ломают копья про закладки, дыры и т.д. в IOS, Android, Win, etc ...

Тут вон оно чё, Михалыч...

http://www.ixbt.com/editorial/inoblogger/the-second-os-in-mobile.shtml
И никакая кастомная прошивка, антивирус и прочее не спасёт...

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

в старых квалкоммах (MSM7200A) загрузка начиналась с BP, на котором та самая AMSS. При этом у него общая оперативная память с AP, а если AP залезает в «запрещенную» область - ребут обоих процессоров. Ну и на все девайсы бит, определяющий владельца - AP или BP. Всё, конечно же, во власти модема (BP), а обычный процессор управляет всем через RPC запросы к BP. Самый прикол был в том, что на MSM720xA AP (процессор, где линукс и юзер-враг) имел доступ на запись к регистрам, управляющим доступом в RAM и NAND, и мог на ура заовнить всю эту «систему безопасности» и записать в NAND похаканный бутлодер. Я до сих пор не знаю, был ли это злой умысел (бекдор) или тупость, но судя по исходникам AMSS, там просто бардак и наслоения легаси (генерация кода по таблицам регистров и файлы с 10 вложенными ifdef'ами), и могли просто и не заметить.

Впрочем, когда со всей этой херней их погнали ссаными тряпками из ванильного ядра и стали поливать грязью в блогах, ситуация слегка улучшилась, и сейчас, в новых SoC, большая часть периферии под контролем AP, а модем можно даже не загружать. Хотя, наверное, всё дело в том, что появились TrustZone и IOMMU.

Сейчас, на TI OMAP4, Samsung Exynos, Nvidia Tegra - всё очень серьезно. Загрузка начинается с кода в OTP (одноразово программируемая память внутри процессора), который инициализирует eMMC/USB и принимает подписанный загрузчик. Это всё называется модным словосочетанием chain of trust (хотя я бы назвал это distrust). Но, дырки есть везде. В Google Galaxy Nexus, например, этот загрузчик не проверял подпись кода, который грузил. Есть ссылки на то, как ломали код в TrustZone на мотороле.

В рамках проектов OpenMoko и Replicant мы подготовили список телефонов с уровнем «свободности». Моя позиция тут такова - проприетарные фирмвари в виде блобов, которые грузит линукс не хуже (а даже лучше), чем девайсы, которым не нужна фирмварь. Если она не нужна - значит, лежит в EEPROM, и хрен вы её поизучаете. Ну и если девайс не может делать DMA в память (он хотя бы отгорожен IOMMU, а лучше - подключен по шине типа USB, I2C, HSIC) - то меня несвободность прошивки не волнует.

http://redmine.replicant.us/projects/replicant/wiki/TargetsEvaluation

кому интересно - в X86 тоже есть аналогичные решения. Например, режим работы процессора SMM, у которого привилегии выше, чем у гипервизора для VT-X. При этом есть SMM Monitor, и возможность сделать кастомную реализацию (если вы пишете BIOS для платы).

заметки на полях, admin notes

Previous post Next post
Up