• XSS.stack #1 – первый литературный журнал от юзеров форума

Эксперт взломал внутренние системы Microsoft, Apple, PayPal, Tesla

INC.

REVERSE SIDE OF THE MEDAL
Эксперт
Регистрация
02.02.2008
Сообщения
3 950
Реакции
1 872
Исследователю в области кибербезопасности удалось взломать внутренние системы более чем 35 крупнейших компаний, среди которых были Microsoft, Apple, PayPal, Shopify, Netflix, Yelp, Tesla и Uber.

В этом специалисту помогла новая атака на цепочку поставок софта. В ходе отработки «взлома» специалист Алекс Бирсан смог загрузить вредоносную программу в репозитории с открытым исходным кодом, включая PyPI, npm и RubyGems. В результате этот зловред автоматически разошёлся по внутренним приложениям корпораций.

Продемонстрированный исследователем способ атаки отличается от похожих схем своей сложностью, при этом для его реализации от жертвы не требуется никаких действий. А всё потому, что атака задействует уязвимость в экосистемах, предназначенных для хранения исходного кода. Эта брешь получила название «путаница зависимостей».

Поскольку обнаруживший проблему безопасности эксперт не ставил целью по-настоящему ломать системы крупнейших корпораций, он открыл информацию о дыре представителям ИТ-гигантов. В результате этичный хакер заработал $130 000.

Идея нового вектора атаки пришла в голову Бирсану в прошлом году. Во время работы с Джастином Гарднером, другим экспертом, Алекс обратил внимание на одну деталь при взаимодействии с репозиториями npm.

Согласно описанию способа атаки на BleepingComputer, исследователь начал создавать фейковые проекты с теми же именами, что были в репозиториях npm, PyPI и RubyGems. Вскоре Бирсан понял следующую зависимость: если используемый приложением пакет находится как в публичном репозитории, так и в личном, то приоритет отдаётся именно публичному.

Используя эту особенность, специалист выполнил успешную атаку на цепочку поставок и добрался до систем Microsoft, Apple, PayPal, Shopify, Netflix, Tesla, Yelp и Uber. Этого удалось добиться простым размещением публично доступных пакетов с теми же именами, которые находились во внутренних системах корпораций.


• Source: https://twitter.com/alxbrsn

• Source: https://twitter.com/Rhynorater

• Source: https://www.bleepingcomputer[.]com/...soft-apple-more-in-novel-supply-chain-attack/
 
Представлен поразительный по своей простоте метод атаки на зависимости в приложениях, при разработке которых используются внутренние репозитории пакетов. Выявившие проблему исследователи смогли выполнить свой код на внутренних серверах 35 компаний, среди которых PayPal, Micrоsoft, Apple, Netflix, Uber, Tesla и Shopify. Взломы проводились в рамках программ Bug Bounty, согласованно с атакуемыми компаниями, и уже принесли авторам 130 тысяч долларов, выплаченных в форме вознаграждений за выявление уязвимостей (выплаты продолжают поступать).

Метод основан на том, что многие компании используют в своих внутренних приложениях зависимости из стандартных репозиториев NPM, PyPI и RubyGems, а также внутренние зависимости, которые не распространяются публично и загружаются из собственных репозиториев. Проблема в том, что пакетные менеджеры, такие как npm, pip и gem, пытаются загрузить внутренние зависимости компаний в том числе и из публичных репозиториев. Для атаки достаточно определить имена пакетов со внутренними зависимостями и создать собственные пакеты с такими же именами в публичных репозиториях NPM, PyPI и RubyGems. Проблема не специфична для NPM, PyPI и RubyGems, и также проявляется в других системах, таких как NuGet, Maven и Yarn.

Идея предложенного метода появилась после того, как исследователь случайно обратил внимание, что в публикуемом на GitHub общедоступном коде многие компании не очищают из manifest-файлов упоминание дополнительных зависимостей, применяемых во внутренних проектах или при реализации расширенной функциональности. Подобные следы были найдены в Node.JS, Python и Ruby проектах многих компаний и исследователь решился на эксперимент по взлому инфраструктуры данных компаний в рамках действующих программ Bug Bounty. Все опубликованные дубликаты пакетов были снабжены примечанием о проведении исследования.

Результаты оказались неожиданно эффективными и исследователю удалось выполнить свой код на многих серверах, отвечающих за сборку или тестирование на базе систем непрерывной интеграции. При загрузке зависимостей пакетные менеджеры npm, pip и gem в первую очередь устанавливали пакеты из первичных публичных репозиториев NPM, PyPI и RubyGems, которые рассматривались как более приоритетные. Наличие аналогичных пакетов с теми же именами в приватных репозиториях компаний игнорировалось без вывода какого-либо предупреждения и не приводя к сбою. В PyPI на приоритет загрузки влиял номер версии (независимо от репозитория загружалась наиболее свежая версия пакета). В NPM и RubyGems приоритет зависел только от репозитория.

Исследователь разместил в репозиториях NPM, PyPI и RubyGems пакеты, пересекающиеся с названиями найденных внутренних зависимостей, добавив в скрипт, запускаемый перед началом установки (preinstall в NPM), код для сбора информации о системе и отправки полученных сведений на внешний хост. Для передачи сведений об успехе взлома в обход межсетевых экранов, блокирующих внешний трафик, использовался метод организации скрытого канала связи поверх протокола DNS. Запускаемый код осуществлял резолвинг хоста в подконтрольном атакующему домене, что позволяло на DNS-сервере собирать информацию об успешных операциях.

e83ee4d8180f.png

Компания Microsoft опубликовала рекомендации по защите сборочных систем от атак на зависимости:

• В PyPI рекомендуется использовать опцию index-url для переопределения приоритета обработки зависимостей.

• В NuGet в nuget.config в секции packageSources рекомендуется использовать запись <clear /> для удаления наследуемых конфигураций и явно добавлять приватные репозитории через запись <add />.

• В Maven рекомендуется настроить одно общее зеркало при помощи опций <mirrorOf>*</mirrorOf> и перенаправлять в него все запросы к репозиториям. Другим вариантом является переопределение репозиториев по умолчанию при помощи настройки <releases>.

• В NPM и Yarn в пакетах рекомендуется определить scopeprefix для привязки репозитория к каждому пакету (возможна привязка только одного репозитория).


• Source: https://medium.com/@alex.birsan/dependency-confusion-4a5d60fec610

• Source: https://azure.microsoft.com/mediaha...k When Using Private Package Feeds - v1.0.pdf
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх