В каталоге Python-пакетов PyPI выявлено 10 вредоносных библиотек
Распространяющие вредоносные пакеты злоумышленники рассчитывают на невнимательность разработчиков, которые по недосмотру устанавливают фиктивные пакеты (например, более логичным выглядит поставить urllib и bzip вместо настоящих urllib3 и bzip2). Периодически после жалоб пользователей вредоносные пакеты вычищаются из PyPI, но затем добавляются вновь. Выявленная порция вредоносных пакетов была помещена в PyPI в июне и за несколько месяцев данные модули по ошибке были задействованы в различных новых приложениях.
Вредоносные пакеты включают в себя копию кода оригинальной библиотеки, но отличаются модифицированным установочным скриптом setup.py. В момент установки модуля активируется вредоносная вставка, которая отправляет сведения о подставном пакете, пользователе и хосте на внешний сервер. Например, при установке пакета urllib-1.21.1 пользователем root на хосте testmachine, будет отправлена строка "Y:urllib-1.21.1 root testmachine", которая дополнительно маскируется при помощи операции XOR и кодирования методом base64.
Так как по сути выполняется лишь накопление статистики и модификации пакетов относительно безобидны можно предположить, что умысел в добавлении подобных модулей заключается в определении числа возможных жертв, изучении реакции администрации или демонстрации проблем в организации работы каталога PyPI, в котором отсутствует проверка по цифровой подписи и должным образом не налажен процесс рецензирования новых модулей и оценки их качества.
Список подставных модулей:
- acqusition (загружен 2017-06-03 01:58:01, подражает acquisition)
- apidev-coop (загружен 2017-06-03 05:16:08, подражает apidev-coop_cms)
- bzip (загружен 2017-06-04 07:08:05, подражает bz2file)
- crypt (загружен 2017-06-03 08:03:14, подражает crypto)
- django-server (загружен 2017-06-02 08:22:23, подражает django-server-guardian-api)
- pwd (загружен 2017-06-02 13:12:33, подражает pwdhash)
- setup-tools (загружен 2017-06-02 08:54:44, подражает setuptools)
- telnet (загружен 2017-06-02 15:35:05, подражает telnetsrvlib)
- urlib3 (загружен 2017-06-02 07:09:29, подражает urllib3)
- urllib (загружен 2017-06-02 07:03:37, подражает urllib3)
Для проверки наличия данных пакетов можно воспользоваться командой:
pip list --format=legacy | egrep '^(acqusition|apidev-coop|bzip|crypt|django-server|pwd|setup-tools|telnet|urlib3|urllib) '
После отправки уведомления администраторам PyPI выявленные модули были немедленно удалены. Уже установленные пользователями пакеты требуют ручного удаления. При этом должных мер по предотвращению появления подобных вредоносных моделей в PyPI не принято. Например, уже после уведомления энтузиасты легко смогли разместить фиктивный модуль urllib2, который находится в PyPI и в настоящий момент. Кроме urllib2 было размещено ещё 20 пакетов с именами подобными random, codecs, smtplib и т.п. В итоге, только для одного urllib2 зафиксировано 1144 попыток установки за день. Всего 20 подставных модулей за несколько дней попытались установить 6861 раз. Подобная статистика в целом близка к результатам, полученным в результате прошлогоднего эксперимента по тайпсквотингу в PyPI.
Источник: http://www.opennet.ru/opennews/art.shtml?num=47211
|
0 | Tweet | Нравится |
|