Злоумышленникам удалось получить контроль над NPM-пакетом coa и выпустить обновления 2.0.3, 2.0.4, 2.1.1, 2.1.3 и 3.1.3, включающие вредоносные изменения. Пакет coa, предоставляющий функции для разбора аргументов командной строки, насчитывает около 9 млн загрузок в неделю и используется в качестве зависимости у 159 других NPM-пакетов, включая react-scripts и vue/cli-service. Администрация NPM уже удалила выпуск с вредоносными изменениями и заблокировала публикацию новых версий до возвращения доступа к репозиторию основного разработчика...Подробнее: https://www.opennet.me/opennews/art.shtml?num=56104
Шо, опять?
Не опять, а снова!
А зачем так часто качают?
в этом вся смакушка современной разработки на жыэс и тд
>в этом вся смакушка современной разработки на жыэс и тдпочему только JS? на всём, что делает в CI CD "clean build"
проблема больше в дурацких дефолтах гитлаба и подобного, могли бы кешировать по умолчанию.
Потому что дево-псята не парятся с настройкой билдов и для них не проблема выкачать пару сот метров пакетов на каждый CI-чих.
Даже макака научилась использовать кэш пакетов (одна строчка конфига).А ты до сих пор не смог.
Какая? Пойду пропишу
Стабильность - признак качества и зрелости платформы!
Угу. Никогда такого не было, вот вдруг опять.Единственное, что радует - платформа уже научилась оперативно шевелиться и откатывать вредоносов. Теперь бы им еще немного над собой подрасти над верификацией владельцев пакетов и обучить пару нейросеток на выявление подозрительных паттернов поведения и диффов...
А не думали сделать наконец двухфакторную авторизацию в npm репозитории?
Привет Гугл, и тебе хорошего дня !
Даешь уникальную идентификацию по IMEI
Зачем IMEI, если есть универсальная двухфакторная аутентификация U2F?
> Зачем IMEI, если есть универсальная двухфакторная аутентификация U2F?Ну спросите у Гугла, согласен ли он с вами...
Он готов конечно поиграться с секъюрити ключами, но сперва IMEI (ну чтоб к паспорту/номеру соц.страхования, адресу приваязаться) и самое главное - исключительно в целях заботы о нас, - " тупых и грешных"
Не пользуюсь ничем таким у Гугла, для чего есть двухфакторная аутентификация. По-моему, я вообще Гуглом не пользуюсь.
Обычно сервисы поддерживающие двухфакторку просят указать номер телефона чтобы выслать код восстановления в случае потери доступа к средству духфакторной авторизации. Не все, причем, скажем Namecheap позволяет использовать WebAuthn без номера телефона и смс.Это в теории.
Тем не менее как человека живущего в стране где любая шарашка узнав твой номере телефона почему-то считает что получила право заваливать тебя рекламой (дикий случай - один раз в жизни пополнял баланс телефона через банкомат Газпромбанка (не клиент), ТОЧНО не давал никаких согласий ни на что - ГПБ теперь валит мне рекламу кредитов; делаешь заказ в 2 Берега через Деливери? Жди вал рекламных СМС от 2 Берега) меня тоже напрягает излишняя тяга всех кому не лень спрашивать номер телефона.
> Обычно сервисы поддерживающие двухфакторку просят указать номер телефона чтобы выслать
> код восстановления в случае потери доступа к средству духфакторной авторизации. Не
> все, причем, скажем Namecheap позволяет использовать WebAuthn без номера телефона и
> смс.
> Это в теории.namecheap и так уже знает все про клиента, достаточно один раз засветить карту и все, кстатти namecheap один из немногих регистраров у которых апаратные ключи работают как должны.
> меня тоже напрягает излишняя тяга всех кому не лень спрашивать номер
> телефона.Номер телефона - это почти 100% гарантийная идентификация личности, вот они все и лезут под трусы
>> меня тоже напрягает излишняя тяга всех кому не лень спрашивать номер
>> телефона.
> Номер телефона - это почти 100% гарантийная идентификация личности, вот они все
> и лезут под трусыИдентификация И Спам. Вот сейчас в одном магазине в котором порой отовариваюсь меняют дисконтные карты. Ну вернее как меняют, сказали пластиковые просто выкинуть, пойти на сайт, зарегистрировать там кабинет. А регистрация, ес-но, по номеру телефона и СМС только.
С учетом обещанных "удобств" как то "история покупок" и условиям на которые ты подписываешься регистрируясь сразу становится понятно что 1) Вероятно будут стучать покупки в ФНС электронными чеками (онлайн покупки уже давно стучатся, а оффлайн когда как. Вот Магнит уже стучит если карту лояльности предьявить) 2) Будут однозначно продавать БигДату с вашими данными 3) Будут спамить СМС и продавать ваши персональные данные всем кому не леньИ вот подобные кульбиты просто выводят из себя.
> И вот подобные кульбиты просто выводят из себя.И здесь напрашивается старый как мир вопрос: "Что делать?"
Все идет к тому, что толпе все пофигу, им нечего скрывать, и всех под общий шумок загоняют в одно стойло благодаря безразличности людей.
А тренд однако все больше и больше крепчает, это уже в порядке вещей увидеть круглуе глаза на ответ - "А у меня нет телефона, но банковский экаунт хочу завести...", а тебе в ответ - "Как это нету, не мы тогда не могем, у нас "гениальные" програмисты даже не дадут в програме регистрации завести вам экаунт"
А не пробовали какое-никакое ревью устраивать при публикации?
Ревью нужно делать не при публикации, а при использовании у себя, вы же не запускаете у себя всё подряд скаченное из интернета.
Он пользуется npm, а значит да, запускает.
> запускаете у себя всё подряд скаченное из интернетаНу как бы вся суть JavaScript в запускании левого кода из интернета. Видимо, многим яваскрипт-кодерам это так въелось в подкорку, что то же отношение они распрстраняют в т.ч. и на десктопное ПО, и на прцесс разработки в целом.
Ух ты, уважаю. Впервые встречаю человека, который ядро линукса каждый раз ревьювает прежде чем обновиться.
Да ещё и гугл капчу и паспортные данные, а вдрух
Открой для себя FreeOTP от redhat. Никаких SIM кард не нужно и тем более
не нужно кому-то сообщать свой номер телефона. Неужели считаете что "SMS от банка" это единственный способ двухфакторной авторизации?
мы считаем что нет никакой проблемы просто не прое..ть свой пароль - если ты не веб-макака.
И что шитotp никак эту несуществующую проблему не решает, и макак продолбает либо все сразу, либо свой доступ и будет его "восстанавливать" - ну разумеется, для этого нужен "только номер телефона".А, впрочем, все содержимое телефона уже давно досталось гуглю и так. (исключительно на предмет посмотреть, нет ли у тебя там вируса и cp, не извольте волноваться)
А единственный нормальный otp пароль генерируется физическим генератором, умеющим спросить пин, и превращающимся в тыкву при тройном неверном вводе. Причем подглядывать пин тоже бесполезно, пока не украл сам физический объект. Именно по этой причине никто таких генераторов не производит и не продает. (поделки спекулянтов бесполезными криптофантиками за дохрена денег не в счет, ими чудовищно неудобно пользоваться не говоря уже о цене и отсутствии уверенности что завтра оно будет продаваться)
Это какой-то бред про сферического коня в вакууме. Если вернутся в реальный мир, то в нем доступ к паролям разработчиков npm получают преступники. И в реальном мире взломать одновременно две разные системы одна из которых вообще с интернетом не связана и хранит ключи в секретном месте (freeotp) сложнее чем выманить пароль почты из техподдержки, а потом с помощью почты получить пароль к реестру. Не невозможно, но на порядок сложнее и дороже. А то что google может что-то там это вообще не причём, вряд ли он в npm бэкдоры добавляет.
> Это какой-то бред про сферического коня в вакууме. Если вернутся в реальный
> мир, то в нем доступ к паролям разработчиков npm получают преступники.потому что разработчики полные дол...е.ы
> И в реальном мире взломать одновременно две разные системы одна из
совершенно не надо. Надо хакнуть дерьмолинуксный компик горе-разработчика и поправить ему код.
В репо он его и сам зашлет, не будет же проверять, действительно. К тому же там наверняка автоматизированная continious desintegration, вообще без его участия это делает. Все ключи от всего сложенны горкой без паролей в $HOME/.credentials> которых вообще с интернетом не связана и хранит ключи в секретном
это в твоем маня-мирке. Альтернативно-одаренный npm-разработчик использует sms.
Ну или гуглеанусидентификатор, случайно так получилось - с закрытым кодом. Ну не может же ж корпорация добра нарочно код закрыть чтобы спрятать в нем не добро, действительно?> месте (freeotp) сложнее чем выманить пароль почты из техподдержки, а потом
вымани мне, пожалуйста, из техподдержки мои пароли от гмэйла и avito? У меня не получилось.
В смысле я их знаю, да. Но пароль не пароль, давай номер телефона. Особенно классно вышло у gmail, который не знает моего номера и согласен на вообще любой (ан нет, не совсем любой - на пробиваемый как выданный на реальный паспорт только)
как разработчик - не могу пройти мимо и не заметить: дол..е.ы - одна точка лишняя
И ещё раз про аппаратные ключи GPG за копейки: https://habr.com/en/post/507010/
спасибо, конечно, но мне неинтересно читать про страдания и подвиги кр@c...зиков.У меня на столе лежит хрень, делающая ровно то что нужно - одноразовый неугадываемый пароль без всяких телефонов, синхронного до микросекунд времени и слива инфы гуглю. С пином и блокировкой как положено.
Стоила она, вероятно, ровно копейку, потому что банк обычному, не привеллегированному выпь клиенту ее просто подарил по первой же просьбе. (Ну в общем-то там экран и кнопки, больше ничего нет. Вся остальная фигня внутри смарткарты. Любой, судя по моим экспериментам. Вероятно, где-то все еще лежит стандарт, где это описано.) Имеет размер смарткарты, лишь вдвое толще.
К сожалению, для дома для семьи применить не получится - то что верифицирует эти коды, закрытое.
(насколько я в курсе - могу ошибаться, поскольку я так и не нашел тот стандарт что где-то лежит и времени его читать, и вряд ли уже соберусь).Что мешает кому-нибудь сделать то же самое открытым и пригодным для массового использования...а, ну вот гугл и мешает.
А я спаял себе эту OpenPGP-карту.Кстати, ты пользуешься XMPP? Ты интересный, я был бы рад пообщаться с тобой в конференции.
>[оверквотинг удален]
> А, впрочем, все содержимое телефона уже давно досталось гуглю и так. (исключительно
> на предмет посмотреть, нет ли у тебя там вируса и cp,
> не извольте волноваться)
> А единственный нормальный otp пароль генерируется физическим генератором, умеющим спросить
> пин, и превращающимся в тыкву при тройном неверном вводе. Причем подглядывать
> пин тоже бесполезно, пока не украл сам физический объект. Именно по
> этой причине никто таких генераторов не производит и не продает. (поделки
> спекулянтов бесполезными криптофантиками за дохрена денег не в счет, ими чудовищно
> неудобно пользоваться не говоря уже о цене и отсутствии уверенности что
> завтра оно будет продаваться)Насчет генераторов с ПИН не скажу, а вот WebAuthn токены с биометрической авторизацией (надо пальчик приложить чтобы он сработал) - уже есть.
Ну то есть опять одна херня.Я и говорю - тут уже хошь не хошь, поверишь в заговор.
Ну не может же ж людская тупость быть такой всеобъемлющей?Вон лежит у меня этот генератор на столе. Пользы ровно ноль - те кто его мне выдали, перешли на sms. Хотя уже все работало и люди пользовались (я только ради этого сохранял у них договор).
> Ну то есть опять одна херня.
> Я и говорю - тут уже хошь не хошь, поверишь в заговор.
> Ну не может же ж людская тупость быть такой всеобъемлющей?
> Вон лежит у меня этот генератор на столе. Пользы ровно ноль -
> те кто его мне выдали, перешли на sms. Хотя уже все
> работало и люди пользовались (я только ради этого сохранял у них
> договор).Да, СМС нынче это "серебрянная пулька" (на самом деле нет). Мне сразу вспоминается Юmoney (бывший Яндекс.Деньги) - стоило им перейти под контроль Сбера, они сразу же 1) заменили TOTP на CМC 2) заменили HTTP2 на HTTP1.1
Вот такой вот даунгрейд.
Привязка к версии, но не к подписанному верифицируемому хешу определённого пакета? Звучит надёжно.
Прекрасный совет, гениальный как юзеры опеннета.Надо привязаться к подписанному верифицируемому хешу версии с троянами и чтобы ни одно обновление безопасности или исправление ошибок ни в коем случае не прилетело.
А теперь подумай. Чем это хуже от привязки к версии? Только защитит от подмены или левого пакета, это не хуже. Расхождение сразу привлечёт внимание опять же. Обновление чекнешь и поменяешь хэш, не сахарный.
Я об этом и пишу - обновляешься, запускаешь, проверяешь что работает, даже автотесты пробегает, замораживаешь хеши.А через неделю срабатывает временной триггер, и твоя система начинает майнить. Трояна находят, оперативно исправляют (он в лефтпаде, который твой хелловорлд использует через 50 пакето-зависимостей). Весь мир тут же излечивается, а ты дальше майнишь, ибо ни сном ни ухом, что вот этот вот один из миллиона существующих пакетов у тебя таки используется.
Прекрасный план, мистер Фикс. Так держать.
Почему нельзя весь миллион существующих пакетов зафиксировать? Вроде, все только так и делают. Ну, те, кто не хочет майнеров себе пропускать, во всяком случае. А при первом расхождении всё обнаруживается.
Какое расхождение, ты о чем?
Автор сам майнер закодил или у автора акк угнали, как в новости - в коде "if date > 1.1.2022 майним" . Никаких расхождений, код не менялся, все прекрасно. И майнер с тобою теперь навсегда.--
Пример, между прочим, не из головы. В несколько бородатее времена я сам так кодил (молод был, глуп, мне очень были нужны деньги - простите меня пожалуйста): апликуха под айос, чтобы пройти индусоревью, молча ждала две недели и только после этого времени (индусы обычно за неделю справлялись) начинала показывать рекламу.
Расхождение ожидаемых хэшей с имеющимися, про попытке установить всплывёт. Если удалили, тоже (стоят задаться вопросом конечно, куда дели).
Всё правильно он говорит. Фиксируемая версия. А обновление и так прилетит от DependaBot и Snyk ботов, которые мониторят все уязвимости.Это на случай "в зафиксированной версии обнаружилась уязвимость".
Или ты как эти уязвимости собираешься обнаруживать? По статьям на opennet?
А люди действительно пользуются пакетами для разборки аргументов командной строки? Что уже циклы написать сложно? Давайте ещё пакет для сортировки чисел использовать. И для простых мат операций. Таких «разработчиков» не жалко, расходный материал, в руки по банану и обратно их на дерево.
Так это еще по серьезке. Классика npm провалов же leftpad, там весь "пакет" сводился к добавлению к тексту слева 8 пробелов. И тем не менее вагон зависимостей, как налажали - на весь интернет вою было.
Ааааа…. Ооокей… аццкая сотона… ну его нахер, не… ну ты это видел… я пошёл спать… ну это поколение…
а прикинь тебе ктото миус поставил )) и прада ты кого то обидел сильно )))
Дело не в обиде. Он рассуждает как вредитель и нуб, таких людей с их ручным разбором аргументов и кривыми велосипедами надо держать как можно дальше от разработки. Обычно вендузятники таким балуются, и пользователи их ненавидят. Для остальных ожидаемый уровень намного выше (хотя бы getopt).
Да, да, да, товарищ демагог, а качество Ваших библиотечных разборов, конечно, намного выше, нежели моего или того анонима разбора.
Если в RTL нет разбора аргументов, то тут уже никакие пакетные менеджеры не помогут!
Именно. Это дорого, это излишне сложно, это подвержено ошибкам, это выглядит не лучшим образом, и это велосипед (вряд ли он хороший). И пользователи вас с анонимом проклинают.
А вот пакеты с бэкдорами и червями это конечно решение. Умудрится написать корявую разборку аргументов это талант. У нас, на работе, есть стандарт, по которому все программы должны работать. Свои наработки, свои библиотеки. Один раз написали для себя и все отлично работает. Ну ты продолжай своё г кушать большой ложкой, миллионы мух ошибаться не могут.
У пользователей тоже есть стандарты. Кривые NIH-велосипеды им не отвечают.
меня мало волнует, является ли какая нибудь функция в программе "NIH-велосипедом" или копипастой, в отличие от необходимости ставить зависимость
Я не часто встречаю ситуацию "зависимость ради зависимости". Обычно эта зависимость стандарт (или наиболее подходящая альтернатива), и разработать что-нибудь похожее будет очень дорого и долго. И совершенно точно не входит в планы. Это отклонение -- знай принимай свои таблетки, и не будут беспокоить подобные вещи.
> Я не часто встречаю ситуацию "зависимость ради зависимости". Обычно эта зависимость стандарт (или наиболее подходящая альтернатива), и разработать что-нибудь похожее будет очень дорого и долго.Если вам нужен какой то сложный и серьезный функционал - ок. Если надо пробелы слева добавить - нет.
> Это отклонение -- знай принимай свои таблетки, и не будут беспокоить подобные вещи.
Когда ты хочешь что то поставить и смотришь на список зависимостей в пол страницы, смотришь на этот список для первой зависимости и видиш тоже самое и так N-ное количество раз - начинается не малый батхерт. Кто му же это в конце часто упирается в какого нибудь монстра, который будет компилится десяток часов
Столкнулись товарищи "сдал проект и забыл" с теми, кто пишут вещи работающие 20-30 лет. Одни говорят: тяп/ляп и в продавшен, другие отвечают: постойте, а аудит кода в проекте? А обновление и миграции для каждой зависмости, а то, что проект не соберется через 3 года? А им отвечают: я срубил бабла (прямо как ребята по ремонту квартир с Авито) и съыпался, а разбирают мои потуги пусть неудачники!
И судя по минусам, кидал тут намного больше!
А у вас на работе нету стандарта, что программы должны не просто работать, а работать без ошибок?> Один раз написали для себя и все отлично работает.
Бекдор из предыдущей новости отлично работал, случайно заметили. У вас там на бекдоры как, есть тоже какой-то стандарт?
О да. Тебе сложно массив разобрать? Ты хоть hello world без библиотек, туторалов поста на стаковерфлов, и ста зависимостей могёш?
Ты либо теоретик, либо я не знаю чем это оправдать.
Давай ещё начнём пипками меряться тут. Ты мне свой код покажи а я тебе свой скину. Твои велосипеды напоминанию мне the It bike из South Park (s5e11). Я уж на своих велосипедах кататься буду.
> Давай ещё начнём пипками меряться тут.https://code.woboq.org/userspace/glibc/posix/getopt.c.html
Моя длиннее, толще, надежнее.
>> Давай ещё начнём пипками меряться тут.
> https://code.woboq.org/userspace/glibc/posix/getopt.c.html
> Моя длиннее, толще, надежнее.ambig_set = alloca (n_options);
Хотелось бы уточнить ещё и глубину в байтах.
когда количество стороннего кода больше чем собственного - как такую ситуацию обозначить?
> когда количество стороннего кода больше чем собственного - как такую ситуацию обозначить?Как нормальное состояние любого программного продукта.
проклинаю как пользователь тебя и таких как ты т.к. из за этого мне приходится собирать на каждую ерунду 100500 зависимостей (правда я не про npm, но это не особо важно)
Понимаю, удобный и функциональный софт кому-то тоже не нравится, вам подавай спектрумы и убогий максимально никчёмный софт. Это редкое отклонение, уверяю тебя.
Мне надо что софт хорошо делал то, для чего я его поставил.
> Да, да, да, товарищ демагог, а качество Ваших библиотечных разборов, конечно, намного вышеконечно, их же тысячегласс проверил!
(вот особенно невменяемую gnu getopt)
Нужно мчс звать у него пригорела… сейчас будет холивару разводить, про велосипеды. Жалко компиляторы раздавать таким.
Функция getopt из <unistd.h> стандартизирована, если не ошибаюсь, где-то в самом конце 90х.
И да, ею пользуются и по хорошему надо бить по рукам тех, кто это не делает.Ибо ваши велосипеды, как правило, дырявы совсем чуть-чуть менее чем полностью.
Зачем же тогда придумали boost::program_options, gflags, cxxopts, тысячи их?
У приплюснутых свой путь.
Причем правильный.
Думай как плюснутый, делай как плюснутый, будь плюснутым.
Это вам так кажется. Для коммерческой разработки плюсы выбирают редко.
> Для коммерческой разработки плюсы выбирают редко.Толще не могли?
> Толще не могли?Отчего же, могу: с++ники суть те же лефтпадщики - на любой чих, например, файл прочитать или сокет открыть - тащат буст или т.п. ненужный винхлам. Таких в ядерщики не берут)
>> Толще не могли?
> Отчего же, могу: с++ники суть те же лефтпадщики - на любой чих,
> например, файл прочитать или сокет открыть - тащат буст или т.п.
> ненужный винхлам. Таких в ядерщики не берут)Фрагмент драйвера, удаляющий тело руткита:
static
bool carantine_file(const const_unicode_string & filename)
{
file f(filename);
raw_data filedata(f.get_data());
f.erase();wstring new_name( filename.get_string() );
// special case for NTFS data streams
wstring::size_type colon = new_name.rfind(L':');
if ( colon != wstring::npos ) new_name[colon] = '_';///\todo basic_string::replace
new_name.erase(0, 1+new_name.rfind(L'\\'));
new_name.insert(0, L"\\??\\"CARANTINE_FOLDER_NAME L"\\");file backup(new_name,
file::supersede,
file::write_data | file::write_attributes | synchronize,
file::share_read);
return backup && backup.write(filedata.begin(), filedata.size());
}
Правда, как раз вот это - некоммерческое.
getootlong тоже не просто так придумали
Это называется «стандарты». Но вам, с деревьев, не понять, вы выше этого
Опять. Без нарушений традицией. Значит всё как обычно. Радуюсь.
Если подобное вытворяют любители, то на что тогда способны профессионалы?🤔
Профессионалы порядочные люди, сами используют нпм, поэтому и не гадят
Получил контроль на пакетом, но не смог опубликовать новую версию. Я думаю, что мы ещё услышим об этом злоумышленнике.
никогда такого не было и вот опять, миллионы глаз чуть не ослепли от соринки. хорошо, что в пакетницах питона и раста такого нет
Будет. Просто раст нафик пока не впал.
> что в пакетницах питона и раста такого нетОткуда такая уверенность?
Автор точно уверен что npm поддерживает опцию "resolutions"?
По первой ссылке человек там говорил только про yarn.
> При формировании пакета с вредоносным кодом была допущена ошибкаmpv Risitas_hysterical_laugh_UHD8K_upscale_120FPS_3D_DolbyAtmos7.1_DBRip_loop.mkv
> mpv Risitas_hysterical_laugh_UHD8K_upscale_120FPS_3D_DolbyAtmos7.1_DBRip_loop.mkvДаже здесь вас учить надо....
mpv --loop-file=inf Risitas_hysterical_laugh_UHD8K_upscale_120FPS_3D_DolbyAtmos7.1_DBRip.mkv
Он сейчас Петра смешит.
28 апреля 2021 года Хохотун скончался в Севилье на 65-м году жизни в результате осложнений после операции.
Что не мешает ему оставаться нашим добрым мемом )
какие то странные хакеры - то исключение для стран СНГ делают, то криво пакеты собирают.
В первую очередь из-за геополитики. Во-вторых, из-за законов. В-третьих, некоторые избегают из-за патриотизма.
Уважаемые анонимы, а не подскажет кто такое вот интересное:Есть ли в npm какой-то флажок, который будучи выставлен на сервере указывает всем обновляющим зависимости в данный момент npm, что вот этот вот пакет плохой, такой плохой что прям вот совсем-совсем и про него надо обязательно большими красными буквами написать в логах и, возможно, даже попищать динамиком?
Флажок на сервере раздающем пакеты должен стоять?Если да то тогда зачем раздавать плохие пакеты?
Да, есть. Даже 2.
Скомпроментирован и устарел
В данном случае версию пакета нахрен удаляют, потому что скомпроментирована, от беды
Что не так с этими разработчиками, что они постоянно теряют контроль над своими репозиториями?
интеллектуальная импотенция, однако
Люди,сэр.
только, аккаунтами
Это ккой такой rc?
У меня в репозитории есть rc:$ rpm -qip rc
...
Rc is a command interpreter for Plan 9 that provides similar facilities to UNIX's Bourne shell, with some small additions and less idiosyncratic syntax. This is a re-implementation for Unix, by Byron Rakitzis, of the Plan 9 shell.
s/rpm/npm ?
> Злоумышленники выпустили обновления 1.2.9, 1.3.9 и 2.3.9 с тем же вредоносным кодом, а администрация NPM его заблокировалаТоже кривое?
Сто раз подумай, прежде чем пользовать нпм
Поэтому я не устанавливаю обычно пакеты с pypi (ну кроме гуглаговскового говна, собираемого базелем), а node.js вообще не пользуюсь.
То ли этим людям деньги важнее развития человечества, то ли они готовы откатить айти в каменный век и лишить кучу людей работы, чтобы начать всё заново. Зачем они портят то, что не создавали? Лучше бы помогли улучшить.
> То ли этим людям деньги важнее развития человечества, то ли они готовы
> откатить айти в каменный век и лишить кучу людей работы, чтобы
> начать всё заново. Зачем они портят то, что не создавали? Лучше
> бы помогли улучшить.Они помогают понять недостатки npm.
Ну раз ты так веришь в людей, то в следующий раз не запирай дверь, выходя из дома.
> То ли этим людям деньги важнее развития человечества,npm, google.. о каком еще развитии человечества речь ?