Миллионы пользователей скачивают и устанавливают приложения из каталога Google Play, хотя мало кто проверяет качество кода, о нём практически ничего не известно. Чтобы изучить эту тему, исследователи из Колумбийского университета создали программу PlayDrone — первый автоматический краулер Google Play. Краулер сам по себе прост: менее 2000 строк на Ruby и HTML, исходный код опубликован на Github.

PlayDrone в течение почти всего 2013 года ежедневно выкачивал приложения из каталога Google Play. Он проиндексировал 1 107 476 программ — это самый большой индекс кода Android-приложений. Разработчики применили некоторые хакерские методы, чтобы обойти ограничения Google на массовое индексирование каталога Google Play, потому что по умолчанию через веб-интерфейс нельзя просматривать более 500 приложений в каждой категории. Они также провели декомпиляцию кода программ, в том числе получили исходный код 884 217 бесплатных приложений. Всего в индекс включено более 100 млрд строк кода.

Чтобы продемонстрировать практическую полезность краулера PlayDrone, исследователи выбрали несколько практических задач. Одна из них — анализ повторяющегося кода в разных приложениях (оказалось, что 25% содержимого Google Play — дубликаты). Ещё одна — анализ эффективности механизмов аутентификации через OAuth. Кроме того, авторы исследовали тренды, как меняется популярность приложений со временем, как часто выходят новые версии, какие рекламные библиотеки используются в бесплатных программах и многое другое. Например, они доказали, что количество скачиваний практически не зависит от средней оценки.

Пожалуй, самое интересное — то, что в коде приложений найдено много секретных токенов для аутентификации на других сервисах, в том числе Amazon Web Services или Facebook. Разработчики хранят их прямо в коде, не сознавая, что токены легко получить с помощью декомпиляции.

Особенную ценность представляют 288 валидных токенов для AWS, большинство из которых предоставляют полный доступ к аккаунтам, включая возможность закрытия виртуальных машин или создания новых. Исследователи могли бы запустить настоящий ботнет в AWS с такими ресурсами за чужой счёт.

Токены Facebook тоже ценны, потому что дают частичный доступ к аккаунтам всех, у которых установлено данное мобильное приложение и разрешён доступ в Facebook. Может случиться конфуз, если популярное приложение с миллионов устройств имеет право публикации на стене, а секретный токен попадёт в чужие руки.

Результаты исследования Николя Вьенно (Nicolas Viennot) с коллегами опубликовали на конференции Sigmetrics 2014, которая сегодня заканчивается в Остине (Техас). Они также предложили компании Google свою помощью в запуске программы для автоматического сканирования кода программ Google Play на наличие секретных токенов OAuth.

Кстати, такое исследование проводилось более полугода назад и его результаты были представлены на конференции ZeroNights.

То исследование не было сфокусировано именно на ключах в коде приложений, а рассматривало тему утечек данных о приложении в целом (то только непосредственно в исполняемом коде, а во всех файлах, которые составляют приложение), то есть не только OAuth токены, но и отладочные конфиги, забытые исходники, ссылки на отладочное окружение и учётные записи для работы с ним и прочее.

И если разработчики PlayDroid представили результат своей работы, как недокументированный код на Github, то отечественный проект продолжает существовать и развиваться, как онлайн-инструмент для анализа приложений hackapp.com, в котором анализатор завернут в удобный веб-интерфейс и которое может анализировать не только Android но и iOS-приложения. Подробнее о нём можно прочитать на blog.hackapp.com.



Оставить мнение