Написать пост

Обнаружен метод исполнения вредоносного кода при установке Python-пакетов

Аватар Екатерина Никитина

Злоумышленник может заразить конфигурационный файл, используемый для установки Python-пакетов. Малварь активируется при вызове pip install.

Обложка поста Обнаружен метод исполнения вредоносного кода при установке Python-пакетов

Пользователь GitHub под ником mschwager опубликовал PoC-код заражения системы малварью, которая активируется во время установки Python-пакетов. Она действует через конфигурационный файл setup.py и в итоге получает root-права.

Как происходит заражение?

Для установки пакетов разработчики используют менеджер pip, который обращается к конфигурационному файлу setup.py. Чтобы проиллюстрировать атаку, mschwager создал Python-пакет 0wned. Тот обращается к модулю setuptools конфигурационного файла и прописывает в нем собственный класс PostInstallCommand, способный исполнять любой код с правами администратора или суперпользователя.

			from setuptools import setup
from setuptools.command.install import install

class PostInstallCommand(install):
    def run(self):
        # Insert code here
        install.run(self)

setup(
    ...
    cmdclass={
        'install': PostInstallCommand,
    },
    ...
)
		

При запуске команды pip install активируется и пользовательский класс PostInstallCommand, который содержит вредоносный код.

Как пояснил Bleeping Computer со ссылкой на эксперта под ником Tigzy, разработчики проверяют подключаемые модули, но на конфигурационный файл редко обращают внимание. Это позволяет злоумышленнику атаковать устройство, при этом не подменяя сам модуль.

Как защититься?

  • Устанавливать Python-пакеты с флагом --user, чтобы в случае заражения малварь не получила права администратора.
  • Использовать флаг --require-hashes, чтобы исключить удаленную подмену пакетов.
  • Проверять название пакета, поскольку вредоносное ПО часто маскируется под популярные модули (к примеру, urlib вместо легитимного urllib).

Python — высокоуровневый язык программирования, который появился в начале 90-х. В 2018 году он вошел в тройку самых популярных среди разработчиков, обогнав C++, хотя эксперты TIOBE считают, что у него есть все шансы занять первую строчку. По их мнению, Python легок в изучении и развертывании приложений, однако и он не лишен уязвимостей. В июле 2018 года команда GitHub запустила автоматическую проверку Python-проектов на бреши, и тот почти сразу выявил несколько новых.

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий2К показов