Как стать автором
Обновить

Защита ядра Linux из ARM Trustzone: как усилить Linux Kernel Runtime Guard и предотвращать последствия zero-day

Открытая мобильная платформаИнформационная безопасностьOpen sourceСистемное администрированиеСистемное программирование
Всего голосов 11: ↑11 и ↓0 +11
Просмотры3.5K
Комментарии 24

Комментарии 24

Я бы вам посоветовал посмотреть не нарушаете ли вы чьи-то патенты на TEE, я точно знаю что Samsung регистрировал много на эту тематику (самому довелось поучаствовать)
Да, спасибо! Мы стараемся внимательно следить за патентной чистотой.
Код Samsung Teegris закрыт, а по функционалу все Trustzone OS ± одинаковы. В статье в целом идёт речь о подходе к адаптации конкретного Open-Source решения с использованием стандартных механизмов, которые предоставляет ARM TrustZone.

QSEE не упомянута в статье. Ее интересной фишкой является поддержка сторонних реализаций TrustZone. Чем активно пользуется Самсунг в своих Qualcomm телефонах.

Действительно, реализаций TEE существует достаточно много, перечислять их все наверное нет особого смысла, так как статья в целом не обзорная по реализациям. Насчёт QSEE могу сказать, что по моим сведениям сейчас Qualcomm препятствует запуску сторонних реализаций на своих типах, позволяя разрабатывать только TA под QSEE. Third-party разработчикам от этого легче не становится, так как TA подписываются вендором смартфона, и сторонние TA вряд ли могут на это рассчитывать.


P.S. если есть информация про запуск именно сторонних реализаций самой TrustZone OS на современных чипах Qualcomm — буду рад если поделитесь ссылкой.

>> перечислять их все наверное нет особого смысла
Странно что была упомянута Google Trusty, стоящая на горстке Хромобуков. А массовая QSEE, наверное даже самая массовая, учитывая телефоны Samsung на Qcom и устройства Qcom Iot — оказалась пропущенной.

>> сторонние TA вряд ли могут на это рассчитывать.
все вендоры SoC ограничивают доступ Secure World. А Qualcomm вообще наглухо закрыла даже возможность модификации SecureWorld (я сейчас про ОС и загрузку, не про ТА) всем, кроме себя. Даже производителям телефонов нельзя.
ТА поставляют небольшое количество производителей, и влезть в их список почти невозможно.

>> если есть информация про запуск

Сводим вместе:
— Qualcomm dualsigning (sdm835+) недвусмысленно говорит о том, что никакая другая TEE запущена быть не может.
— упоминание Trustonic в утёкших BSP. Вспоминаем что за TEE использовал самсунг до TeeGRIS.
— Прикидываем, сколько бы стоила Самсунгу поддержка их самодеяетельности (я про Knox/RKP) для двух разных TEE
— Думаем, почему Exynos не продаётся в US, не забываем про лицензии, CDMA, и в какой стране находится Qualcomm. Кто мог бы взвалить на себя реализацию и поддержку вложенной TEE, учитывая пред. пункты.
— Смотрим что за файлы лежат в прошивке самсунг для Qualcomm.
Поскольку связан NDA с предыдущим работодателем, не могу прокомментировать по существу. Но если говорить в целом, то по этим причинам мы развиваем независимую от silicon-вендоров реализацию TEE OS.
Посмотрите, сколько лет заняло вылизывание кода у остальных вендоров. Как играючи ломали QSEE вплоть до последнего публичного эксплоита в 2015 (из HLOS), и перехода на sdm платформу в 2017 (из ABL). (Про приватные можно только догадываться, печально листая страницы на chipcode, если вы понимаете о чём я)

Я бы поспорил, что добавление защитных механизмов для ядра — это хорошая идея. Лучше упростите бекпортинг из mainline, и держите ядро всегда свежим. Гугл вот пришёл постепенно к этому мнению с их GKI.

Даже с ресурсами Samsung их RKP-поделие все эти годы успешно ломают (я лично обходил все ограничения на S8, позже другие товарищи обошли на S10/S20).

Кроме того, любой лишний код — это дополнительная поверхность атаки. Что наглядно продемонстрировали p0 в публикации «Mitigations are attack surface, too».

И никакие TEE не помогут вам с BootROM эксплоитами. Только вот железо вы не делаете, и на неуязвимый чип перейти не сможете.

PS: глянул я список телефонов. Беда-пичаль.

TEE — это не серебряная пуля. Только комплекс мер будет уменьшать риски, описанных вами угроз, в том числe аппаратно-программный secureboot.
Мы готовы поддержать доверенное железо партнёров, например работаем с отечественными silicon вендорами.

кстати, о secureboot.
1) sailfish телефоны вычеркнуты из Авроры потому что у вас нет вендорских ключей? (а, стало быть, секуребут не включить) Например обе Xperia — самое интересное по железу, что у вас было.

2) Те, оба-два телефона, что доступны к покупке — вы получаете от китайских ODM с непрожжёными фьюзами? Или же они уже всё прожгли, и поделились с вами приватным ключом? (это очень важное различие!)

Ну, во-первых, Sailfish и Аврора как дистрибутивы различаются, и все дальше расходятся. Во-вторых, наши заказчики не готовы покупать дорогие телефоны Sony для персонала в поле (например, работник склада), во всяком случае пока более востребованы недорогие устройства с поддержкой. Некоторые модели производятся вообще в РФ и это не отверточная сборка — в СМИ были репортажи с линий, будет интересно, гляньте, около полугода назад. А по secureboot настолько большая тема, что лучше напишем статью на Хабр!

>> наши заказчики не готовы покупать дорогие телефоны Sony для персонала в поле

Смешно. Телефон на древнем msm8940 за 110 тысяч они покупать готовы, а Сони (которой сегодня тысяч 10 цена по железу) — дорого.

>> Некоторые модели производятся вообще в РФ и это не отверточная сборка

И они получаются дешевле китайских? (заказчики не готовы покупать дорогие). Не верю (ц)

>> СМИ были репортажи с линий, будет интересно, гляньте, около полугода назад.

где глянуть-то?

>> А по secureboot настолько большая тема, что лучше напишем статью на Хабр!

Меня не интересует статья. Достаточно коротких ответов да-да/нет-нет.
Кто-то готов, а кто-то нет, поэтому есть разные модели разных производителей/компаний с разной ценовой политикой. Мы производители ПО, а не железа.
Если вы когда-либо занимались secureboot, то должны понимать почему «да-да/нет-нет» тут не работает: у разных аппаратных платформ разная модель корня доверия. Поэтому мы лучше напишем статью, чтобы был контекст.
Господи. У вас всего лишь два телефона продаётся. Один на MTK, второй на Qualcomm. Корень доверия там одинаковый, OTP фьюзы + MaskROM PBL.

Судя по всему, доступа к фьюзам вы не имеете. Поэтому и уклоняетесь с ответом.
>> Мы готовы поддержать доверенное железо партнёров

Каких, например?
И как быть с Qualcomm и double-sign. Вам, по-факту, недоступны процессоры, архитектурно свежее 2016 года.

>> например работаем с отечественными silicon вендорами.

Хорошая шутка.
Даже последний PinePhone получился изрядным *****. Хотя там используются буржуйские более-менее современные компоненты.
Поверьте, у нас в стране есть и разработчики SoC на ARM и даже разработчики ip-блоков, и даже разработчики архитектур (ISA). Все ли чипы являются мобильными -нет, используются ли спецификации/лицензированные блоки — да, льются ли они на зарубежных фабриках (кто-то и у нас). Кто-то могут сделать и спроектировать сами, где-то нужно покупать, чип памяти например.
В Pinephone используется long-term индастриал чип с 10-летним выпуском и этим он хорош
>> Поверьте, у нас в стране есть и разработчики SoC на ARM

охотно верю

>> Все ли чипы являются мобильными -нет

тоже верно, скорее даже никакие не являются

>> В Pinephone используется long-term индастриал чип с 10-летним выпуском

Вы о Qualcomm в модеме или о Allwinner для HLOS?
В любом случае, нашим «аналогам» до них — как раком до луны, особенно до Qualcomm.

>> и этим он хорош

Не надо рассказывать мне сказок. У меня PinePhone есть в наличии. Самая жирная модель с 3Gb. Стоковая прошивка октября 2020. Полное ###но. Практически по всем пунктам (лень расписывать каждый). Да, концептуально он хорош. Да, возможно софтово всё решаемо. И может быть ещё через 1-3-5-10 лет разработчики допилят прошивку. Но по-факту, здесь и сейчас, на выходе имеем кусок чего-то, а не телефон.

С другой стороны, это честный телефон. По честной цене (1/10 от ваших телефонов), честно разработанный самостоятельно (без гос. поддержки), честно открытый — без вендор-локов. И без вранья про супер-безопасность.
Почему на сайте sailfish последний дроп исходников был аж полтора года назад?
Выложена версия 3.1.0.11, от 22 окт 2019,
тогда как актуальная у sailfish/aurora сегодня 3.4.0, от 13 окт 2020

Почему сертифицированная аврора имеет версию 3.2.2 (отстаёт от основной почти на год), и такой версии нет среди версий sailfish?

Почему бюллетень безопасности всего один, за сентябро-октябрь 2020. Очень короткий. А баги, закрытые в нём, датируются аж 2008 и 2017 годами(!!!). (посмотрел всего две, очень удивился датам)

Как только скачать исходники, а не целиком весь SDK? Вообще хотелось бы иметь GIT доступ в реальном времени, по-типу AOSP.
Очень приятно, что есть такое внимание к нашей работе!
> Почему на сайте sailfish последний дроп исходников был аж полтора года назад?
Не знаю, это вопрос к другой компании

Sailfish и Аврора это разные дистрибутивы, у них есть общая история и есть некоторые общие компоненты опять же в силу истории, но релизные циклы разнятся, как и фичи/компоненты, как и процесс производства.
Именно поэтому, как вы верно заметили, есть Аврора 3.2.2. Актуальную информацию по релизам Авроры можно посмотреть на auroraos.ru. Мы будем развивать этот ресурс, и обновлять информацию, в том числе по CVE.
Далеко не все компоненты ОС Аврора являются открытыми. А вы хотели бы контрибьютить в компоненты? Что-то вложили в AOSP?
>> Мы будем развивать этот ресурс, и обновлять информацию, в том числе по CVE.

Но как так вышло, что сертификат безопасности ФСТЭК России №4220 вы получили 10.02.2020, а 13-летние баги стали исправлять спустя почти год?

>> Далеко не все компоненты ОС Аврора являются открытыми.

Всё что GPL и было публично выпущено — вы обязаны предоставить по запросу.
Кстати, пользуясь случаем, публично запрашиваю архивы исходников всех выпущенных Linux ядер для всех созданных устройств.
Опубликуйте, пожалуйста, ссылки для скачивания, в вашем ответе мне.

>> А вы хотели бы контрибьютить в компоненты?

Нет.

>> Что-то вложили в AOSP?

А вы?
> публично запрашиваю архивы исходников всех выпущенных Linux ядер для всех созданных устройств

Если я не ошибаюсь, то GPL требует предоставлять по запросу исходники только того и только тем, кто легально получил бинарники.

У меня есть и устройство, в полной комплектации. И все бинарники - я сделал полный EDL дамп.

С устройством, как я и предполагал, никакой копии не было приложено т- е.сотрудник ОМП тут рядом просто нагло врёт, (что и так было очевидно).

Где мне получить исходники ?

ЗЫ: уверен, или проигнорят, или начнут спекуляции насчёт законности приобретения. Купил за свои личные деньги. Ниоткуда не крал.

Смотрите, вы купили новую машину, получили на нее сертификат, тех паспорт итд, потом решили что не хватает спойлера, добавили спойлер, а оказалось что спойлер бракованный, и эта партия спойлеров уже 13 лет как бракованная, но он вам нужен, вы его починили и обновили тех. паспорт. Примерно так.
В AOSP лично я не котрибьютил, в Linux ядро контрибьютил, если вы лично про меня спрашивали.
Просто вы интересовались git, я думал вы разработчик и интересуетесь по существу.
Мне кажется вы упускаете важную деталь в GPL лицензии.
Ненавижу ложные аналогии.

>> потом решили что не хватает спойлера, добавили спойлер

Точно добавили? А то вдруг он всегда там был… Это же легко проверяется.

>> а оказалось что спойлер бракованный, и эта партия спойлеров уже 13 лет как бракованная,

Угу может оторваться и убить кого-нибудь.
И не только спойлер. Ещё и руль 4 года бракованный, и тормоза. И бог ещё весть что, если копнуть по-серъёзному.

>> но он вам нужен, вы его починили и обновили тех. паспорт.

Обновили? И какой теперь номер сертификата?

>> Просто вы интересовались git, я думал вы разработчик и интересуетесь по существу.

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

>> Мне кажется вы упускаете важную деталь в GPL лицензии.

Верно. Вы можете заявить, что к каждому телефону прикладываете полную копию всех GPL исходников (п3.а). Это проверить для меня невозможно, и придётся «джентльменам верить на слово».

В то же время другие производители не жонглируют пунктами лиценции, а просто открывают код превентивно (Google, Sony, Samsung, Xiaomi, Nokia etc.), или же по-запросу (п.3.b). Даже ZTE, даже к своему прототипу, который использовался только для внутреннего тестирорования и никогда не поступал в розничную продажу. После первого же обращения выложила код ядра на GitHub. Не спрашивая никаких доказательств, что этот прототип действительно есть на руках (впрочем он был, и не один).
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.