Разработки фреймворка машинного обучения PyTorch предупредили пользователей о выявлении подстановки вредоносной зависимости, выполняемой при использовании пакета с ночными сборками проекта. Проблема затрагивает только пакет PyTorch-nightly, пакеты со стабильными выпусками не пострадали. Вредоносная зависимость распространялась с 25 по 30 декабря 2022 года и была нацелена на компрометацию Linux-систем разработчиков, использующих тестовые сборки PyTorch.
Для совершения вредоносных действий атакующие воспользовались методом подмены зависимостей и загрузили в репозиторий PyPI пакет torchtriton, имеющий то же имя, что и пакет, размещённый в собственном репозитории PyTorch и задействованный в пакете PyTorch-nightly. Суть метода в том, что пакетный менеджер pip пытается загрузить внутренние зависимости из публичных репозиториев и если пакет найден в репозитории PyPI, то использует его, когда у пакета более новый номер версии. Таким образом, при установке
PyTorch-nightly пакетный менеджер pip обнаруживал более новый пакет torchtriton в репозитории PyPI и устанавливал его вместо одноимённого пакета из репозитория PyTorch.
В опубликованную атакующими версию torchtriton был добавлен код для запуска исполняемого файла (“PYTHON_SITE_PACKAGES/triton/runtime/triton”), который осуществлял поиск и отправку конфиденциальных данных с систем, работающих под управлением Linux. Среди прочего злоумышленникам отправлялась информация о системе (/etc/resolv.conf, /etc/hosts, /etc/passwd, переменные окружения, данные об учётной записи), а также содержимое $HOME/.gitconfig, $HOME/.ssh/* и первых 1000 файлов в домашнем каталоге, размером менее 100 КБ. Данные передавались через туннель, организованный поверх DNS (отправлялись шифрованные DNS-запросы к DNS-серверу атакующих).
Разработчикам, которые устанавливали PyTorch-nightly или torchtriton с 25 по 30 декабря 2022 года, рекомендуется проверить своё окружение на предмет вредоносной активности. Проблему сглаживает то, что вредоносный код запускался только при импорте пакета triton, что не является поведением PyTorch по умолчанию и требует использования определённого кода. Для проверки наличия вредоносного пакета torchtriton можно использовать следующую команду: