Обновления приложений – дело привычное. Новые версии исправляют ошибки и вносят приятные изменения вроде новых возможностей или улучшенных пользовательских интерфейсов. Но также они могут устранить потенциально опасную уязвимость в системе.
Пример: недавно обнаруженная уязвимость в SDK Facebook для Android. Разработчик провайдера облачных вычислений Parse из Сан-Франциско обнаружил в коде странную активность и исследовал её. Как выяснилось, эта уязвимость могла нанести серьезный урон разработчикам, пользователям, Facebook и любому другому приложению, использующему его SDK. Только обновление приложения смогло это предотвратить.
Разработчик компании Parse Дэвид Полл (David Poll) работал в клиенте Facebook для Android, когда заметил в утилите logcat, что в определенной строке кода целиком виден маркер доступа пользователя. Logcat – распространенный инструмент отладки для Android, позволяющий наблюдать за логами программ и процессов.
Facebook также использует logcat. Всякий раз, когда Poll заходил в свое тестируемое приложение через Facebook SDK, в коде появлялась эта строка:
Проблемы бы не возникло, появись эта строка исключительно в logcat приложения Полла, поэтому Полл протестировал работу других приложений от крупных разработчиков Zynga и Foursquare – и обнаружил то же самое!
Полл понял, что сможет написать простое приложение, которое через Facebook SDK украдет данные о маркерах доступа пользователя.
А вот это уже может стать большой проблемой. С маркером доступа пользователя вы получаете полный доступ к учетной записи. Разработчик-злоумышленник может использовать профиль пользователя в Facebook для рассылки спама или в других целях, а виновником будет выглядеть взломанное приложение, а не пользователь и не похититель данных. Представьте, как будет сбивать с толку, если Foursquare начнет рассылать спам и вирусы в Facebook через неизвестное приложение этого пользователя.
Полл написал приложение «FacebookThief», доказывающее его теорию. Состоящее всего из 20 строк кода, приложение способно маскироваться под любого пользователя Facebook, который залогинен в любом из приложений, использующем Facebook SDK. Полл и Parse сообщили об этом опыте Facebook (и были вознаграждены из фонда Facebook). В течение суток уязвимость была устранена, а Parse получила новую версию SDK для использования в своих приложениях.
Как отмечает Полл в блоге Parse, Facebook SDK для Android – это «программное обеспечение, которое работает на клиенте и встроено в другие приложения, поэтому у команды Facebook нет реальной возможности доставить обновление всем работающим с ним разработчикам».
Разработчикам потребуется самостоятельно скачать новую версию, затем вручную переустановить SDK и загрузить новые версии созданных с его помощью приложений. Нет никаких гарантий, что создатели приложений последуют этим рекомендациям: поддержка приложения может быть уже прекращена или причиной может стать их лень (да, среди разработчиков тоже бывают ленивые).
Использование сторонних SDK означает появление в приложении чужого кода. Проблемы этого SDK становятся Вашими проблемами. Facebook достаточно ответственен в отношении обновления собственных средств разработки. Чего не скажешь о других компаниях. Поэтому перед использованием стороннего SDK задайте себе вопрос, доверяете ли Вы его разработчику, и убедитесь, что он серьезно относится к появлению уязвимостей и оперативно занимается их устранением.
Урок разработчикам: существуют верные и неверные способы сообщить другой компании об уязвимости в ПО. В данном случае Parse уведомила Facebook в феврале и с пониманием отнеслась в просьбе не предавать это огласке до настоящего времени. По окончании сотрудничество с основными с основными разработчиками над обновлением их приложений Facebook разрешил Parse анонсировать обнаруженную уязвимость.
Уроки для пользователей просты:
1. Убедитесь, что знаете, какой доступ и с какой целью запрашивает приложение;
2. Всегда обновляйте приложения.
В этом случае любое приложение с разрешением "READ SENSITIVE LOG DATA" может поучить маркеры доступа из Facebook SDK. «Существуют объективные причины запроса доступа к данным, но пользователи должны с осторожностью относиться к любому приложению, запрашивающему доступ без необходимости» - пишет Полл.
Несмотря на то, что Facebook справился с уязвимостью, это не означает, что она исчезла. Она всё ещё присутствует в Android-приложениях, использующих старую версию Facebook SDK. Также она присутствует в устройствах пользователей, которые не обновили приложения до защищенных версий.
Финальный вывод заключается в том, что быть слишком осторожным невозможно. Это относится как к пользователям, так и к разработчикам. Единственный способ избежать подобных уязвимостей – быть внимательным и ответственным: разработчику в вопросе написания кода, пользователю относительно разрешения доступа приложения к данным и своевременного обновления приложений.
Фред Воленс (Fred Wolens) – PR-служба Facebook:
Мы благодарны разработчикам, которые обратили наше внимание на уязвимость и ответственно отнеслись к сотрудничеству в рамках проекта White Hat. Для понимания природы уязвимости мы сотрудничали с этой командой, что позволило выпустить новую версию SDK и передать её разработчикам, а также предотвратить использование этой уязвимости. Могут пострадать пользователи, установившие прежнюю версию приложения и разрешившие приложению «Считывать конфиденциальные данные журнала». Пользователи могут обезопасить себя посредством загрузки новых версий приложений и удалением приложений, не заслуживающих доверия. Благодаря ответственному отношению Facebook к этому вопросу, заявления об использовании этой уязвимости отсутствуют. В благодарность за вклад в безопасность Facebook команда разработчиков получит премию.
15 апреля 2012
Новикова Евгения
Источник:www.readwriteweb.com