Часть вторая: 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.
Комментарии (49)
vassabi
07.01.2018 13:16+1надо наоборот — кроме зоопарка мобильных ОС иметь еще и зоопарк мобильных процессоров.
А то нашел одну-две уязвимости в железе — и привет. А надо чтобы на каждом проце их приходилось заново искать.perfect_genius
07.01.2018 13:35+1Принципы работы разве не будут тот же? Если нет, то это отдельная компиляция на каждую архитектуру, отдельные тесты, оптимизации…
olartamonov Автор
07.01.2018 15:02+1Ха.
Вы не видели потрохов бюджетных моделей того же Самсунга несколько лет назад. Из двух моделей, отличающихся парой букв в коде, одна могла быть на Marvel, другая на Spreadtrum. Поддерживать это всё сразу было нереально, поэтому на обновления прошивок производитель забивал очень быстро.
Вот за что я благодарен компании Mediatek, например, так это за то, что они данный зоопарк хоть как-то причесали под одну гребёнку. При том, что я вряд ли рискну взять себе смартфон на MTK.Diman_94
08.01.2018 13:26+1Да и сейчас Galaxy S7 и Galaxy S8 представлены в двух вариантах — на Snapdragon и на Exynos.
Ravebinovich
07.01.2018 13:45+1А когда Интел планирует наладить выпуск процессоров с закрытой уязвимостью?
phantom-code
07.01.2018 14:00+3Сомневаюсь, что скоро. Даже если отбросить техническую сторону вопроса — на складах полно готовых уязвимых процессоров. Кроме того, подозреваю, что они вполне могли успеть наклепать еще не вышедших моделей. Мне, если честно, даже интересно, как они собираются выкручиваться и выводить на рынок исправленную модель. Как только появится информация о готовящемся выпуске процессора, не подверженного данным проблемам, все остальные процессоры резко потеряют свою привлекательность.
olartamonov Автор
07.01.2018 14:54+1«Исправленные» процессоры будут выпускать в продажу точно так же, как выпускают любые новые линейки — первыми выйдут топовые Xeon и Core i7 за безумное бабло, через несколько месяцев выпустят средний уровень, а всяким пентиумам и целеронам замены ядра года два ждать придётся.
vanxant
07.01.2018 14:01+3По слухам, пока что их гендир планирует нечто другое, пакуя чемоданы налички)
olartamonov Автор
07.01.2018 14:47+6По слухам, акции Интела прямо сейчас стоят на 70 центов за штуку дороже, чем гендир их продал.
ARD8S
07.01.2018 15:20Ну так и трейдеры пока ещё не все из под столов повылазили. Где-нибудь к середине февраля, всё будет более понятно. Дальнейший вектор движения, например.
olartamonov Автор
07.01.2018 15:23+5К середине февраля никто уже не вспомнит, чего там вообще было-то.
Акции интела бурно росли с сентября по ноябрь, каких-то особо долгосрочных причин для такого роста видно не было — говоря проще, отличный момент, чтобы фиксировать прибыль. Что Кржанич и сделал.
Если б он хотел на Meltdown заработать, он бы на все свои акций AMD прикупил бы, они на 20 % почти поднялись.ARD8S
07.01.2018 16:24-1Как знать, может и прикупил. Или биткоины, лол. Не даром тут движуха какая-то была по поводу совместной деятельности синих с красными. Этот год был буквально золотым для производителей железа в застоявшейся нише десктопной комплектухи. Тут и рязанское воскрешение АМД, и взрывной майнинг, и улетающая как горячие пирожки на вокзальном перроне 10ХХ серия Зелёного от зависти Хуанга. И такой себе шикарный финальный аккорд всего этого, который вы и описали. А вообще, НГ- момент для слива инфы подходящий, минимальный шок у праздной общественности, минимальная шумиха в прессе и нет кипиша на отдыхающей бирже и, как вы и написали, может быть широкие массы благополучно всё забудут, как и петю с ваннакриптом.
dom1n1k
07.01.2018 16:32Ну купить акции AMD это уже слишком палевно, будет много неприятных вопросов, если вскроется.
А просто продать — всегда можно морду кирпичом сделать «ну просто продал, такое вот совпадение».
Vilgelm
08.01.2018 11:24Российские трейдеры конечно оказывают самое сильное влияние на курс акций Intel, да. А в США и большинстве других стран новогодние праздники кончились числа второго.
Lennonenko
07.01.2018 19:06+1да обсосали уже эту наличку миллион раз
банальная налоговая оптимизация, не надо никакой конспирологии
en1gma
07.01.2018 14:22а та кучка ядер от arm, которых в таблице нет — не подвержена уязвимостям?
а та кучка ядер НЕ от arm, которых в таблице нет — что с ними?
а armv8-ядра одинаково себя ведут в aarch32 и aarch64 «режимах»?
Exynos 8910
а может 9810? и там mongoose3 в качестве big
Про 845-й производитель прямо заявляет об использовании Cortex-A75
а тут Kryo 385 Gold и Silver, про которые косвенным путем установлено, что они являются сильно-модифицированными а75 и а55olartamonov Автор
07.01.2018 14:51а та кучка ядер от arm, которых в таблице нет — не подвержена уязвимостям?
Не подвержена, это ядра без спекулятивного выполнения инструкций.
а та кучка ядер НЕ от arm, которых в таблице нет — что с ними?
Судя по всему, никто, кроме Apple, не занимался глубокой модернизацией ядер, поэтому для Qualcomm/Samsung/HiSilicon можно смотреть на Кортексы, из которых они выросли.
а может 9810? и там mongoose3 в качестве big
Да, 9810 на Mongoose M3, который по фичам удивительным образом похож на Cortex-A75.
а тут Kryo 385 Gold и Silver, про которые косвенным путем установлено, что они являются сильно-модифицированными а75 и а55
Kryo385 — это и есть Snapdragon 845. Там никто изначально и не пытался скрывать, что он на базе A75 сделан.
nerudo
07.01.2018 14:30+7Похоже именно поэтому мы и не видим во вселенной сверхцивилизаций — их всех погребло под развалинами собственной ИТ-инфраструктуры.
moraug
07.01.2018 14:51-1В связи со всем вышеизложенным у меня есть более приближенный к реальности вопрос. Извините, если оффтоп, но вроде по теме.
Присматриваюсь к Sony Xperia XZ1 Compact, процессор Snapdragon 835, вроде как там модифицированный Cortex-A73. Целесообразно ли брать сейчас, или лучше подождать патча? Ожидается ли патч и насколько прогнозируется снижение производительности? И, может кто в курсе, часто ли после таких событий как MWC2018 падает цена на девайсы прошлого года, стоит ли ждать марта?olartamonov Автор
07.01.2018 14:52A73 не подвержен наиболее критичным уязвимостям.
Alcpp
08.01.2018 02:39Тут как посмотреть. Он подвержен самым массовым. Думаю эксплоиты будут в первую очередь для этого писать.
Exchan-ge
07.01.2018 19:32-1несколько десятков миллионов Android-смартфонов и планшетов, подверженных атаке Meltdown
Я так понимаю — владельцы Microsoft Lumia 950 (Cortex-A57/-A53) могут спать спокойно?olartamonov Автор
07.01.2018 20:45Владельцы всех уже выпущенных смартфонов могут спать достаточно спокойно, а смартфонов на отсутствующих в табличке процессорах — вдвойне.
potan
07.01.2018 19:55Для мобильных платформ на андроиде можно наконец запретить нативные программы, а JIT байткода обновить, что бы он не позволял эксплуатировать эти уязвимости.
sumanai
07.01.2018 20:38+2JIT байткода обновить, что бы он не позволял эксплуатировать эти уязвимости
Это ударит по производительности сильнее выноса памяти ядра из адресного пространства программ.
olartamonov Автор
07.01.2018 20:49А какой процент существующих приложений использует нативный код, и что с ними делать после этого обновления? Ну т.е. объявить их все попросту несовместимыми с новой версией Андроида — ход мощный, но спорный.
В ART-то, насколько я понимаю, доступные приложению таймеры уже загрубили в последнем security update.
Temtaime
08.01.2018 13:48А вот я предлагаю запретить байткод, потому что он жрёт мой аккумулятор и тормозит.
Вы в курсе что 95% 3D игр под ведро имеют нативные движки?
Примеров полно.
И никто не будет заставлять программистов с десятков других языков писать под ведро исключительно на Java.
prvd
07.01.2018 20:45А Asus ze551ml на intel atom z3580 подвержен всем уязвимостям, я правильно понимаю?
Exchan-ge
07.01.2018 20:53Единственным способом защиты является срочная доработка ядра ОС
Цитата:
"… компания Intel сообщила о существенном прогрессе, которого ей удалось достичь вместе с разработчиками ОС и ПО, в исправлении ситуации.
Intel заявляет, что к настоящему времени выпустила обновления прошивки для большинства процессоров, вышедших за последние пять лет. Говоря точнее, к концу этой недели процессорный гигант обещает «пропатчить» более 90% процессоров, выпущенных за последние пять лет.
Intel теперь утверждает, что выпущенные ею заплатки якобы обеспечивают полный «иммунитет» от обеих уязвимостей (Meltdown и Spectre). Это при том, что ранее специалисты безопасности в один голос заявляли, что уязвимость Spectre, как подсказывает само ее название, очень сложна в исполнении и ее очень трудно устранить полностью одними только патчами"olartamonov Автор
07.01.2018 21:04+4Это та же Intel, предыдущий пресс-релиз которой сводился к тезису «а чего вы все к нам пристали, у всех эти уязвимости есть!»?
focs113
08.01.2018 05:55-2никто не покупает процессоры с +5% быстродействием на поколение… а давайте мы все выпущенные процессоры сделаем не просто устаревшими но ещё и опасными.а через месяца два выкатиим новую линейку уже безопасных… профит от интела)
Exchan-ge
08.01.2018 14:54сделаем не просто устаревшими но ещё и опасными
Если смотреть с такой точки зрения — то тогда там другой смысл:
«узаконим нулевое повышение производительности для новых поколений процессоров при регулярном повышении уровня их безопасности» — этот процесс может быть бесконечным.
melchermax
Может, теперь разработчики мобильных ОС таки придут идее обновления компонентов ОС вместо полной смены прошивки? Вообще-то на настоящий момент сменить ядро возможно, но необходимы пляски с custom recovery, кустарными сборками, и т.д.
entze
Если правильно понимаю, то Android 8 есть фича Project TREBLE, но как обычно, есть особенности.
FlamyXD
Но поддержку этой технологии могут не запилить разработчики.
zikasak
Если хотят пройти Google CTS на устройстве, выпускаемом изначально с Android 8 — запилят.
olartamonov Автор
Project Treble про другое — как раз чтобы максимально отвязать высокоуровневые обновления от низкоуровневых (ядра, драйверов).
Так что особо ничего не изменится. Просто представьте, что вот оказалось бы, что Meltdown в ARM с нами уже три года, полноценная защита требует патча на ядро, посмотрите на табличку — и прикиньте, сколько времени производителям чипсетов и смартфонов потребуется на патченье, проверку и обновление всего зоопарка от 3.10.61 до 4.4.78.
stetzen
Насколько я понимаю (но могу ошибаться, конечно), project TREBLE как раз в данном случае не поможет. Он (вроде бы) позволяет обновлять юзерспейсную часть андроида (не вполне уверен, насколько глубоко, мб вплоть до Дальвика), оставляя в покое железоспецифичные куски кода. Проблема в том, что как раз ядро железоспецифичнее некуда.
melchermax
Собрать новое, «неуязвимое» Linux ядро со старым конфигом железа — дело на пару часов, в отличие от адаптации новой версии андроида, к примеру.
amarao
Это если у вас есть сырцы всех драйверов и они готовы с новой моделью памяти работать.
olartamonov Автор
И QA-отдел, согласный без пары-тройки месяцев тестирования подписаться под тем, что новое чудо-ядро при раскатывании на пятнадцать миллионов смартфонов не превратит половину из них в кирпичи.
dimm_ddr
Ох, если бы ко мне (к QA) с таким пришли я бы наверное несколько минут сначала молча рассматривал бы этого человека перед тем как начать объяснять куда он может с такими предложениями пойти.
melchermax
Кагбэ у производителей эти сырцы таки есть. И допилить их — ни разу не проблема.
amarao
Грубое упрощение. Часто производитель выдаёт блоб под указанную версию, или имеет патчи только на указанную версию, и портировать их под другую версию — гигантский труд (в отсутствие спеков на железо).
Андроидная экосистема с драйверами ужасающа.
vladtsvs
Отдельная тема — что в ядрах для смартфонов идут драйвера на смартфоновскую периферию. И они зачастую проприетарные и только под определенную версию ядра