Популярность npm-пакета '-' продолжает расти

q8f-yjs8z3k8lg0hrv0qalmxnpq.png

В августе 2021 года внимание сообщества привлёк странный однобуквенный пакет '-' («минус»), у которого было более 700 000 скачиваний и 56 входящих зависимостей, то есть на тот момент 56 других пакетов зависели от «минуса».

Особую загадочность делу придавал тот факт, что пакет был по сути пустой и не содержал ничего, кроме шаблонных конструкций (название, номер версии и т. д.).

За прошедшее время популярность «минуса» значительно выросла. На 11 марта 2022 года (16:00) от него зависят уже 185 пакетов.
Пакет «минус» разработан в начале 2020 года. С тех пор вышла только единственная версия 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 без функционального кода.

96rwmysths9hmvaciq_qepxxwue.png

Количество скачиваний с прошлого года постепенно растёт и на сегодняшний день стабильно превышает 23 000 в неделю.

Скорее всего, популярность пакета объясняется опечаткой у десятков тысяч разработчиков — лишним пробелом после минуса в стандартной команде установки:

npm i -someFlag somepackage


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

Автор пакета Дмитрий Паржицкий грамотно занял выгодное имя, которое будет в любых условиях генерировать трафик — гарантированное количество установок пакета. Сам он рассматривает это как своеобразный эксперимент (PoC), который доказывает существование потенциальной уязвимости в пакетном менеджере NPM.

В будущем Дмитрий планирует изменить функциональность своего пакета, чтобы он выводил сообщение об ошибке в том случае, если кто-то пытается его установить вместе с другими однобуквенными пакетами типа D, g, s.

Это напоминает тайпосквоттинг 90-х годов, когда мошенники регистрировали доменные имена с опечаткой в названии (gogle.com, yandeks.ru и т. д.) и получали гарантированный поток посетителей, делающих ошибки в наборе URL.

В случае с пакетами NPM существует реальная угроза, что пользователь может по ошибке установить ненужный пакет с произвольным кодом — и не заметить этого. А в таком однобуквенном пакете автор может написать что угодно.

Сейчас довольно распространённой является практика перепродажи опенсорсных проектов с большой аудиторией. Новый владелец пакета может выпустить новую версию с произвольным содержанием. Например, с ботнетом или криптомайнером. За примерами не нужно далеко ходить: 1, 2, 3. Пакет «минус» с 23 тыс. скачиваний в неделю уже представляет определённый коммерческий интерес.

Для разработчиков сквоттинг названий пакетов NPM с опечатками — определённая бизнес-возможность, которой некоторые не преминут воспользоваться.

© Habrahabr.ru