Приложения для Android страдают от плагиата и воровства путем злонамеренной переупаковки. Обфускация — основное средство защиты, но только четверть приложений Android в Google Play запутываются их основным разработчиком.
Исходя из предпосылки, что приложения на рынке Google Play очень восприимчивы к обратному проектированию, группа исследователей из Ганноверского университета Лейбница провела анализ использования и проблем обфускации программного обеспечения в приложениях Android.
Исследование имело три направления:
- Опрос 308 разработчиков Google Play относительно их фона обфускации, использования инструментов и восприятия
- Измерение обфускации в более чем 1,7 миллиона бесплатных приложений Google Play с помощью Obfuscan, инструмента, разработанного исследователями для обнаружения следующих функций обфускации, используемых ProGuard и аналогичными инструментами обфускации: Обфускация имен — оригинальные имена пакетов, классов, методов и полей заменены бессмысленными этикетки; Перегрузка имени метода и удаление отладочной информации, аннотаций и исходного кода.
- Исследование программирования, в котором 79 разработчиков Google Play попросили выполнить несколько задач обфускации с помощью ProGuard.
В ходе первоначального исследования было обнаружено, что ProGuard, бесплатное программное обеспечение, входящее в состав Android Studio, является наиболее часто используемым инструментом обфускации. Из 308 участников 241 (78%) слышали об обфускации; 187 (61% участников / 78% тех, кто слышал о запутывании, думали о запутывании своих приложений; и 148 (48% опрошенных) запутывали одно или несколько приложений в прошлом.
Хотя опрошенные считали, что приложения в целом могут столкнуться с угрозами обратной инженерии, переупаковки и плагиата, они не чувствовали, что угрозы распространяются на их собственные приложения — только 102 (33%) опасались кражи своей интеллектуальной собственности. На этой диаграмме показано распределение ответов на вопросы о приложениях в целом и о собственных приложениях разработчика по пятибалльной шкале Лайкерта.
Приведенная выше диаграмма также показывает, что участники опроса имели довольно точную оценку вероятности того, что приложения других людей будут запутаны, более 80% ответили «вероятно» или «очень вероятно».
Используя Obfuscan, исследователи фактически обнаружили использование ProGuard или функционально эквивалентных инструментов в 64,51% протестированных ими приложений. Однако это было не обязательно из-за действий разработчиков.
Исследователи объясняют
Большой процент приложений не был намеренно запутан исходным разработчиком, но содержит сторонние библиотеки, использующие обфускацию. В то время как некоторые библиотеки распространяются предварительно запутанными, другие поставляются с файлами конфигурации ProGuard для настройки запутывания. Тот факт, что библиотеки могут быть запутаны, но основной код приложения не запутан, является важным отличием для понимания использования обфускации во всей экосистеме Android. В частности, наличие обфусцированной библиотеки не означает, что основные компоненты приложения фактически запутываются.
Это привело к дальнейшему анализу обфускации основного пакета, заголовок которого был обнаружен следующим образом:
только 24,92% приложений (439 232 приложения) намеренно скрыты разработчиком
Исследователи проверили гипотезу о том, что популярные приложения будут иметь более высокий уровень обфускации основного пакета в силу того, что они более сложные и сложные, а также подвержены наибольшему риску плагиата.
Комментируя результаты, представленные в этой таблице, исследователи пишут:
Большинство приложений — 98,9% (1 655 914 приложений) приложений с менее чем 1 миллионом загрузок — запутываются примерно с той же скоростью, в диапазоне от 23,9% до 27,3%. По мере дальнейшего увеличения количества загрузок мы видим рост обфускации в наиболее загружаемых приложениях с 29,15% приложений с более чем одним миллионом загрузок до 50,0% приложений с более чем 100 миллионами загрузок. Хотя это подтверждает наши первоначальные ожидания, мы были удивлены тем, что даже самые популярные приложения маскируются в среднем только в половине случаев.
Они также проверили гипотезу о том, что количество опубликованных приложений на одну учетную запись Google Play будет играть роль в решении скрыть приложения. Предполагая, что учетные записи с большим количеством отправленных приложений принадлежат опытным разработчикам или компаниям, специализирующимся на разработке приложений, они ожидали, что эти учетные записи будут демонстрировать более высокий уровень обфускации. Это подтвердили их результаты:
Приложения из учетных записей с менее чем 100 приложениями имеют примерно одинаковую среднюю скорость обфускации от 21,8% до 26,5%. Для учетных записей со 100 или более отправленными приложениями этот показатель увеличивается примерно до 35% и до 68,4% для учетных записей с 500 и более приложениями. Комментарий исследователей:
Такое увеличение средней обфускации приложений, кажется, подтверждает нашу гипотезу о том, что опытные разработчики или специализированные компании с большим количеством отправленных приложений чаще используют обфускацию. Вероятным объяснением этого может быть то, что более опытные разработчики и компании хотят и дальше защищать свою интеллектуальную собственность. Это может быть результатом предыдущего опыта кражи интеллектуальной собственности или результатом повышения ценности своих приложений, поскольку они, вероятно, являются важным источником дохода для профессиональных разработчиков и специализированных компаний-разработчиков приложений.
В заключительной части исследования изучались причины, по которым так мало приложений в исследовании были замаскированы. Исследователи предположили, что это могло быть связано с недостатками в удобстве использования ProGuard, и для изучения этого предложили разработчикам решить две задачи ProGuard, которые включали обфускацию приложения в Android Studio, после чего заполнили анкету. В этом исследовании было 78 допустимых участников, и хотя 70 (90%) смогли запутать все приложение в более простой задаче Proguard, только 17 (22%) смогли решить вторую задачу, хотя 30 (38%) ошибочно посчитали, что они решил это. Разработчики, которые утверждали, что у них есть опыт работы с ProGuard, в среднем работали лучше, чем те, у кого его не было. Эти результаты привели исследователей к выводу, что ProGuard сложно правильно использовать и что упрощение его использования способствует использованию обфускации.
Они также определили проблему отношения, заявив:
Разработчики не заинтересованы в развертывании обфускации, учитывая низкий предполагаемый риск и высокие предполагаемые усилия. Разработчики также рассматривают обфускацию как необязательный шаг, возможно, «уничтожающий приложение», а не как неотъемлемую часть процесса сборки. Хотя улучшенные интерфейсы и автоматизация обфускации могут улучшить восприятие усилий, необходимы дополнительные исследования и обучение в отношении рисков плагиата.
Их вывод заключается в том, что для предотвращения кражи интеллектуальной собственности разработчиков Android и переупаковки и распространения их приложений в качестве вредоносных программ необходимо сделать обфускацию более удобной, а самих разработчиков нужно информировать о рисках, с которыми они сталкиваются.