Атака MavenGate может позволить хакерам захватить Java и Android через заброшенные библиотеки

Brother

Professional
Messages
2,590
Reaction score
483
Points
83
Несколько заброшенных общедоступных и популярных библиотек, но все еще используемых в приложениях Java и Android, были признаны уязвимыми для нового метода атаки на цепочку поставок программного обеспечения под названием MavenGate.

"Доступ к проектам может быть перехвачен путем покупки доменных имен, а поскольку большинство конфигураций сборки по умолчанию уязвимы, было бы трудно или даже невозможно узнать, проводилась ли атака", - сказал Oversecured в анализе, опубликованном на прошлой неделе.

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

Компания по безопасности мобильных устройств добавила, что все технологии на базе Maven, включая Gradle, уязвимы для атаки, и что она разослала отчеты более чем 200 компаниям, включая Google, Facebook, Signal, Amazon и другие.

Apache Maven в основном используется для создания проектов на основе Java и управления ими, позволяя пользователям загружать зависимости (которые однозначно идентифицируются их groupId) и управлять ими, создавать документацию и управлять выпусками.

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

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

"Злоумышленник может получить доступ к уязвимому groupId, подтвердив свои права на него через текстовую запись DNS в репозитории, где не существует учетной записи, управляющей уязвимым groupId", - говорится в сообщении компании.

"Если groupId уже зарегистрирован в репозитории, злоумышленник может попытаться получить доступ к этому groupId, обратившись в службу поддержки репозитория".

Чтобы протестировать сценарий атаки, Oversecured загрузила свою собственную тестовую библиотеку Android (groupId: "com.oversecured"), которая отображает всплывающее сообщение "Привет, мир!" в Maven Central (версия 1.0), а также загрузила две версии в JitPack, где версия 1.0 является точной копией той же библиотеки, опубликованной в Maven Central.

Но версия 1.1 представляет собой отредактированную "ненадежную" копию, которая также имеет тот же groupId, но которая указывает на репозиторий GitHub, находящийся под их контролем, и утверждается путем добавления записи DNS TXT для ссылки на имя пользователя GitHub, чтобы подтвердить право собственности.

Затем атака срабатывает путем добавления Maven Central и JitPack в список репозиториев зависимостей в скрипте сборки Gradle. На этом этапе стоит отметить, что порядок объявления определяет, как Gradle будет проверять зависимости во время выполнения.

"Когда мы переместили репозиторий JitPack выше MavenCentral, версия 1.0 была загружена из JitPack", - сказали исследователи. "Изменение версии библиотеки на 1.1 привело к использованию версии JitPack независимо от позиции JitPack в списке репозиториев".

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

Это еще одна форма атаки с путаницей зависимостей, при которой злоумышленник публикует поддельный пакет в общедоступном репозитории пакетов с тем же именем, что и у пакета в предполагаемом частном репозитории.

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

Из общего числа проанализированных 33 938 доменов было обнаружено, что 6170 (18,18%) из них уязвимы для MavenGate, что позволяет субъектам угрозы перехватывать зависимости и внедрять свой собственный код.

Sonatype, которой принадлежит Maven Central, заявила, что описанная стратегия атаки "неосуществима из-за существующей автоматизации", но отметила, что она "отключила все учетные записи, связанные с доменами с истекшим сроком действия и проектами GitHub" в качестве меры безопасности.

Далее говорится, что в ней устранен "регресс в процессе проверки открытого ключа", который позволил загружать артефакты в репозиторий с непублично разделяемым ключом. Компания также объявила о планах сотрудничества с SigStore для цифровой подписи компонентов.

"Конечный разработчик несет ответственность за безопасность не только прямых, но и переходных зависимостей", - заявили в Oversecured.

"Разработчики библиотек должны нести ответственность за зависимости, которые они объявляют, а также писать хэши открытых ключей для своих зависимостей, в то время как конечный разработчик должен нести ответственность только за их прямые зависимости".
 
Top