В новой supply-chain атаке исследователь безопасности сумел взломать внутренние системы более 35 крупных компаний, в том числе Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla и Uber, и добиться удаленного выполнения кода.
Этот метод, называемый «dependency confusion » или «атакой подмены», использует тот факт, что часть программного обеспечения может включать компоненты как из приватных, так и из публичных источников.
Эти внешние пакеты зависимостей, которые извлекаются из публичных репозиториев в процессе сборки, могут представлять собой вектор атаки. Атакующий загружает более высокую версию приватного модуля в общедоступный репозиторий, в результате чего клиент автоматически скачивает фальшивую «последнюю» версию, не требуя никаких подтверждений от разработчика.
«От одноразовых ошибок, сделанных разработчиками на собственных машинах, до неправильно настроенных внутренних или облачных сборочных серверов, до системно уязвимых конвейеров разработки, было ясно одно: подмена валидных внутренних имен пакетов было практически бесспорным методом проникновения в сети некоторых крупнейших технологических компаний. Таким образом, мы получили возможность удаленного выполнение произвольного кода в их инфраструктуре. Злоумышленники, таким образом, могли бы внедрить бэкдоры во время сборки», - подробно описал в статье исследователь безопасности Алекс Бирсан.
За уведомление компаний о своем исследовании Бирсан получил более $130,000 в виде Bug Bounty.
Исследование Бирсан начал со сбора имен приватных внутренних пакетов зависимостей, используемых крупными компаниями на GitHub, сообщений на различных интернет-форумах и JavaScript-файлов, в которых перечислены зависимости проекта, затем загрузил неавторизованные библиотеки с этими же именами в службы хостинга зависимостей с открытым исходным кодом, такие как npm, PyPI и RubyGems.
«Система сборки Shopify's автоматически установила пакет для Ruby под названием «shopify-cloud» всего через несколько часов после того, как я его загрузил, а затем попытался запустить код внутри него», - отметил Бирсан, добавив, что пакет Node, который он загрузил на npm в августе 2020 года, был выполнен на нескольких машинах в сети Apple, что затронуло проекты, связанные с системой аутентификации Apple ID.
В конце концов, Бирсан использовал поддельные пакеты для получения записи о каждой машине, на которой были установлены пакеты, а затем извлек данные по DNS, по причине того, что «трафик с меньшей вероятностью будет заблокирован или обнаружен на выходе».
Озабоченность тем, что пакет с более высокой версией будет вытягиваться процессом сборки приложений независимо от того, где он расположен, не ускользнула от внимания Microsoft, которая во вторник выпустила новый официальный документ , описывающий три способа снижения рисков при использовании частных репозиториев зависимостей.
Главными среди его рекомендаций являются следующие:
- Использовать один репозиторий, а не на несколько;
- Защищать приватные пакеты с помощью управляемых диапазонов, пространств имен или префиксов;
- Использовать функции проверки со стороны клиента, такие как вывод версии и проверка целостности.
Источник: https://is-systems.org