Эксперты Bleeping Computer обнаружили, что у пустого пакета npm «-» более 700 тысяч загрузок. Причем их количество все время возрастает с каждым днем. Вероятно, разработчики и пользователи его случайно устанавливают, когда ставят лишний пробел между «i» и "-" при установке флагов в нужных им пакетах с помощью пакетного менеджера npm.

Разработчик пустого пакета Дмитрий Паржицкий опубликовал его в реестре npm под версией 0.0.1 в тестовых целях год назад. Пакет не содержит функционального кода и не обновлялся после создания. Пакет содержит три файла:
tar tvf 0.0.1 / - 0.0.1.tgz
package/dist/index.js
package/package.json
package/README.md

Внутри файлов манифеста package.json и index.js в основном нет ничего интересного, только скелетный код.


Состав файл index.js и файла манифеста (package.json). Манифест включает в себя множество зависимостей разработки (devDependencies) и вызывает некоторые команды для компонента «ts-node», но это все. На данный момент это практически мертвый код.

В настоящее время пакет "-" используется (служит зависимостью) в 56 пакетах npm без понятного объяснения. У большинства из этих пакетов не более нескольких десятков загрузок в неделю.

Bleeping Computer считает, что, вероятно, пакет очень часто устанавливается случайно, когда кто-то запускает команды npm с терминала и допускает типографические ошибки. Например, в строке вместо «npm i somepackage» при расширенной установке пользователи пишут «npm i — someFlag somepackage». Эта опечатка приводит к тысячам установок пакета "-".

Вдобавок пакет может попасть по ошибке в качестве зависимости в файл package.json при его конфигурировании вручную пользователем.

Эксперты Bleeping Computer обнаружили в реестре npm другие аналогичные пакеты — i, g, install, D, и s. У них тоже тысячи загрузок в сутки и часть из них могли быть сделаны из-за опечаток при написании определенных параметров и ключей при установке нужных разработчикам пакетов npm.

Разработчик Мэтт Фриланд из Sonatype рассказал Bleeping Computer, что «npm может (и, возможно, должен) запрещать компоненты, имена которых совпадают с именами его команд». Фриланд пояснил, что после установки пакетов npm представляет обобщенное сообщение об успехе, такое как «добавлено 3 пакета и проверено 8 пакетов», вместо того, чтобы печатать точный список установленных пакетов. По его мнению, указание установленных пакетов в сообщении об успешном выполнении дало бы разработчикам шанс на самом деле обнаружить свои ошибки, а сейчас они это не видят.

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

В марте 2020 года пакетный менеджер npm стал частью GitHub, которой владеет Microsoft. Публичный реестр npm после интеграции с GitHub остался доступен и бесплатен.

Комментарии (5)


  1. kolibri
    03.08.2021 16:16
    +39

    Так и вижу в резюме у чувака

    - я написал пакет, который уже загрузили из репозитория более 700 тыс. раз... И число растет....


  1. Drag13
    03.08.2021 16:17
    +12

    Я постоянно ошибался в написании пюпитера, пришлось сделать свой пакет:
    https://github.com/Drag13/puppetter


    Уже 1000+ загрузок


  1. anonymous
    00.00.0000 00:00


  1. DarkWolf13
    03.08.2021 23:26
    +1

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


  1. BugM
    04.08.2021 01:04
    +3

    Есть еще в нашем мире софт который любит пользователей. И понимает что они хотят на самом деле.

    Чтобы выйти из клиента, нажмите Ctrl+D, или наберите вместо запроса одно из: «exit», «quit», «logout», «учше»,«йгше», «дщпщге», «exit;», «quit;», «logout;», «учшеж», «йгшеж», «дщпщгеж», «q», «й», «q», «Q», «:q», «й», «Й»,«Жй»