Новогодние подарки, часть третья: хорошо ли мы себя вели

    Часть первая: Meltdown
    Часть вторая: Spectre

    Одним из самых интересных вопросов, возникших в дискуссиях об аппаратных уязвимостях Meltdown и Spectre (см. ссылки выше) был вопрос о том, сделал ли нам Дед Мороз этот подарок в связи с тем, что в 2017 году мы вели себя плохо — или, наоборот, хорошо.



    Попробую обосновать тезис о том, что мы вели себя хорошо, иначе Дед Мороз сделал бы нам этот подарок года через три-четыре.

    Итак, что мы имеем? Аппаратная уязвимость Meltdown, позволяющая любому непривилегированному процессу читать память ядра ОС, а также любых работающих в этой ОС процессов, включая сертификаты, пароли, биткоин-кошельки и всё, что придёт вам в голову обрабатывать на компьютере.

    Применение уязвимости не оставляет следов, а реализующий её код в общем случае не детектируется антивирусами.

    Единственным способом защиты является срочная доработка ядра ОС с целью разделения виртуальных адресных пространств процесса и ОС. В Linux соответствующий патч называется KPTI, он оставляет в виртуальном адресном пространстве процесса только небольшой кусочек ядра — функции-трамплины, перебрасывающие при обращении к ним на соответствующие функции ядра, которое теперь живёт в другом адресном пространстве. Благодаря этому патч также получил название Forcefully Unmap Complete Kernel With Interrupt Trampolines, или FUCKWIT.

    Meltdown достоверно подвержены:

    • Практически все процессоры Intel
    • Неназываемое число процессоров Apple на ядре ARM
    • Процессоры на ядре ARM Cortex-A75

    Особенный интерес в наших взаимоотношениях с Дедом Морозом представляет последний пункт — Cortex-A75.

    Если не считать творчества Apple, живущего исключительно в контролируемых Apple устройствах, другие процессоры на ядрах ARM могут быть подвержены трудно эксплуатируемой уязвимости Spectre, по факту представляющей сейчас опасность только для браузеров с выполнением JS, или похожей на Meltdown, но очень сильно ограниченной уязвимости, известной из документов ARM под названием «Variant 3a» и не позволяющей читать содержимое ОЗУ.



    На Cortex-A75 же в настоящий момент представлены всего два процессора, на которых представлены ровно ноль устройств:

    • Qualcomm Snapdragon 845
    • Samsung Exynos 9810

    Про 845-й производитель прямо заявляет об использовании Cortex-A75, про 9810 достоверной информации нет, однако этот процессор имеет ряд эксклюзивных для A75 особенностей, а также будет прямо противопоставляться Snapdragon 845 в Galaxy S9.

    Вероятно, в ближайшее время можно ожидать аналогичных моделей разработки Mediatek и HiSilicon.

    Устройства на обоих процессорах будут показаны в конце февраля на MWC-2018 и вокруг неё — это, разумеется, Galaxy S9, а также флагманские модели других производителей.

    Что это означает? Очень простую вещь: в течение 2018 года в живой природе появятся несколько десятков миллионов Android-смартфонов и планшетов, подверженных атаке Meltdown. В течение 2019 года это число легко может перевалить за сто миллионов.

    Хотя при этом устройства среднего и нижнего сегмента останутся неуязвимыми — их процессоры выгоднее собирать из дешёвых ядер класса Cortex-A5x, не добавляя в них большие и дорогие Cortex-A7x — рынок дорогих и уязвимых смартфонов будет представлять серьёзный интерес для хакеров.

    Но ведь, казалось бы, простое обновление линуксового ядра?..

    Мы со своими десктопами и серверами немного избалованы возможностью обновления ядра. Даже для сверхконсервативной CentOS есть три уже готовые линейки ядер — базовое, longterm и mainline, что уж говорить про десктопные дистрибутивы. Захотели — накатили. Сначала рюмку коньяка, потом ядро, ну или наоборот, это у кого сколько смелости есть.

    А теперь посмотрим на реалии мира смартфонов:
    Модель Ядро
    Galaxy S6 3.10.61
    Galaxy S7 3.18.14
    Galaxy S8 4.4.13
    Galaxy Note 8 4.4.13
    Galaxy A5 2017 3.18.14
    Sony XZ Premium 4.4.78
    Xiaomi Mi A1 3.18.66
    Xiaomi Mi 6 4.4.21
    Xiaomi Mi 5 3.18.31
    Redmi Note 4 (Snapdragon) 3.18.31
    Redmi Note 4 (MTK) 3.18.22
    Meizu MX6 3.18.22
    HTC U11+ 4.4.78
    Huawei Honor 9 4.1.18
    Huawei P10 4.1.18
    Huawei Mate 10 Pro 4.4.23
    Nexus 6P 3.10.73

    Хороший зоопарк, правда?

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

    Версия ядра обусловлена как поддержкой его со стороны производителя чипсета (обратите внимание, что у Meizu на MTK Helio X20 и Xiaomi Redmi Note 4 на нём же ядро одно, а вот у Redmi Note 4 на Snapdragon 625 — другое), так и собственными наработками производителя смартфона.

    Это означает, что наличие, например, патча KPTI в ядре 4.4.110 не означает, что производители могут быстренько выпустить обновление Android для своих смартфонов, которое принесёт всем их пользователям 4.4.110 с включённым KPTI. Нет, им надо будет развлекаться бэк-портированием соответствующего патча на то ядро, которое реально используется в их моделях, с последующим тестированием работоспособности и стабильности.

    Смартфоны в этом похожи на серверные дистрибутивы линукса типа CentOS — только для них ещё и стороннего репозитария с kernel-lt и kernel-ml не существует.

    На данный момент, однако, мы имеем всего два подверженных Meltdown ARM-процессора, не считая продукции Apple, которые ближайшие полгода будут применяться в ограниченном количестве моделей смартфонов, а прошивки этих смартфонов будут основаны на одном из более-менее свежих ядер серии 4.4, в которой патч KPTI есть хотя бы теоретически.

    Теперь представьте, что было бы, если бы Meltdown был обнаружен не сейчас, а спустя два-три года. Сотни миллионов устройств (и уже не только смартфонов и планшетов), использующих десятки вариантов ядер из серий 4.4 и 4.9, каждое со своим набором патчей, основная разработка Linux при этом идёт где-то там в районе ядер 4.20…

    Представили?

    Спасибо, дедушка Мороз, что дал нам Meltdown до того, как им успели заразить всю мобильную индустрию.

    Обещаем в 2018 году тоже вести себя хорошо.

    P.S. Всё это совершенно не означает, что производители смартфонов действительно выпустят первые модели на Cortex-A75 с включённым KPTI.
    Поделиться публикацией
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 52
    • +1
      Может, теперь разработчики мобильных ОС таки придут идее обновления компонентов ОС вместо полной смены прошивки? Вообще-то на настоящий момент сменить ядро возможно, но необходимы пляски с custom recovery, кустарными сборками, и т.д.
      • 0
        Если правильно понимаю, то Android 8 есть фича Project TREBLE, но как обычно, есть особенности.
        • 0
          Но поддержку этой технологии могут не запилить разработчики.
          • 0
            Если хотят пройти Google CTS на устройстве, выпускаемом изначально с Android 8 — запилят.
          • +2
            Project Treble про другое — как раз чтобы максимально отвязать высокоуровневые обновления от низкоуровневых (ядра, драйверов).

            Так что особо ничего не изменится. Просто представьте, что вот оказалось бы, что Meltdown в ARM с нами уже три года, полноценная защита требует патча на ядро, посмотрите на табличку — и прикиньте, сколько времени производителям чипсетов и смартфонов потребуется на патченье, проверку и обновление всего зоопарка от 3.10.61 до 4.4.78.
            • +1
              Насколько я понимаю (но могу ошибаться, конечно), project TREBLE как раз в данном случае не поможет. Он (вроде бы) позволяет обновлять юзерспейсную часть андроида (не вполне уверен, насколько глубоко, мб вплоть до Дальвика), оставляя в покое железоспецифичные куски кода. Проблема в том, что как раз ядро железоспецифичнее некуда.
              • –2
                Собрать новое, «неуязвимое» Linux ядро со старым конфигом железа — дело на пару часов, в отличие от адаптации новой версии андроида, к примеру.
                • 0
                  Это если у вас есть сырцы всех драйверов и они готовы с новой моделью памяти работать.
                  • +4
                    И QA-отдел, согласный без пары-тройки месяцев тестирования подписаться под тем, что новое чудо-ядро при раскатывании на пятнадцать миллионов смартфонов не превратит половину из них в кирпичи.
                    • +3

                      Ох, если бы ко мне (к QA) с таким пришли я бы наверное несколько минут сначала молча рассматривал бы этого человека перед тем как начать объяснять куда он может с такими предложениями пойти.

                    • 0
                      Кагбэ у производителей эти сырцы таки есть. И допилить их — ни разу не проблема.
                      • 0
                        Грубое упрощение. Часто производитель выдаёт блоб под указанную версию, или имеет патчи только на указанную версию, и портировать их под другую версию — гигантский труд (в отсутствие спеков на железо).

                        Андроидная экосистема с драйверами ужасающа.
              • +2
                Отдельная тема — что в ядрах для смартфонов идут драйвера на смартфоновскую периферию. И они зачастую проприетарные и только под определенную версию ядра
              • +1
                надо наоборот — кроме зоопарка мобильных ОС иметь еще и зоопарк мобильных процессоров.
                А то нашел одну-две уязвимости в железе — и привет. А надо чтобы на каждом проце их приходилось заново искать.
                • +1
                  Принципы работы разве не будут тот же? Если нет, то это отдельная компиляция на каждую архитектуру, отдельные тесты, оптимизации…
                  • +2
                    Ха.

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

                    Вот за что я благодарен компании Mediatek, например, так это за то, что они данный зоопарк хоть как-то причесали под одну гребёнку. При том, что я вряд ли рискну взять себе смартфон на MTK.
                    • +1
                      Да и сейчас Galaxy S7 и Galaxy S8 представлены в двух вариантах — на Snapdragon и на Exynos.
                  • +1
                    А когда Интел планирует наладить выпуск процессоров с закрытой уязвимостью?
                    • +3
                      Сомневаюсь, что скоро. Даже если отбросить техническую сторону вопроса — на складах полно готовых уязвимых процессоров. Кроме того, подозреваю, что они вполне могли успеть наклепать еще не вышедших моделей. Мне, если честно, даже интересно, как они собираются выкручиваться и выводить на рынок исправленную модель. Как только появится информация о готовящемся выпуске процессора, не подверженного данным проблемам, все остальные процессоры резко потеряют свою привлекательность.
                      • +1
                        «Исправленные» процессоры будут выпускать в продажу точно так же, как выпускают любые новые линейки — первыми выйдут топовые Xeon и Core i7 за безумное бабло, через несколько месяцев выпустят средний уровень, а всяким пентиумам и целеронам замены ядра года два ждать придётся.
                      • +3
                        По слухам, пока что их гендир планирует нечто другое, пакуя чемоданы налички)
                        • +7
                          По слухам, акции Интела прямо сейчас стоят на 70 центов за штуку дороже, чем гендир их продал.
                          • 0
                            Ну так и трейдеры пока ещё не все из под столов повылазили. Где-нибудь к середине февраля, всё будет более понятно. Дальнейший вектор движения, например.
                            • +6
                              К середине февраля никто уже не вспомнит, чего там вообще было-то.

                              Акции интела бурно росли с сентября по ноябрь, каких-то особо долгосрочных причин для такого роста видно не было — говоря проще, отличный момент, чтобы фиксировать прибыль. Что Кржанич и сделал.

                              Если б он хотел на Meltdown заработать, он бы на все свои акций AMD прикупил бы, они на 20 % почти поднялись.
                              • –1
                                Как знать, может и прикупил. Или биткоины, лол. Не даром тут движуха какая-то была по поводу совместной деятельности синих с красными. Этот год был буквально золотым для производителей железа в застоявшейся нише десктопной комплектухи. Тут и рязанское воскрешение АМД, и взрывной майнинг, и улетающая как горячие пирожки на вокзальном перроне 10ХХ серия Зелёного от зависти Хуанга. И такой себе шикарный финальный аккорд всего этого, который вы и описали. А вообще, НГ- момент для слива инфы подходящий, минимальный шок у праздной общественности, минимальная шумиха в прессе и нет кипиша на отдыхающей бирже и, как вы и написали, может быть широкие массы благополучно всё забудут, как и петю с ваннакриптом.
                                • 0
                                  Ну купить акции AMD это уже слишком палевно, будет много неприятных вопросов, если вскроется.
                                  А просто продать — всегда можно морду кирпичом сделать «ну просто продал, такое вот совпадение».
                                • 0
                                  Российские трейдеры конечно оказывают самое сильное влияние на курс акций Intel, да. А в США и большинстве других стран новогодние праздники кончились числа второго.
                              • +1
                                да обсосали уже эту наличку миллион раз
                                банальная налоговая оптимизация, не надо никакой конспирологии
                            • 0
                              а та кучка ядер от arm, которых в таблице нет — не подвержена уязвимостям?
                              а та кучка ядер НЕ от arm, которых в таблице нет — что с ними?
                              а armv8-ядра одинаково себя ведут в aarch32 и aarch64 «режимах»?

                              Exynos 8910

                              а может 9810? и там mongoose3 в качестве big
                              Про 845-й производитель прямо заявляет об использовании Cortex-A75

                              а тут Kryo 385 Gold и Silver, про которые косвенным путем установлено, что они являются сильно-модифицированными а75 и а55
                              • 0
                                а та кучка ядер от arm, которых в таблице нет — не подвержена уязвимостям?


                                Не подвержена, это ядра без спекулятивного выполнения инструкций.

                                а та кучка ядер НЕ от arm, которых в таблице нет — что с ними?


                                Судя по всему, никто, кроме Apple, не занимался глубокой модернизацией ядер, поэтому для Qualcomm/Samsung/HiSilicon можно смотреть на Кортексы, из которых они выросли.

                                а может 9810? и там mongoose3 в качестве big


                                Да, 9810 на Mongoose M3, который по фичам удивительным образом похож на Cortex-A75.

                                а тут Kryo 385 Gold и Silver, про которые косвенным путем установлено, что они являются сильно-модифицированными а75 и а55


                                Kryo385 — это и есть Snapdragon 845. Там никто изначально и не пытался скрывать, что он на базе A75 сделан.
                              • +8
                                Похоже именно поэтому мы и не видим во вселенной сверхцивилизаций — их всех погребло под развалинами собственной ИТ-инфраструктуры.
                                • –1
                                  В связи со всем вышеизложенным у меня есть более приближенный к реальности вопрос. Извините, если оффтоп, но вроде по теме.
                                  Присматриваюсь к Sony Xperia XZ1 Compact, процессор Snapdragon 835, вроде как там модифицированный Cortex-A73. Целесообразно ли брать сейчас, или лучше подождать патча? Ожидается ли патч и насколько прогнозируется снижение производительности? И, может кто в курсе, часто ли после таких событий как MWC2018 падает цена на девайсы прошлого года, стоит ли ждать марта?
                                  • 0
                                    A73 не подвержен наиболее критичным уязвимостям.
                                    • 0
                                      Тут как посмотреть. Он подвержен самым массовым. Думаю эксплоиты будут в первую очередь для этого писать.
                                  • –1
                                    несколько десятков миллионов Android-смартфонов и планшетов, подверженных атаке Meltdown


                                    Я так понимаю — владельцы Microsoft Lumia 950 (Cortex-A57/-A53) могут спать спокойно?
                                    • 0
                                      Владельцы всех уже выпущенных смартфонов могут спать достаточно спокойно, а смартфонов на отсутствующих в табличке процессорах — вдвойне.
                                    • 0
                                      Для мобильных платформ на андроиде можно наконец запретить нативные программы, а JIT байткода обновить, что бы он не позволял эксплуатировать эти уязвимости.
                                      • +2
                                        JIT байткода обновить, что бы он не позволял эксплуатировать эти уязвимости

                                        Это ударит по производительности сильнее выноса памяти ядра из адресного пространства программ.
                                        • 0
                                          А какой процент существующих приложений использует нативный код, и что с ними делать после этого обновления? Ну т.е. объявить их все попросту несовместимыми с новой версией Андроида — ход мощный, но спорный.

                                          В ART-то, насколько я понимаю, доступные приложению таймеры уже загрубили в последнем security update.
                                          • +1
                                            А вот я предлагаю запретить байткод, потому что он жрёт мой аккумулятор и тормозит.
                                            Вы в курсе что 95% 3D игр под ведро имеют нативные движки?
                                            Примеров полно.
                                            И никто не будет заставлять программистов с десятков других языков писать под ведро исключительно на Java.
                                          • 0

                                            А Asus ze551ml на intel atom z3580 подвержен всем уязвимостям, я правильно понимаю?

                                          • 0
                                            Единственным способом защиты является срочная доработка ядра ОС


                                            Цитата:
                                            "… компания Intel сообщила о существенном прогрессе, которого ей удалось достичь вместе с разработчиками ОС и ПО, в исправлении ситуации.
                                            Intel заявляет, что к настоящему времени выпустила обновления прошивки для большинства процессоров, вышедших за последние пять лет. Говоря точнее, к концу этой недели процессорный гигант обещает «пропатчить» более 90% процессоров, выпущенных за последние пять лет.

                                            Intel теперь утверждает, что выпущенные ею заплатки якобы обеспечивают полный «иммунитет» от обеих уязвимостей (Meltdown и Spectre). Это при том, что ранее специалисты безопасности в один голос заявляли, что уязвимость Spectre, как подсказывает само ее название, очень сложна в исполнении и ее очень трудно устранить полностью одними только патчами"
                                            • +4
                                              Это та же Intel, предыдущий пресс-релиз которой сводился к тезису «а чего вы все к нам пристали, у всех эти уязвимости есть!»?
                                              • 0
                                                «а чего вы все к нам пристали, у всех эти уязвимости есть!»


                                                Таки пристали:
                                                «В технологии Intel Active Management Technology обнаружена уязвимость»
                                            • –2
                                              никто не покупает процессоры с +5% быстродействием на поколение… а давайте мы все выпущенные процессоры сделаем не просто устаревшими но ещё и опасными.а через месяца два выкатиим новую линейку уже безопасных… профит от интела)
                                              • 0
                                                сделаем не просто устаревшими но ещё и опасными


                                                Если смотреть с такой точки зрения — то тогда там другой смысл:

                                                «узаконим нулевое повышение производительности для новых поколений процессоров при регулярном повышении уровня их безопасности» — этот процесс может быть бесконечным.
                                              • +1
                                                Может хоть процессоры подешевеют…
                                              • 0
                                                • 0
                                                  имея обычный kryo, стоит переживать?
                                                  • +1
                                                    xkcd.com/1938
                                                    image

                                                    Примерный перевод:
                                                    — Уязвимости Meltdown и Spectre используют упреждающее выполнение команд. Что это?
                                                    — Знаешь проблему вагонетки? Уже некоторое время процессоры отправляют вагонетку по обеим путям, в стиле квантовых операций, пока ждут нашего выбора. Затем ненужная «фантомная» вагонетка исчезает.
                                                    Фантомная вагонетка не должна задевать никого, но оказывается что её всё-таки можно использовать. И она может проезжать сквозь стены.
                                                    — Звучит нехорошо.
                                                    — Честно говоря, я думаю мы давно обречены, с тех пор как узнала про Rowhammer.
                                                    — Что это?
                                                    — Если быстро переключать туда-сюда биты в строке памяти, можно использовать паразитные наводки для переключения соседних битов и…
                                                    — Мы просто не умеем работать с компьютерами?
                                                    — Ага, особенно общего пользования.
                                                    — Так ты говоришь, облако полно фантомных тележек, вооружённых молотками.
                                                    — …Да. Именно так.
                                                    — Хорошо. Я, эээ… пойду установлю обновления?
                                                    — Хорошая идея.

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