Orca Security - Захват аккаунта CTX и взлом PHPass.

26 декабря 2022 г. 14:05
 417

Опасная атака осуществляется путем захвата пакета, выдавая себя за автора.

 

Автор: Лидор Бен Шитрит

Введение.

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

Векторы атак на цепочку поставок для различных пакетов, таких как NPM или Python PyPi, имеют различные формы и виды, например, путаница зависимостей. Среди этих векторов простая, но опасная атака осуществляется путем захвата пакета, выдавая себя за автора или сопровождающего в профиле Github.

Недавно был продемонстрирован именно такой случай, когда модули Python CTX и PHP PHPass были взломаны в Python Package Index (он же PyPi или Cheese Shop), официальном репозитории стороннего программного обеспечения для Python.

PyPi - это репозиторий программного обеспечения для языка программирования Python с открытым исходным кодом, размещенным на Github. PyPi помогает пользователям находить и устанавливать программное обеспечение, разработанное и распространяемое сообществом Python. Недавний взлом, который был совершен с большой легкостью, в результате чего были извлечены переменные окружения пользователей и учетные данные AWS, затронул миллионы пользователей по всему миру.

Читайте далее о том, что произошло, а также о мерах по исправлению ситуации, которые необходимо предпринять сейчас, от компании Orca Research Pod.

Что произошло со взломом Python CTX на GitHub?

После почти 8 лет бездействия, в конце мая 2022 года модуль Python CTX получил неожиданное обновление.

Неожиданное обновление, которое, как потом выяснилось, было кибератакой, на самом деле представляло собой несколько строк вредоносного кода, которые в конечном итоге отвечали за отправку всех переменных окружения пользователя на удаленный сервер.

 

Рис. 1: Страница модуля Python CTX на Github показывает, что его последнее обновление было почти 8 лет назад.

 

Сообщество начало следить за этой историей после обновления на Reddit от исследователя под ником Sockpuppets. Сообщение было озаглавлено CTX New Version Released After 7 years (=750K Install), и с тех пор было удалено.

 

Рис. 2: Оригинальное сообщение Sockpuppets, ныне удаленное, рекламировало взломанное обновление среди пользователей Reddit.

 

Пост не сразу стал трендом на Reddit, пользователи писали о своем замешательстве по поводу предполагаемого «обновления». Несколько часов спустя они спросили: «Чего я не понимаю, так это того, что в репозитории Github отображается «нет обновлений» за последние 8 лет».

Один из пользователей Reddit предупредил других более подробным сообщением о сомнительных открытиях и последствиях, указывающих на компрометацию PyPi.

 

Рис. 3: u/jimtk предупредил пользователей Reddit о компрометации пакета CTX на PyPi

Обзор вредоносного содержимого.

Проблема кроется в коде Python в содержимом пакета, что позволяет злоумышленнику получить переменные окружения пользователя, такие как AWS, которые затем кодируются и отправляются на конечную точку, удаленно контролируемую злоумышленником.

Давайте рассмотрим, как работает эксплойт.

  • Сначала злоумышленник создает пустую переменную, которая будет заполнена пользовательскими ENV.
  • Через модуль OS python атакующий использует команду «environ», чтобы вернуть словарь, представляющий переменные окружения пользователей.
  • Затем злоумышленник вводит последовательность команд, которые кодируют полную строку переменных окружения через base64.
  • Затем злоумышленник может отправить закодированную строку ENV на удаленную конечную точку Heroku, которую он контролирует.

 

Рис. 4: Код Python, демонстрирующий эксплойт пакета CTX.

 

Атакующий использовал модуль OS, который предоставляет функции для взаимодействия с операционной системой, чтобы получить переменные ENV (такие как чувствительные внутренние конечные точки API, ключи и секреты AWS и т.д.) и отправить их на удаленный сервер. Это классический сценарий, когда злоумышленник просто переправляет конфиденциальные данные на контролируемый удаленный узел, как показано выше.

Поскольку мы уже обсуждали путаницу зависимостей в пакетах NPM, мы не будем рассматривать пакеты NPM, а рассмотрим путаницу зависимостей с использованием пакетов Python PyPi.

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

 

Рис. 5: Диаграмма, представляющая захват пакета PyPi с помощью перехвата учетной записи.

 

В нашем случае модуль CTX зарегистрирован под адресом электронной почты [email protected]. Sockpuppets, исследователь, заметил, что срок действия домена истек - поэтому он просто купил домен и создал вышеуказанный email.

 

Рис. 6: Запрос протокола whois для просмотра последних изменений в домене figlief.com.

 

Используя Whois для поиска домена, мы видим, что он был зарегистрирован 14 мая 2022 года, вскоре после того, как исследователь решил завладеть пакетом.

После этого все, что оставалось сделать Sockpuppets - это использовать PyPi password-reset, чтобы сбросить пароль и захватить учетную запись.

 

Рис. 7: Успешный сброс пароля был подтвержден по электронной почте.

Цель управления Python CTX достигнута.

Вот и все. Теперь у злоумышленника есть полный контроль над модулем Python CTX, который потенциально может повлиять на миллионы людей.

Следующим шагом будет изменение версии пакета, так что в следующий раз, когда случайный пользователь установит пакет через pip install ctx, на хост будет установлен вредоносный пакет.

Последствия Python CTX и руководство по устранению.

По оценкам команды PyPi, в общей сложности с PyPi было загружено 27 000 вредоносных версий этого проекта, причем большинство "избыточных" загрузок было произведено с зеркал.

В ответ на подтверждение вредоносной природы всех файлов релиза, администратор PyPi предпринял шаги по управлению риском воздействия на дополнительных пользователей путем:

  • Удаление проекта, всех релизов и всех файлов релизов из индекса.
  • Запрет повторной регистрации имени CTX без вмешательства администратора.
  • Заморозку взломанной учетной записи владельца.

 

Затронутые версии Python CTX: CTX версий 0.2.2 и 0.2.6 (Python).

Угон PHP PHPass.

Аналогично управлению пакетами Python через PyPi, управление пакетами PHP осуществляется через Composer. Используя ту же технику, о которой говорилось выше, исследователь смог определить популярный пакет PHPass как уязвимый, поскольку профиль его сопровождающего на Github не существует.

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

 

Рис. 8: Вредоносный пакет PHPass под учетной записью hautelook.

 

Как и в случае с Python CTX, вредоносный код был добавлен в пакет PHPass - как показано ниже.

 

Рис. 9: Вредоносный PHP-код, который был внесен в пакет PHPass.

 

На этот раз вместо получения всех переменных окружения исследователь сосредоточился на учетных данных AWS, передав AWS_ACCESS_KEY и AWS_SECRET_KEY обратно на удаленную конечную точку Heroku. К счастью, PHP-пакет, полученный из взломанного репозитория hautelook/phpass, не использовался в последние месяцы. Вместо этого, еще до публикации вредоносного кода, пакет для форкнутого репозитория bordoni/phpass начал использоваться в основном разработчиками.

 

Затронутые версии PHPass.

Версии Phpass неизвестны (PHP). Маловероятно, что затронуто более нескольких десятков пользователей из-за небольшого количества загрузок.

 

Лучшие практики предотвращения перехвата учетных данных.

Orca Research Pod рекомендует следующее для защиты и обороны от любых рисков, связанных с этим типом компрометации:

  • Всем пользователям PyPi - особенно сопровождающим проектов - рекомендуется внедрить многофакторную аутентификацию (MFA) на своих учетных записях PyPi, согласно команде PyPi.
  • Используйте режим проверки хэша и привязку версии для полного предотвращения атаки Python CTX, которая основана на автоматическом обновлении до последней доступной версии PyPi во время установки.
  • Запустите сканирование уязвимостей для PHPass Affected Versions.

Повышение прозрачности облака с помощью унифицированной платформы облачной безопасности.

Поскольку за последние годы появились уязвимости нулевого дня и новые облачные TTP, сильная программа управления уязвимостями может помочь вашей команде быстро справиться с наиболее критическими облачными рисками. Непрерывное сканирование мультиоблачных сред Orca обеспечивает глубокое сканирование на предмет уязвимостей и рисков, которые могут повлиять на вашу организацию. Все задействованные команды - операционная служба безопасности, DevSecOps, разработчики и служба комплаенс - могут воспользоваться преимуществами единого подхода единой платформы облачной безопасности, которая обеспечивает беспрепятственную видимость всей облачной среды, а также круглосуточное проактивное сканирование на предмет уязвимостей и индикаторов компрометации, таких как боковое перемещение.

Готовы узнать, что такое неограниченная видимость облака? Orca Security предоставляет 30-дневную бесплатную пробную версию, включающую дополнительную оценку облачных рисков, которую можно использовать для выявления и определения приоритетов устранения наиболее важных облачных рисков.

 

Источник: https://orca.security

Системы Информационной Безопасности