
Безопасность миллионов iOS-приложений могла оказаться под угрозой из-за уязвимости в популярном менеджере зависимостей CocoaPods.
Разработчики программного обеспечения часто полагаются на код, написанный другими компаниями или разработчиками, чтобы ускорить разработку своих продуктов. Для упрощения управления кодом из других источников — известным как зависимости — разработчики используют инструмент, называемый менеджером зависимостей. То же самое справедливо и при разработке для платформ Apple, а самым популярным менеджером зависимостей для iOS-приложений является CocoaPods.
В прошлый понедельник сопровождающие проекта выпустили заявление, раскрывающее уязвимость безопасности, которая была недавно обнаружена и присутствовала в программном обеспечении с июня 2015 года, предоставляя злоумышленникам достаточно времени для потенциальной эксплуатации.
Проблема заключалась в том, что злонамеренно созданный пакет, опубликованный в репозитории CocoaPods, мог выполнять произвольный код на серверах, которые им управляют. Это могло быть использовано для замены существующих пакетов вредоносными версиями с кодом, который мог попасть в iOS и Mac-приложения, используемые миллионами людей по всему миру.
Примером популярного приложения, использующего CocoaPods, является Signal, приложение для обмена сообщениями с упором на конфиденциальность. Тщательно спланированная атака на одну из зависимостей, используемых Signal, потенциально могла раскрыть данные пользователей. Это маловероятный сценарий, учитывая, что зависимости, используемые Signal, проверяются командой разработчиков приложения, гарантируя, что ни одна зависимость не содержит вредоносного кода или проблем безопасности. Однако не все разработчики придерживаются этой практики при работе с зависимостями.
В ответ на запрос комментариев Signal предоставил следующее заявление:
Signal не пострадал от этой уязвимости. В целом, мы проверяем все наши сторонние зависимости как при их добавлении, так и при обновлении. Мы ведем собственную копию всех этих зависимостей, чтобы упростить проверку, а также предотвратить неожиданные изменения, которые можно найти здесь. Кроме того, мы провели дополнительную проверку после получения информации об этой уязвимости, чтобы убедиться, что код в этом репозитории соответствует коду в тегах для всех наших зависимостей.
Нет никаких доказательств того, что уязвимость была использована, и она была исправлена на стороне сервера, поэтому разработчикам и пользователям не нужно предпринимать никаких действий. Единственными разработчиками, затронутыми исправлением, будут те, кто публикует свои собственные пакеты в CocoaPods, поскольку их токены аутентификации были сброшены на случай, если они могли быть скомпрометированы из-за ошибки.
Для разработчиков, использующих CocoaPods, или для любых разработчиков, работающих с менеджерами зависимостей, это служит напоминанием о том, что менеджерам зависимостей и предоставляемым ими зависимостям не следует безоговорочно доверять.