Все уже слышали новость про компроментирование ключей подписи APK файлов некоторых производителей #Android прошивок.
К моему сожалению, никто не смог нормально объяснить, что вообще случилось. Я даже не стал изначально постить инфу об этом, т.к. знал, что на каждом углу напишут. В итоге написали, но так, что читатели не осознали ситуации и новость просто исчезла из инфополя за пару дней.
Так что внесу чуть ясности в эту историю.
- Под раздачей, из популярных, #Samsung, #LG и #Mediatek. Есть ещё несколько ноунеймов, но они на мне интересны
- Ключи Samsung утекли ещё несколько лет назад. Как минимум в оригинальной ишуе в гугловом багтрекере ( https://bugs.chromium.org/p/apvi/issues/detail?id=100 ) можно найти пример малвари, подписанной ключом Самсунга, аж из 2016 года: https://www.virustotal.com/gui/file/b1f191b1ee463679c7c2fa7db5a224b6759c5474b73a59be3e133a6825b2a284/details
- Samsung утверждает, что знал об утечке и выпускал некое обновление безопасности, исправляющее эту проблему. Что имеется в виду под этим - не понятно (хотя понятно - пиздёж), потому что актуальные на сегодня прошивки устройств Galaxy по-прежнему содержат приложения, подписанные скомпроментированные ключами // когда-то я читал доклад, где говорил, что Самсунг, как производитель прошивки, пидорасы и хуесосы. Мне дали пиздюлей потом за это, ведь нельзя говорить правду про нашего главного партнёра. И мой доклад был удалён. Что же. Я не отказываюсь от своих слов до сих пор
- Этими ключами подписаны примерно все приложения Самсунга, установленные на их телефонах: Samsung Pay, Bixby, Samsung Account и другие. В комментариях к этому сообщеню я приложу примеры приложений, которые на сегодня являются уязвимыми
- Гугл утверждает, что все OEM партнёры были уведомлены и сообщили, что начали процесс миграции. От себя добавлю, что миграция, если она и правда началась (см. пример выше с Samsung), займёт месяцы из-за особенностей работы системы. В комментарии к этому сообщению я объясню, почему так
- Google Play имеем техническую возможность обнаруживать и удалять вредоносные приложения. Но возможность не означает, что это будет применено. Сам Google говорит: не ссыте, вы можете нам доверять, если у вас последние апдейты стоят на плей сервисы, то вы под защитой // вспоминаю ту пикчу про Меркель и голубя: а я пиздеть не буду, я же Меркель
Почему процесс миграции долгий. Дело в том, что нельзя установить обновление того же самого приложения, но подписанного другой подписью. Думаю, всем нам это понятно, мы тут в основном айтишники.
Несколько лет назад Гугл выкатил механизм для ротации подписей. Так называемая signature scheme v3. Последняя на сегодня уже - 4. Разумеется, 4 тоже поддерживает ротацию.
Итак, что нужно сделать:
1. Выпустить обновление приложений, которые подписаны новой подписью, но в цепочке указано, какая подпись была прошлой. Тогда Android сможет установить обновление. И выложить это в стор
2. Выпустить обновление прошивки, где все приложения также обновлены через схемы 3 или 4
Казалось бы, всё просто, бери и делай. Но вот подводные камни:
- схема 3 поддерживается только в Android 9 и выше. Таким образом всё, что ниже 9ки, просто не сможет обновить приложения из стора на новые версии. Они навсегда останутся на старой, ведь для ОС это будут приложения с просто другой подписью
- Можно как-то связаться с пользователями и попросить их удалить старые версии приложений и установить снова их из стора. Но это надо как-то связаться. Допустим, можно выпустить обвноление стора, которое само будет вываливать нотификции с этим требованием
- Но это поможет только для тех приложений, которые пользователи поставили руками. Это никак не спасёт в ситуации, когда приложение было предустановлено в прошивку. Включая сам Стор. На 8.1 и ниже нет вообще никакой возможности мягко сделать переход из-за того, что Самсунг любит совать в прошивку вообще все свои фирменные приложения. А не мягкий - полное обновление прошивки с потерей всех данных приложений - они делать не будут однозначно.
- И, наконец, сам Стор должен быть готов к схеме 3. Есть не нулевая вероятность, что ОЕМ производители, у которых есть свой стор, могли забить болт на поддержку этой версии схемы. v2 же работает, а работает - не трогай, ага
Итого, нужно подготовить все приложения к новой подписи, протестировать их (а разработчики очень часто вставляют проверку своей подписи в код приложений для защиты от модификаций). Потом начать раскатку обнволений. Сразу на всех нельзя, ведь процесс ротации никогда не тестировали, значит будут раскатывать сегментами. И будут нарываться на проблемы миграции, ведь это ещё не отлаженный механизм. Почему я уверен, что он не отлажен? Вот выхлоп моей утилиты, которая используется у нас в CI для разных дел (см. скриншот). Это самая последняя доступная версия фирменного браузера. Они не просто никогда не проверяли мигарцию, они даже не могут её начать, ведь v3 у них просто нет, только v2. При том что мы подписываем одновременно v2-v4 включительно. Потому что я написал пару строк кода для этого и CI без проблем подписывает, а Самсунг не смогли это освоить.
Потому выше я предположил, что их Стор может вообще быть не готов к новой схеме, ведь они её не используют.
Потому я берусь утверждать, что миграция займёт месяцы. Ну, с 2016-го можно и потерпеть ещё погодика-год.
Почему процесс миграции долгий. Дело в том, что нельзя установить обновление того же самого приложения, но подписанного другой подписью. Думаю, всем нам это понятно, мы тут в основном айтишники.
Несколько лет назад Гугл выкатил механизм для ротации подписей. Так называемая signature scheme v3. Последняя на сегодня уже - 4. Разумеется, 4 тоже поддерживает ротацию.