LINUX.ORG.RU
ФорумTalks

Смузихлебная закачка зависимостей - дыры by design

 , ,


0

1

Никогда не было и вот опять. https://www.opennet.ru/opennews/art.shtml?num=58416

Для совершения вредоносных действий атакующие воспользовались методом подмены зависимостей и загрузили в репозиторий PyPI пакет torchtriton, имеющий то же имя, что и пакет, размещённый в собственном репозитории PyTorch-nightly. Метод основан на том, что при использовании дополнительных репозиториев пакетный менеджер pip пытается загрузить внутренние зависимости и из публичных репозиториев, учитывая номер версии. Таким образом, при установке ночных сборок PyTorch пакетный менеджер pip обнаруживал более новый пакет torchtriton в репозитории PyPI и устанавливал его, вместо одноимённого пакета из репозитория PyTorch-nightly.

В опубликованную атакующими версию 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 был пакет torchtriton, необходимый для ее работы. С ним все нормально. Злоумышленники же загрузили в другой репозиторий - в PyPI, вредоносный вариант этого torchtriton. А менеджер установки софта радостно обнаружил более новую версию и загрузил ее сразу.

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

★★★★★

Ещё аргумент в пользу песочниц.

thunar ★★★★★
()
Ответ на: комментарий от bo4ok

Формально еще в прошлом. Это новость опубликована в этом.

praseodim ★★★★★
() автор топика

Это питон-то новый и молодежный?
По сабжу: мамкиных машинных учителей по видеокурсам совершенно не жалко.

thesis ★★★★★
()
Ответ на: комментарий от thesis

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

Даже не из соображений безопасности, а ради контроля своего окружения.

praseodim ★★★★★
() автор топика
Последнее исправление: praseodim (всего исправлений: 1)
Ответ на: комментарий от praseodim

Для rust я пришёл к следующему - фиксирую версию компилятора и скачанные зависимости в виде docker-образа, использую его для сборки и разработки с кросскомпиляцией c linux-x86_64 на винду и на linux-arm.

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

Но если захочется собрать под платформу на которую нет кросскомпиляции с linux - будет туго.

GPFault ★★
()

А менеджер установки софта радостно обнаружил более новую версию и загрузил ее сразу

Это не к пистону претензии, а к гениям инфраструктуры. Сейчас же каждый второй админ после 3х-месячных курсов повышения квалификации уже девопсом себя считает. А в нормальных компаниях всегда есть локальный контур, от обновлений ОС до репозиториев пакетов.

Это уже не первый случай компрометации

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

Lordwind ★★★★★
()
Ответ на: комментарий от praseodim
Матчасть не читай
@
Коменты кидай

Впрочем эта предьява справедлива не только к твоему коментарию про раст, но и про питон. Тут бага конкретно в pytorch

Aswed ★★★★★
()
Ответ на: комментарий от Aswed

Формально это не так про rust. И питон действительно не причем. Но бага не просто конкретно в pytorch, она вообще в подходе к созданию экосистемы разработки. Но все же в C/C++ как-то традиции такие, что сложнее себе представить автоматическое постоянное скачивание новых модулей посвежее.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от praseodim

Но все же в C/C++ как-то традиции такие, что сложнее себе представить автоматическое постоянное скачивание новых модулей посвежее.

Современные системы сборки устранили этот недостаток. Недавно хотел поэксперементировать с litehtml, склонировал репу, запустил cmake и он молча начал скачивать googletest.

DrBrown
()

PyTorch-nightly.

ну и что от этих смузихлебов ждать, этот мл(так же как и блокчейн в своё время) привлёк шоблу идиотов. Что еще ожидать то?

ggrn ★★★★★
()

Все правильно. За установку второго и более пакетных менеджеров безопасники должны бить по рукам =D

t184256 ★★★★★
()

Цифровые подписи должны решать большую часть проблем. А менеджер пакетов должен в таком случае проверять что в разных репах подпись одинакова.

rekket
()
Ответ на: комментарий от rekket

Цифровые подписи должны
А менеджер пакетов должен
должны
должен

Ну-ну

anc ★★★★★
()
Ответ на: комментарий от praseodim

Согласен, указание зависимостей >= это рак

Aswed ★★★★★
()
Ответ на: комментарий от praseodim

Но тут вообще проблема в другом. Авторы pytorch завязались на какую-то либу, которой нет в pip, при этом они не потрудились, сделать так, что бы pytorch выкачивал ее откуда нужно. Какую найдет, такую и стянет. Вот чел и заэксплойтил очевидную уязвимость. Если бы хотя бы нужная либа изначально была в pip, то злоумышленнику было бы как минимум сложнее залить обновление версии с подменой. Тут налицо именно полное наплевательство на безопасность со стороны разрабов pytorch

Aswed ★★★★★
()

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

Когда я собираю мавеном проект на Spring или просто проект на Go, я офигеваю от того, сколько зависимостей он тянет кучей с удаленных сервисов. И если второй делает это с GitHub (то есть при желании код можно посмотреть, а вытягиваемую версию зафиксировать по коммиту, например), то первый тянет с мавен-централа, куда может залить кто угодно и что угодно.

Если вдуматься — волосы дыбом встают от того, какая это ДЫРА в безопасности.

Но сейчас так модно, стильно и молодежно…

Очень зацепили на эту тему слова @Croco в интервью Бороде, где он рассказывал про его видение ситуации с выполнением тонн чужого JS-кода, рандомно выкачиваемого с интернета.

Zhbert ★★★★★
()
Ответ на: комментарий от Aswed

Авторы pytorch завязались на какую-то либу, которой нет в pip, при этом они не потрудились, сделать так, что бы pytorch выкачивал ее откуда нужно.

Если я правильно понял, это их же либа, которую они не стали класть в pip. Может просто в голову не пришло.

praseodim ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

Очень зацепили на эту тему слова Croco в интервью Бороде, где он рассказывал про его видение ситуации с выполнением тонн чужого JS-кода, рандомно выкачиваемого с интернета.

Что за интервью не могу вспомнить?

praseodim ★★★★★
() автор топика
Ответ на: комментарий от Zhbert

А, вспомнил, было. Просто для меня Борода ассоциируется или со Столлманом (которые ее сбрил, хе-хе) или с PRO Hi-tech https://www.youtube.com/@prohitec

praseodim ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)