Специалисты EVA Information Security обнаружилиуязвимости в менеджере зависимостей CocoaPods, которые оставались незамеченными более 10 лет и могли быть использованы для организации атак на цепочку поставок для macOS и iOS. Ошибки позволяли внедрить вредоносный код во многие из самых популярных приложений, что создавало риск для миллионов пользователей по всему миру.
Уязвимости находились на сервере управления Trunk проекта CocoaPods. CocoaPods является репозиторием для открытых проектов на Swift и Objective-C, от которого зависят около 3 миллионов приложений для macOS и iOS. Когда разработчики вносят изменения в свои “pods” (индивидуальные пакеты кода), зависимые приложения автоматически интегрируют их через обновления, часто без какого-либо взаимодействия с конечными пользователями.
Одна из обнаруженных ошибок позволяла атакующему внедрять код в приложения, которые могут получать доступ к конфиденциальной информации пользователей: данные кредитных карт, медицинские записи, личные данные и многое другое. Внедрение кода могло дать возможность использовать информацию для любых злонамеренных целей, таких как вымогательство, мошенничество, шантаж или корпоративный шпионаж. Компании, использующие уязвимые приложения, подвергались серьёзным юридическим и репутационным рискам.
Три обнаруженные уязвимости связаны с небезопасным механизмом проверки электронной почты, используемым для аутентификации разработчиков отдельных модулей. Разработчик ввел адрес электронной почты, связанный с его модулем. Сервер Trunk ответил отправкой ссылки на адрес. Когда человек нажимал на ссылку, он получал доступ к учетной записи.
Обычно электронное письмо содержит действительную ссылку на сервер CocoaPods.org (сверху), но злоумышленник мог изменить URL-адрес так, чтобы он вел на вредоносный сервер (снизу).
Были обнаружены следующие уязвимости:
- CVE-2024-38366 (оценка CVSS: 10.0) вызвана небезопасным процессом проверки электронной почты и позволяет выполнять произвольный код на сервере Trunk, который затем может использоваться для манипулирования пакетами или их замены.
- CVE-2024-38367 (оценка CVSS: 8.0) связана с небезопасным механизмом проверки электронной почты, использовавшимся для аутентификации разработчиков. Позволяет манипулировать URL-ссылкой в отправляемом письме, чтобы она направляла на сервер злоумышленника, что дает возможность перехватывать учетные данные разработчиков и получать доступ к их аккаунтам. Более того, атаку можно усовершенствовать до Zero-Click-атаки, подменив HTTP-заголовок (т. е. изменив поле заголовка X-Forwarded-Host ) и воспользовавшись неправильно настроенными инструментами безопасности электронной почты.
- CVE-2024-38368 (оценка CVSS: 9.9) позволяет захватить управление над заброшенными “pods”, которые по-прежнему используются в приложениях. Интерфейс, позволяющий разработчикам восстанавливать доступ к своим “pods”, оставался активным с 2014 года. Злоумышленник мог воспользоваться интерфейсом без подтверждения права собственности.
После обнаружения уязвимостей CocoaPods оперативно устранила их в октябре. Разработчики заявили, что на момент устранения не было доказательств активной эксплуатации. Однако возможность таких атак была подтверждена.
Для предотвращения подобных инцидентов в будущем CocoaPods внедрила новый процесс восстановления заброшенных “pods”, требующий прямого обращения к разработчикам, что делает невозможным эксплуатацию уязвимостей, связанных с заброшенными пакетами.
Хотя от разработчиков приложений и пользователей не требуется никаких действий, исследователи из EVA рекомендовали принять дополнительные меры предосторожности. Разработчики должны:
- Синхронизировать файл podfile.lock;
- Проверять контрольные суммы загружаемых пакетов;
- Проводить тщательный аудит стороннего кода;
- Регулярно сканировать код на наличие секретов и вредоносных компонентов.
Особое внимание следует уделять зависимостям, которые широко используются, так как они являются привлекательной целью для атак.