Установка Python-пакетов может спровоцировать запуск вредоносного кода

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

Специалист разработал метод атаки, эксплуатирующий файл setup.py в модулях Python для запуска кода при установке пакета. Используя данный метод, атакующий может разместить в пакете вредоносный код, исполняемый с привилегиями суперпользователя, хотя не всем пактам необходим столь высокий уровень разрешений. В подтверждение теории mschwager разработал PoC-код, который опубликовал на GitHub.

Обычно модули Python устанавливаются с помощью менеджера пакетов pip, запускающего конфигурационный файл setup.py. Как правило, данному файлу уделяется мало внимания, поскольку он нужен только для добавления модуля. В связи с этим пользователи менее склонны анализировать конфигурационный файл, что предоставляет злоумышленнику легкую возможность инфицировать устройства без модификации модуля, пояснил в интервью ресурсу BleepingComputer аналитик Malwarebytes, известный в Сети как Tigzy.

Более того, код в пакетах Python может никогда не выполниться, если приложению не нужен данный функционал. Однако внедрение вредоносного кода в setup.py позволит злоумышленнику незаметно установить вредоносное ПО, невзирая, используется Python-пакет или нет.

Случаи внедрения вредоносных библиотек Python в каталоги нередки. К примеру, осенью минувшего года в хранилище пакетов PyPI были выявлены десять вредоносных библиотек. Для их загрузки злоумышленики применили метод, известный как тайпсквоттинг, то есть использовали имена, схожие с названиями легитимных пакетов, но с «опечаткой», например, «urlib» вместо «urllib»

Источник: https://www.securitylab.ru/news/495455.php