PyTorch разоблачил вредоносную цепочку зависимостей

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

pypi


PyTorch обнаружил вредоносную зависимость с тем же именем, что и у библиотеки torchtriton во фреймворке. Это привело к успешной компрометации через вектор атаки путаницы зависимостей. Подробности — к старту нашего курса «Белый хакер».


Администрация PyTorch предупреждает пользователей, которые установили PyTorch-nightly в праздничные дни, о том, что нужно удалить фреймворк и его поддельную зависимость torchtriton.


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


Вредоносная torchtriton нацелена на пользователей PyTorch-nightly


Как предупреждает команда PyTorch, пользователи, установившие PyTorch-nightly с 25 по 30 декабря 2022 года должны убедиться, что их системы не скомпрометированы.


Предупреждение последовало после появления зависимости torchtriton в праздничные дни в реестре Python Package Index (PyPI) — официальном репозитории стороннего ПО для Python.


«Пожалуйста, немедленно удалите его [PyTorch] и torchtriton, используйте последние бинарники nightly, новее 30 декабря 2022 года», — советует команда PyTorch.

Вредоносная зависимость PyTorch от PyPI


Вредоносная torchtriton на PyPI названа как официальная библиотека, опубликованная в репозитории PyTorch-nightly. При извлечении зависимостей экосистемы Python приоритет PyPI выше, поэтому скачивается вредоносный, а не штатный пакет PyTorch.


«Поскольку PyPI index имеет приоритет, этот вредоносный пакет устанавливался вместо версии из нашего официального репозитория. Такой дизайн позволяет любому человеку зарегистрировать пакет с тем же именем, что и существующий в индексе третьей стороны, и pip установит свою версию по умолчанию», — пишет команда PyTorch во вчерашнем посте с раскрытием уязвимости.


На момент написания [этого материала] BleepingComputer показал, что за прошедшую неделю [с 25 по 31 декабря] число скачиваний вредоносной зависимости torchtriton превысило 2300.


Этот тип атак через цепочки поставок известен как «путаница зависимостей». Впервые о путанице зависимостей сообщил в 2021 году BleepingComputer, когда этот вектор атаки популяризовал белый хакер Алекс Бирсон.


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


Хакер крадёт конфиденциальные данные, заявляя о соотсветствующем этике исследовании


Вредоносный torchtriton не только исследует систему в поисках основных идентификационных сведений (например, IP-адреса, имени пользователя, текущего рабочего каталога), но и крадёт конфиденциальные данные:


  • Получает системную информацию:
    • сервера имён из /etc/resolv.conf;
    • имя хоста из gethostname();
    • текущее имя пользователя из getlogin();
    • имя текущего рабочего каталога из getcwd();
    • переменные окружения.
       
  • Читает следующие файлы:
    • /etc/hosts;
    • /etc/passwd;
    • Первую 1000 файлов в $HOME/*;
    • $HOME/.gitconfig;
    • $HOME/.ssh/*.

Затем он загружает все эти данные, в том числе содержимое файла, на домен h4ck.cfd.


Команда PyTorch объясняет, что вредоносный бинарник triton в поддельном torchtriton, выполняется, только когда пользователь импортирует triton в свою сборку. Это требует явного кода, то есть не является поведением PyTorch по умолчанию.


Уведомление на домене h4ck.cfd подразумевает, что вся операция является этическим анализом (ethical research), но анализ однозначно указывает на обратное.


«Здравствуйте, если вы наткнулись на это в своих логах, вероятно, это связано с тем, что ваш Python был неправильно сконфигурирован и был уязвим к атаке путаницы зависимостей. Для идентификации уязвимых компаний скрипт отправляет мне метаданные о хосте (такие как имя хоста и текущий рабочий каталог). После того как я определил, кто оказался уязвим, и [сообщил] о найденном, все метаданные о вашем сервере будут удалены».

Вопреки приведённой формулировке бинарный файл собирает не только «метаданные», но и упомянутые выше секретные сведения, включая SSH-ключи и файлы gitconfighosts и passwd, а также содержимое 1000 файлов из каталога HOME.


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


Мы заметили, что, в отличие от нескольких исследовательских пакетов и PoC-эксплойтов, которые бросаются в глаза из-за своих целей и поведения, torchtriton во избежание обнаружения использует известные технологии anti-VM. Что важнее, «полезные данные» вредоноса замаскированы и содержатся исключительно в двоичном виде, например, в файлах Linux ELF. Это выделяет библиотеку на фоне "белых" эксплойтов путаницы зависимостей прошлого доставлялись в виде простого текста.


Мы заметили, что экземпляр читает .bash_history (список команд и ввода пользователя в терминал, а это — ещё один признак вредоносного ПО.


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


В середине 2022 года весьма популярные библиотеки Python и PHP — ctx и PHPass соответственно — были компрометированы и изменены для кражи ключей AWS. Позднее исследователь, стоящий за атакой, заявил, что атака была исследованием, соответствующем этике.


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


Ниже — полный текст заявления. Его мы получили от владельца домена, который, по-видимому, также связан с доменом wheezy.io.


Обратите внимание, что упоминание «Facebook» (эта организация в России признана экстремистской и запрещена) ниже уместно с учётом концепции PyTorch в Meta AI (Meta также признана экстремистской и запрещена в России). 


«Привет, я — человек, который заявил права на пакет torchtriton на PyPi. Обратите внимание, что он не был задуман как вредоносный!

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

Я признаю свою вину и приношу свои извинения. В то же время я хочу заверить, что в мои намерения не входила кража чьих-то секретов. Я уже сообщил об этой уязвимости в Facebook 29 декабря (почти за три дня до объявления), после того, как убедился, что уязвимость действительно существует. Я также сделал многочисленные сообщения другим компаниям, которые пострадали от этой уязвимости, через свои программы HackerOne. Если бы у меня был злой умысел, я бы не стал заполнять отчёты баг-баунти, а просто продал бы данные тому, кто предложит самую высокую цену.

Ещё раз приношу свои извинения за любую дестабилизацию и заверяю, что все полученные мной данные удалены.

Кстати, в своём сообщении об ошибке на Facebook я уже предложил передать им пакет PyPi, но пока не получил от них никакого ответа».

Ответные меры


Команда PyTorch переименовала зависимость torchtriton в 'pytorch-triton' и зарезервировала на PyPI пакет-заглушку во избежание подобных атак. Группа стремится заявить о правах собственности на существующий torchtriton на PyPI, чтобы обезвредить текущую атаку.


PyTorch переименовывает зависимость во избежание дальнейших атак


PyTorch переименовывает зависимость во избежание дальнейших атак


Для удаления цепочки вредоносных зависимостей пользователям следует выполнить команды:


$ pip3 uninstall -y torch torchvision torchaudio torchtriton
$ pip3 cache purge

Запуск следующей команды приведёт к поиску вредоносного бинарного кода и покажет, подверглись ли вы атаке:


python3 -c "import pathlib;import importlib.util;s=importlib.util.find_spec('triton');
affected=any(x.name == 'triton' for x in (pathlib.Path(s.submodule_search_locations[0] 
if s is not None else '/' ) / 'runtime').glob('*'));
print('You are {}affected'.format('' if affected else 'not '))"

Хэш SHA256 ELF-бинарника "triton": 2385b29489cd9e35f92c072780f903ae2e517ed422eae67246ae50a5cc738a0e.


А мы научим вас аккуратно работать с данными, чтобы вы прокачали карьеру и стали востребованным IT-специалистом. Скидка до 50% по промокоду HABR — новогодняя акция.



  • Профессия «Белый хакер»
  • Профессия Fullstack-разработчик на Python (16 месяцев)

Краткий каталог курсов

Data Science и Machine Learning


  • Профессия Data Scientist
  • Профессия Data Analyst
  • Курс «Математика для Data Science»
  • Курс «Математика и Machine Learning для Data Science»
  • Курс по Data Engineering
  • Курс «Machine Learning и Deep Learning»
  • Курс по Machine Learning

Python, веб-разработка


  • Профессия Fullstack-разработчик на Python
  • Курс «Python для веб-разработки»
  • Профессия Frontend-разработчик
  • Профессия Веб-разработчик

Мобильная разработка


  • Профессия iOS-разработчик
  • Профессия Android-разработчик

Java и C#


  • Профессия Java-разработчик
  • Профессия QA-инженер на JAVA
  • Профессия C#-разработчик
  • Профессия Разработчик игр на Unity

От основ — в глубину


  • Курс «Алгоритмы и структуры данных»
  • Профессия C++ разработчик
  • Профессия «Белый хакер»

А также


  • Курс по DevOps
  • Все курсы
Источник: https://habr.com/ru/company/skillfactory/blog/709914/


Интересные статьи

Интересные статьи

Один из ключевых сценариев работы в CRM это общение с клиентом в удобном для него канале. По почте, по телефону, по SMS или в мессенджере. Особенно выделяется WhatsApp — интеграцию с ...
Вы можете использовать это руководство для различных целей: Чтобы понять, что такое Spring Framework Как работают ее основные фичи: такие как внедрение зависимостей или Web MVC Это также и...
Те, кто собираются открывать интернет-магазин, предварительно начитавшись в интернете о важности уникального контента, о фильтрах, накладываемых поисковиками за копирование материалов с других ресурсо...
Вот бывает же в жизни такое. Сидишь себе не шалишь, никого не трогаешь, починяешь примус, а тут из этого примуса, из телевизора, да и вообще из каждого утюга, до тебя доносится: «нейронные сети, ...
Если у вас есть интернет-магазин и вы принимаете платежи через Интернет, то с 01 июля 2017 года у вас есть онлайн-касса.