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

Заражение 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-проектов на бреши, и тот почти сразу выявил несколько новых.

via Bleeping Computer
Source: GitHub-страница

Ещё интересное для вас:
— Биты, байты, Ада Лавлейс — тест на знание околоIT.
— Level Up — события и курсы, на которых можно поднять свой уровень.
— Работа мечты — лучшие IT-вакансии для вас.