Skip to main content

Безопасность миллионов приложений iOS могла быть поставлена ​​под угрозу из-за уязвимости в популярном диспетчере зависимостей CocoaPods.

Разработчики программного обеспечения часто полагаются на код, написанный другими компаниями или разработчиками, чтобы ускорить разработку своих продуктов. Чтобы упростить управление кодом из других источников — известных как зависимости — разработчики используют инструмент, называемый диспетчером зависимостей. То же самое верно и при разработке для платформ Apple, и самым популярным менеджером зависимостей для приложений iOS на сегодняшний день является CocoaPods.

В минувший понедельник разработчики проекта опубликовали заявление, в котором раскрывается проблема безопасности, которая была недавно обнаружена и присутствует в программном обеспечении с июня 2015 года, что дает злоумышленникам достаточно времени, чтобы потенциально воспользоваться ею.

Проблема заключалась в том, что злонамеренно созданный пакет, опубликованный в репозитории CocoaPods, мог запускать произвольный код на управляющих им серверах. Это может быть использовано для замены существующих пакетов вредоносными версиями с кодом, который в конечном итоге может появиться в приложениях для iOS и Mac, используемых миллионами людей по всему миру.

Примером популярного приложения, использующего CocoaPods, является Signal, приложение для обмена сообщениями, ориентированное на конфиденциальность. Тщательно спланированная атака на одну из зависимостей, используемых Signal, потенциально может раскрыть данные пользователя. Это маловероятный сценарий, учитывая, что зависимости, используемые Signal, проверяются командой разработчиков приложения, что гарантирует отсутствие в зависимости вредоносного кода или проблем с безопасностью. Однако не у всех разработчиков есть такая практика при работе с зависимостями.

В ответ на запрос о комментарии Signal предоставил следующее заявление:

На Signal эта уязвимость не повлияла. Как правило, мы проверяем все наши сторонние зависимости как во время их добавления, так и при их обновлении. Мы храним нашу собственную копию всех этих зависимостей, чтобы упростить аудит, а также предотвратить неожиданные изменения, которые можно найти здесь. Кроме того, после того, как мы узнали об этой уязвимости, мы провели дополнительный аудит, чтобы убедиться, что код в этом репо соответствует этому коду в тегах для всех наших зависимостей.

Нет никаких доказательств того, что уязвимость была использована, и теперь она исправлена ​​на стороне сервера, поэтому разработчикам и пользователям не нужно предпринимать никаких действий. Единственными разработчиками, затронутыми исправлением, будут те, кто публикует свои собственные пакеты в CocoaPods, поскольку их токены аутентификации были сброшены на тот случай, если они могли быть обнаружены из-за уязвимости.

Для разработчиков, использующих CocoaPods, или любых разработчиков, которые работают с диспетчерами зависимостей, это служит напоминанием о том, что диспетчерам зависимостей и предоставляемым ими зависимостям нельзя доверять.