Ошибка в проекте Apache Harmony снова стала угрожать каждой версии Android от 2.1 до 4.4. Это позволяет загружать приложения, которые утверждают, что принадлежат практически любому законному источнику.
Возможно, первое, что нужно сказать, это то, что ко всему этому вопросу подошли ответственно, и у Google уже есть патч, решающий проблему. Другой вопрос, распространил ли патч ваш оператор.
Подпись приложения, полученная из сертификата, принадлежащего его создателю, определяет, что приложение может делать и кто может его обновлять. Приложения, созданные такими компаниями, как Adobe, имеют более высокий уровень доверия, жестко запрограммированный в ОС.
Проблема в том, что установщик пакета Android не проверяет подлинность цепочки сертификатов приложения. Например, вы можете создать новое приложение с новой подписью, используя созданный вами сертификат. В сообщении блога говорится:
«вы можете сами убедиться в функциях createChain () и findCert () класса AOSP JarUtils — бросается в глаза отсутствие криптографической проверки любых утверждений сертификатов эмитента, вместо этого по умолчанию используется простое сопоставление строк subjectDN и IssuerDN».
Затем вы можете заявить, что ваш идентификационный сертификат был выдан, скажем, системами Adobe. Поскольку установщик не проверяет цепочку сертификатов, он примет ваш сертификат и подпись и будет рассматривать его как приложение Adobe. Это дает вашему приложению все привилегии настоящего приложения Adobe. Например, если вы попытаетесь загрузить его как расширение для плагина webview, он проверит подпись приложения и разрешит его как приложение Adobe. Поскольку плагин находится за пределами песочницы браузера, вредоносный код может делать все, что угодно.
Поскольку приложение может быть подписано несколькими сертификатами, это позволяет одному мошенническому приложению получить разрешения по умолчанию многих других производителей приложений.
Код, вызывающий проблему, очевидно, находится в некоторых подпрограммах времени выполнения, предоставленных старым проектом Harmony. Apache Harmony был проектом, который должен был предоставить JDK с открытым исходным кодом, альтернативный «официальной» среде выполнения и библиотекам Oracle Java. Google использует Harmony как часть кода в своей библиотеке классов. Проект Harmony был свернут в 2011 году, и в определенной степени то, что этот недостаток сохранился так долго, зависит от Google.
Google был проинформирован об ошибке в апреле, и исправляющее ее исправление, ошибка Google 13678484, было доступно в течение некоторого времени и было применено к AOSP. Также было подтверждено, что в Google Play нет приложений, использующих эксплойт.
Если вы думаете, что использование старого программного обеспечения с открытым исходным кодом представляет собой глупую угрозу безопасности, подумайте, если бы это было старое закрытое программное обеспечение? Была бы проблема вообще найдена?