The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Бэкдор в зависимости к event-stream, популярной библиотеке для Node.js

26.11.2018 21:50

Пользователи библиотеки event-stream, около 2 миллионов копий которой еженедельно загружается из репозитория NPM и которая используется во многих крупных проектах, выявили вредоносный код в одной из зависимостей. Проблема выявлена в пакете flatmap-stream, в котором под видом тестового набора данных (test/data.js) в одной из переменных передавался вредоносный код, предназначенный для кражи криптовалюты и проведения целевой атаки на связанные с криптовалютой сервисы.

Вредоносный код использовался для кражи закрытых ключей от криптокошельков Copay. Во вредоносном коде также выполнялись манипуляции с файлами, используемыми в библиотеке bitcore-wallet-client. Не исключено, что атака может охватывать и другие связанные с криптовалютой приложения на Node.js, которые так или иначе связаны зависимостями с event-stream и производными библиотеками. Библиотека event-stream используется как зависимость в почти четырёх тысячах npm-пакетов, среди которых ps-tree и npm-run-all c 1.4 млн и 400 тыс. еженедельных загрузок.

В начале сентября автор библиотеки отстранился от дел и передал доступ к репозиторию event-stream и право публикации в NPM новому мэйнтейнеру right9ctrl, который являлся человеком со стороны, ранее не участвовал в разработке и общался с автором event-stream только по email. 9 сентября новый мэйнтейнер добавил пакет flatmap-stream в зависимости к event-stream. Примерно в то же время был сформирован выпуск flatmap-stream 0.1.1, в который был добавлен вредоносный код. 16 сентября, после выхода релиза event-stream 3.3.6, пакет flatmap-stream был удалён новым мэйнтейнером из зависимостей к event-stream, а релиз 3.3.6 был отозван из NPM. Судя по действиям нового мэйнтейнера event-stream, он и является организатором атаки.

Вредоносный код подменял функцию Credentials.getKeys, используемую для получения расшифрованных ключей в мобильном и настольном клиентском ПО Copay. В случае наличия в кошельке более 100 BTC или 1e3 BCH связанные с кошельками ключи и используемые для их расшифровки пароли отправлялись на подконтрольные атакующим серверы copayapi.host и 111.90.151.134. Пользователи могут оценить подверженность своих систем атаке запустив команду "npm ls event-stream flatmap-stream" - cистема скомпрометирована, если в выводе упомянута библиотека "flatmap-stream@0.1.1".

Разработчикам приложений рекомендуется зафиксифровать в зависимостях версию event-stream 3.3.4. Создатели Copay подтвердили подверженность атаке выпусков приложений Copay (5.0.2-5.1.0) и BitPay, а также сформировали обновление клиентского ПО 5.2.2, в котором убрана привязка к библиотеке event-stream. Вредоносная версия пакета flatmap-stream в настоящее время уже удалена из репозитория NPM.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации
  3. OpenNews: Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
  4. OpenNews: Выявлена попытка включения бэкдора в популярный NPM-пакет mailparser
  5. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM (left-pad)
  6. OpenNews: Критическая проблема в NPM 5.7, приводящая к смене прав доступа на системные каталоги
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/49665-node.js
Ключевые слова: node.js, backdoor, npm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (100) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, интеллигентный разработчик (?), 21:55, 26/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +48 +/
    НИКОГДА такого не было и вот опять
     
     
  • 2.3, пох (?), 22:15, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    помнити об npm leftad!
     
     
  • 3.55, Аноним (55), 12:12, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    А что такого с left-pad?
     
  • 2.79, Ydro (?), 19:03, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Samba она такая.
     

  • 1.2, Онаним (?), 21:55, 26/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    2 миллиона / 7 / N... кхм... девопсиков, безоглядно доверяющих мейнтейнить куски проектов сторонним репам, кхм... снова (что удивительно же!) попали.

    Внезапно.

     
     
  • 2.5, пох (?), 22:17, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    два миллиона - это только у тех кто не очень доверяли и зачем-то проверили стотыщную вложенную зависимость своего кода. наверное, тормозил.

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

     
     
  • 3.14, Онаним (?), 22:50, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    За них композитор эту зависимость проверил. А ревьюить некому, лень, и вообще ненужно.
     
  • 2.94, Аноним (94), 18:04, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я правильно понимаю, что ты вообще никакой сторонний код не используешь и пишешь всё своё? NIH-синдром в терминальной стадии.
     

  • 1.4, Аноним (4), 22:17, 26/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Смех смехом, но сильно ли отличаются в этом отношении от ноды другие веб-фреймворки? Куча зависимостей, которая при установке без лишних раздумий тянется из репы или с гитхаба - это намного ли безопаснее?
     
     
  • 2.7, Онаним (?), 22:26, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А дело не в ноде. Ручки-то - вот они, изящно изогнутые. Ревью изменений стороннего кода? Не, не слышали.
     
     
  • 3.9, пох (?), 22:37, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    каких таких "изменений"? Оно ж с самого начала там лежало.

    ревью ВСЕГО стороннего кода? Ну тогда какой вам node, вы и на сях-то сами его ни в жизнь ниасилите (хотя там и не доходит до leftpad)

     
     
  • 4.11, Онаним (?), 22:47, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Как минимум - ревью всех изменений стороннего кода от условно-trusted версии вообще обязательно.

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

    Для реально серьёзных проектов - да, ревью всего стороннего кода уровня проекта (нет, каждую 100 лет известную библиотеку нижнего уровня ревьюить не надо, это уже за 100 лет сделало коммюнити), затянутого в проект. Причём чем меньше стороннего кода, тем лучше, меньше шансов, что придётся переломать весь проект, когда аффтарам удалённой либы придёт в голову изменить её API до неузнаваемости или просто забить на поддержку.

     
     
  • 5.17, пох (?), 23:00, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    ну вы же уже всосали, не глядя, неизвестный код немалого объема - а теперь готов... большой текст свёрнут, показать
     
     
  • 6.21, Онаним (?), 23:03, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > это npm, тут так принято

    Дык и я о том )

    Ну на самом деле не совсем так, кроме фич бывают ещё багфиксы. Впрочем да, никто не мешает их бэкпортить, это альтернативный вариант селф-сервиса для зафиксированных стабильных веток, но он всё равно ревью подразумевает.

    По остальному абсолютно согласен )

     
  • 6.35, Василий Топоров (?), 23:33, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >Кто знает как повторить этот фокус с composer?

    Если я вас правильно понял, то нужно скопировать модуль к себе, жестко заморозить зависимость версии и тянуть возможные изменения этого кода только после обновления модуля у себя в репозитории "руками". Если это так, то нужно поднять свой https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#s и указать в composer.json конкретные версии оттуда.

     
     
  • 7.49, пох (?), 10:27, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Если я вас правильно понял, то нужно скопировать модуль к себе, жестко заморозить зависимость
    > версии

    причем не зная заранее, ни какая версия сегодня модно, ни тем более - что еще он притащит за собой.
    (а он притащит, раз использует composer - значит можно быть уверенным, что в зависимостях примерно "весь интернет")

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

    сломается - ставим задачу разработчикам "срочно почините". Для того и понабрали...

     
  • 6.36, Аноним (36), 23:39, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > плата за "простоту" языка - геморрой с элементарнейшими операциями, которые приходится отдельным модулем оформлять.

    Это вы про C++ boost сейчас?

     
     
  • 7.88, пох (?), 23:00, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    который из трех...ой, нет, уже четырех установленных?

    (справедливости ради - boost решает "элементарные" задачи посложнее leftpad. Многим проектам они нафиг не сдались.)

     
     
  • 8.91, Аноним (36), 09:24, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Справедливости ради и leftpad не нужен, т к есть нативный метод String prototyp... текст свёрнут, показать
     
  • 6.59, J.L. (?), 12:43, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > P.S. и поэтому пихоновский контейнер у меня - с вручную собраными wheels
    > (бо _egg теперь немодно). Поэтому он будет, сцуко, работать, даже через
    > десять лет (и да, локальное зеркало репо с тем самым пихоном
    > тоже есть). Кто знает как повторить этот фокус с composer? С
    > npm не надо, я не настолько долбанутый.

    а баги в чужих либах вы как фиксите? или у вас zip.so написан через libgodallknown?

     
     
  • 7.80, пох (?), 20:04, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    никак, если либа принята в продакшн - она прошла тестирование, в том виде, в котором мы ее используем - значит, скорее всего, если там и есть баги - в сочетании с нашими число их четно, и у нас они не проявляются или костыликом подперты.

    А когда и если проявятся - значит, переделан прод - значит, смысла в старом контейнере все равно нет, а если при обновлении сломается новая версия - см выше - разработчиков для того и брали, "срочно чините".

     
  • 5.18, Онаним (?), 23:01, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    И нет - юнит-тестами вы все возможные комбинации звездецов в сторонних либах не покроете. Только комбинация теоретического ревью и актуальных тестов.
     
     
  • 6.24, пох (?), 23:04, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    конечно нет. И потом - нахрена мне юнит-тесты ЧУЖИХ либ ? Я их не для того подключал, чтоб за авторами горшок выносить. В смысле - ну даже написал, потратив больше времени чем всю либу написать с нуля, ну оно сфейлилось, и что делать будим ? Пойдем чинить апстрим? А нам оно вообще надо? Может мы его в этой позе и использовать-то не собираемся.
    Свои, использующие чужое, могут быть юнит-тестами и покрыты - но заведомую диверсию, как тут, они не выявят.
     
     
  • 7.29, Онаним (?), 23:08, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, я именно про юнит-тесты собственных модулей, завязанных на чужие либы.
    В либе что-то кромсают, и не факт, что это под тесты влетит.
     
  • 5.20, Crazy Alex (ok), 23:01, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Да никто не ревьюит второй уровень вложенности. То, что непосредственно проект тянет - да, но то, что ниже - очень вряд ли.

    Разница в том, что в "больших" языках эти "ниже" обычно и есть "известные библиотеки нижнего уровня", а в джаваскрипте 100500 уровней, и на каждом - не понять что не понять от кого.

     
     
  • 6.23, Онаним (?), 23:03, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Хера себе. То есть можно горе-деплоерам rm -rf / подтянуть в комплекте, и они не заметят? Красиво )
     
     
  • 7.26, пох (?), 23:05, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    так вот, только ж что и...
    (спалили, правда, но это скорее случайность)
     
     
  • 8.30, Онаним (?), 23:09, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да уж, сколько там ещё такого добра, остаётся только гадать ... текст свёрнут, показать
     
  • 5.57, КО (?), 12:16, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Как минимум - ревью всех изменений стороннего кода от условно-trusted версии вообще обязательно.

    Но есть ньюанс, хорошее ревью кода обходится дороже написания кода. :)
    А поверхностное не заметит, что в зависимости от зависимости в тестовом примере (какой ревьювер за наличие тестов + не поставит? :) ) будет зашит майнер.

     
  • 4.16, Онаним (?), 22:56, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    И нет, с самого начала оно там не лежало.

    "Why was @right9ctrl given access to this repo? He added flatmap-stream"

    Ключевое слово - added.

     
     
  • 5.19, пох (?), 23:01, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    а что, не нужно было?
    я -то имел в виду, что в этом самом flatmap оно лежало.

     
     
  • 6.27, Онаним (?), 23:05, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ревью-то в любом случае выявило бы новую зависимость, к которой нужно отнестись с особым пристрастием )
     
  • 3.41, Аноним (41), 05:22, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В ноде дело. В ней невозможно программировать без установки кучи библиотек.
    >Ревью изменений стороннего кода? Не, не слышали.

    Да конечно. Только помрешь раньше чем весь код проверишь.

     
  • 2.8, пох (?), 22:33, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    а причем тут - веп-фреймворки? помимо ноды (которая ни разу не веб и не фреймворк) есть еще прекрасный пихон и еще более прекрасный игого, которые к веппу только тем относятся, что современный разработчик жить не может без http(s) протокола где надо и где не надо.

    > без лишних раздумий тянется из репы или с гитхаба - это намного ли безопаснее?

    это вообще вчерашний день и эпоха довеба. script src=raw.​githubusercontent.​com/someshit/somemoreshit/shitcode.js  - вот как надо!
    впрочем, если вы ретро-гад и пишете на пехепе, для вас есть божественный composer, ик...щас он вам накомпозирует!

     
     
  • 3.12, Онаним (?), 22:49, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Да и композерное угрёбище в похе... то есть в пыхе - не отстаёт.
     
  • 3.67, RomanCh (ok), 13:11, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    На самом деле он реально хорош тем, что стандартного официального набора либ дос... большой текст свёрнут, показать
     
     
  • 4.81, пох (?), 20:09, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > На самом деле он реально хорош тем, что стандартного официального набора либ достаточно

    вопрос тогда, что считать "стандартным набором" - вот все вот это, что оно понатащило в хомяк, оно ж вполне "официальное", только вот написано хз кем хз как.

    > Минус - размер бинаря в который "собрано всё что нужно", это на мой взгляд вообще шаг назад
    > в развитии технологий.

    хм, учитывая "все что нужно" (и то что там по сути go-версии всего содержимого /usr/lib) - размер как раз весьма небольшой.
    Но вот про shared libraries да, можно забыть на данном этапе "развития технологий".

    в принципе, в эпоху горе-контейнеров и недосервисов о них и так уже пора было забыть. Новые модные технологии - mem dedup и прочее, подтянутся.

     
     
  • 5.83, RomanCh (ok), 20:26, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не не, я строго про то что идёт в дефолтном архиве с компилером Т е то что был... большой текст свёрнут, показать
     
  • 3.87, Аноним (87), 22:35, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >script src=raw.​githubusercontent.​com/someshit/somemoreshit/shitcode.js  - вот как надо!  

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

     
  • 2.97, КО (?), 11:15, 29/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Смех смехом, но сильно ли отличаются в этом отношении от ноды другие веб-фреймворки?

    Да что там фреймворки - не каждый коммерческий Линукс озаботился доказательной базой, что бинарный пакет собран именно из сырцов, которые выложены на публику. Что требовать от npm?

     

  • 1.6, Аноним (6), 22:25, 26/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пишите про пакеты, где нет бэкдора, если таковые конечно остались...
     
  • 1.10, Аноним (10), 22:44, 26/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Мне интересно другое, как отстранившийся от дел автор event-stream так наивно передал проект в руки первого встречного. Чувак с пустым репозиторием и нулевой историей просто на email автору написал, что готов поддерживать разработку, и автор передал ему все права. Один ник right9ctrl уже должен был смутить.
     
     
  • 2.13, Онаним (?), 22:49, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > как отстранившийся от дел автор event-stream так наивно передал проект в руки первого встречного

    Он где-то подписывал юридически значимый договор с обязательствами так не делать?

     
  • 2.15, Онаним (?), 22:53, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Поэтому мне более интересно как кхм... неназываемо... кхм... решились использовать библиотеку первого встречного неизвестного писателя, даже внутрь не заглядывая.
     
     
  • 3.25, Crazy Alex (ok), 23:04, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Потому что они уже использовали сотню таких же на этом проекте и тысячу - на прредыдущих. И сходило, потому что на JS по-другому и не выйдет - на любой чих отдельная либа от кого-то нового и незивестного, все ревьюить - времени свой код писать не будет. Бороться с существующими, а не гипотетическими угрозами - это как бы коммерчески оправданный подход, пусть и далёкий от идеализма.
     
     
  • 4.28, Онаним (?), 23:06, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ну в общем и получили то, что заслужили. Ничего сверху интересного нет )
     
  • 3.31, Анонимочкин (?), 23:09, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Другие пакеты добавили библиотеку event-stream от известного автора 100 лет в обед.
    Недавно автор библиотеки передал её на поддержание первому встречному, а тот добавил вредоносный код в качестве новой зависимости. Но в репозитории на github этого нельзя заметить, плохой код находится только в минифицированной версии устанавливаемой из npm.
     
     
  • 4.32, Онаним (?), 23:11, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Есть простое правило: любой апдейт сорцов сторонней либы, прибитых к собственному проекту, должен ревьюится. Если это правило не соблюдать - в следующий раз например все номера кредитных карт ваших клиентов будут у разных людей.
     
     
  • 5.33, Анонимочкин (?), 23:18, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Попробуй в одиночку всё отревьювить. Мне например вообще проще микро зависимости вроде всяких лефтпадов не подключать, а добавить пару лишних строк код. Из моих зависимостей оказался только nodemon инфицирован. Но всё проверить не реально.
     
     
  • 6.34, Онаним (?), 23:22, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Попробуй в одиночку всё отревьювить
    > Из моих зависимостей оказался только nodemon инфицирован

    :) Ну о чём и речь, если не ревьюить - будет засада.
    Иногда лучше вообще никак, чем так.

     
     
  • 7.42, Аноним (41), 05:36, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    лучше не программировать вы хотели сказать?
     
     
  • 8.45, Онаним (?), 08:59, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ну в общем да Не умеешь - не берись , есть такая фраза из старины ... текст свёрнут, показать
     
     
  • 9.95, Аноним (94), 18:06, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В старине ещё ездили на телегах, спали на лавках, избы по чёрному топили, а пита... текст свёрнут, показать
     
  • 5.98, КО (?), 11:17, 29/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >любой апдейт сорцов сторонней либы

    Вы в пролете с таким правилом - сорцы были в порядке. Минифицированная версия нет. :)

     
     
  • 6.104, J.L. (?), 16:19, 04/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >>любой апдейт сорцов сторонней либы
    > Вы в пролете с таким правилом - сорцы были в порядке. Минифицированная версия нет. :)

    вообще это важное замечание
    всё ещё хуже для мантейнеров...

     
  • 2.22, Нанобот (ok), 23:03, 26/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    вот вроде бы ответ из первых уст: https://pbs.twimg.com/media/Ds8nulwXgAAd4bv.jpg
    типа чел попросил, мейнтейнеру не жалко было
     
  • 2.61, J.L. (?), 12:57, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Мне интересно другое, как отстранившийся от дел автор event-stream так наивно передал
    > проект в руки первого встречного. Чувак с пустым репозиторием и нулевой
    > историей просто на email автору написал, что готов поддерживать разработку, и
    > автор передал ему все права. Один ник right9ctrl уже должен был
    > смутить.

    а что он должен был сделать? какой тест профпригодности есть для передачи или добавления мантейнерства?

     

  • 1.37, Ordu (ok), 01:06, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Неплохо. Новый вызов опенсурцу: как поддерживать базу кода невероятного объёма, пресекая активность злодеев? Простор для генерации идей, между прочим, а возможно даже для успешных стартапов.
     
     
  • 2.46, Онаним (?), 09:00, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    У нормальных проектов, разрабатываемых по нормальным методикам, а не в виде краудсорсинга кода неизвестного происхождения, этого вызова нет. Всякие хипстерские поделки - страдают и будут страдать.
     
     
  • 3.53, Аноним (53), 11:03, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если проект разработан нормально он не может тянуть 10 000 зависимостей каждая из которых тянет еще 10-100 зависимостей? Авторы типа сами все либы перепишут? Или заморозят их и никогда не будут обновлять даже, если найдут там ошибку? Или перепроверят все 10 000 перед тем как будут писать код? А если хотя бы 1/100 из этих либ обновляется раз в 5-7 дней они будут проверять не исправили ли там что-то критичное? Может тогда и ядро linux эти мифические разработчики тоже сами переписывают, а то вдруг там баг или эксплоит? Или замораживают его и не обращают внимание яна всякие Specter и Meltdown?
     
  • 3.54, Ordu (ok), 11:26, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • –6 +/
    > У нормальных проектов, разрабатываемых по нормальным методикам

    "Нормальные" методики в твоём понимании -- это разработанные дедами? Откуда такое неверие в будущее и преклонение перед прошлым? Ты не христианин случаем? У этих всё мировоззрение основано на грехопадении и постепенном загнивании человечества, типа вчера всегда лучше чем завтра.

    > Всякие хипстерские поделки - страдают и будут страдать.

    Это слишком сильное утверждение. Страдают, это да. Но так или иначе они будут вынуждены найти способ не страдать.

     
     
  • 4.56, нах (?), 12:15, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Но так или иначе они будут вынуждены найти способ не страдать.

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

     
     
  • 5.74, Ordu (ok), 16:05, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Но так или иначе они будут вынуждены найти способ не страдать.
    > переложить ответственность на никого, отличный способ не страдать.

    Для некоторых -- да.

     
  • 4.84, Онаним (?), 20:32, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, я технократ. За такие поделки надо редактор от сети отключать и аффтару, и всем "писателям", использовавшим это без ревью - пусть в стол пишут сначала, потом в паблик.
     
  • 4.105, Michael Shigorin (ok), 20:02, 07/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> У нормальных проектов, разрабатываемых по нормальным методикам
    > "Нормальные" методики в твоём понимании -- это разработанные дедами?

    Ну не малолетками же, которые и впрямь ложку в ухо упорно несут.

    > Откуда такое неверие в будущее и преклонение перед прошлым?
    > Ты не христианин случаем? У этих всё мировоззрение основано
    > на грехопадении и постепенном загнивании человечества,
    > типа вчера всегда лучше чем завтра.

    Вы и в этом некомпетентны.  Озадачились бы уже, что ли, изучением матчасти -- можно и матметодами, между прочим, некоторые метрики вполне исчислимы и сравнимы.

     
     
  • 5.107, Ordu (ok), 16:33, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Вы и в этом некомпетентны.

    Сказаал модератор форума школоло-эникеев. Очень убедительно вышло.

     
  • 4.106, КГБ СССР (?), 20:49, 07/12/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Откуда такое неверие в будущее и преклонение перед прошлым?

    Любой действительно мыслящий человек понимает, что «новое» и «лучшее» — не синонимы.

    Всякое «новое» обязано доказать своё преимущество над уже существующими вещами.

     
     
  • 5.108, Ordu (ok), 16:41, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Откуда такое неверие в будущее и преклонение перед прошлым?
    > Любой действительно мыслящий человек понимает, что «новое» и «лучшее» —
    > не синонимы.

    Чёт тебя понесло в тривиальщину. Умные мысли кончились?

    > Всякое «новое» обязано доказать своё преимущество над уже существующими вещами.

    Да-да. Тут целый форум дeбилoв, которые сидят и ждут, когда им что-то там докажут. Они искренне уверены, что кто-то обязан им что-то доказать. Я несколько лет наблюдал, думал, может они не столь тупы как кажутся, может дождутся когда-нибудь. Но не, априорные оценки оказались верны, шансов у них ноль.

     
     
  • 6.109, КГБ СССР (?), 17:22, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Чёт тебя понесло в тривиальщину. Умные мысли кончились?

    Я ещё не отсмеялся, прочитав пафосные рассусоливания миллениала про индивидуальную мораль и остальную хипсторскую чушь. Ты слишком необразован, дружок, чтобы осознавать свою глупость. Эффект Даннинга—Крюгера во всей красе. :)

     
     
  • 7.110, Ordu (ok), 18:19, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> Чёт тебя понесло в тривиальщину. Умные мысли кончились?
    > Я ещё не отсмеялся, прочитав пафосные рассусоливания миллениала про индивидуальную мораль
    > и остальную хипсторскую чушь.

    Слишком сложно? Книжки надо читать чаще, тогда проблем с пониманием текстов длинее 1kB не будет.

    > Ты слишком необразован, дружок, чтобы осознавать свою
    > глупость. Эффект Даннинга—Крюгера во всей красе. :)

    Старпёр, хвастающийся знаниями мемов. Выглядит забавно.

    Хочешь я расскажу тебе как ты можешь оценить свою подверженность эффекту Даннинга-Крюгера? Вот смотри, эффект Даннинга-Крюгера родом то ли из общей, то ли из социальной психологии. Какие ещё эффекты из общей или специальной психологии ты можешь вспомнить навскидку? Составь список.

    Составил? А теперь пройдись по этому списку и вычеркни оттуда то, что знает 95% интернета. Остался хоть один пункт? Количество пунктов, оставшихся не вычеркнутыми, говоряще. Другое дело, что я вот только что придумал этот метод, и я не пытался хотя бы прикинуть, как бы так из этого числа пунктов сделать осмысленный и определённый вывод. Типа если один пункт -- то человек попадает в 10-й процентиль, если 3, то в 50-й, если 10, то в 95. Точные значения нам неизвестны, но если тебе хочется объективности, ты можешь их измерить, сегодня набрать выборку в онлайне в полтысячи человек, которые заполнят опросник -- это дело получаса создания опросника в гуглоформах, две недели на CEO этого опросника, и потом два дня на обработку результатов. Учебник матстатистики, если надо, я могу порекомендовать.

    Ну так вот, возвращаясь к Даннингу-Крюгеру: чья бы корова мычала, а уж твоей бы точно помолчать не грех.

     
     
  • 8.111, КГБ СССР (?), 19:32, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Феерический невежда Ещё и хам и графоман - ... текст свёрнут, показать
     
     
  • 9.112, Ordu (ok), 20:07, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ты так говоришь, будто только сейчас это понял Тупой что ли ... текст свёрнут, показать
     
  • 9.113, Ordu (ok), 20:58, 08/12/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати обо всех этих эвристиках и байесах, как всегда как на заказ напоролся тут... текст свёрнут, показать
     
  • 2.47, trolleybus (?), 09:31, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как обычно - ревьювить все пул-реквесты, не мержить что попало. А комитить в мастер-ветку разрешить только хозяевам репозитория.
     
     
  • 3.63, J.L. (?), 13:05, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Как обычно - ревьювить все пул-реквесты, не мержить что попало. А комитить
    > в мастер-ветку разрешить только хозяевам репозитория.

    и что вы сделаете с пулреквестом добавляющим зависимость от либы делающей "нужно" для использования вашего самописного костыля делающего "нужно"?
    вы проревьювите весь код той либы которая на первый взгляд действительно нужно делает "нужно" и во многих вариантах умеет делать "нужно" разными методами по разным входным данным
    а ещё она использует небольшую либку для красивого вывода "нужно" в лог, а в ней есть тесты

    ваше решение, мастер?

     
     
  • 4.77, КО (?), 16:59, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Да каждый ответить, что либа которая делает "непонятно-что", но у которой есть тесты, в разы лучше той, у которой их нет, что уж говорить про велосипед...
     
  • 2.48, Аноним (48), 10:05, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > для успешных стартапов.

    пилите антивирус для сабжа ;)

     
  • 2.51, пох (?), 10:30, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    "успешный стартап" только что намайнил/свистнул чужие пару десятков btc, и еще сопрет. Нафига тут что-то строить, когда гораздо проще и интереснее ломать, а прибыль выше?

     

  • 1.39, Аноним (39), 03:56, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    https://ru.wikipedia.org/wiki/Предотвращение_утечек_информации
     
     
  • 2.65, J.L. (?), 13:07, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > https://ru.wikipedia.org/wiki/Предотвращение_утечек_информации

    а в реальности оно работает никак
    или вы сидите в закрытом ящике и пишете целиком свою Ось, и это должна быть явно не ОС МСВС

     

  • 1.43, svsd_val (ok), 05:58, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Это мне напомнило старую статейку на хабре:
    https://habr.com/company/ruvds/blog/346442/
     
     
  • 2.50, Аноним (48), 10:30, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    веб уже ничто не спасет
     

  • 1.58, J.L. (?), 12:29, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    как же так? видь это же репозиторий у которого есть мантейнеры!!! как же такое могло произойти???

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

     
  • 1.71, Аноним (71), 13:44, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > около 2 миллионов копий которой еженедельно загружается из репозитория NPM

    Кто все эти люди?

     
     
  • 2.73, НяшМяш (ok), 14:37, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Так это не люди. Там зависимость на зависимости с зависимостью. Ты мог сделать npm install webfignya, а у тебя один пакет скачался 20 раз, потому что он в зависимостях у 30 пакетов.
     

  • 1.75, Аноним (75), 16:49, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    На зависимостях из NPM можно классный ботнет соорудить.
     
  • 1.76, ыы (?), 16:57, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а есть там пакет у которого в зависимостях "все" ?
     
     
  • 2.99, КО (?), 11:19, 29/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    его еще не плохо было бы впропихнуть в зависимость ко всему. :)
     

  • 1.78, Аноним (78), 17:24, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    VSCode зависит от event-stream. Если ваш мейнтенер (или вы) собрал его с зараженной версией либы, то пропали ваши коины. Нормальненько так.
     
     
  • 2.82, пох (?), 20:12, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > VSCode зависит от event-stream

    бггг.

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

     
     
  • 3.85, Онаним (?), 20:34, 27/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > крановщик же не хранит свою заначку от жены в кабине крана на стройке где работает

    А вот тут дедка надвое сказала. Которая была бы бабкой при определённых условиях, конечно, но не сложилось.

     

  • 1.86, OldFart (?), 20:58, 27/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    DLL hell, version 2.0

    "Умные учатся на чужих ошибках, простые люди на своих и только дураки никогда ничему не учаться..." (c) 0001 Народная мудрость.

     
     
  • 2.89, Ananim (?), 08:54, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Тебе бы не мешало поучиться русскому языку.
     
     
  • 3.92, OldFart (?), 17:02, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Так я с ним родился, с русским, куда еще больше учить... ну а на счет typos, sorry...
     
  • 2.90, Аноним (90), 09:03, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    DLL hell
    это вообще про конфликт зависимостей, ник не оправдали если даже такое не знаете
     
     
  • 3.93, OldFart (?), 17:07, 28/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Название темы: "Бэкдор в зависимости", отсюда версия 2 :) раньше конфликт, теперь backdoors. А сарказм от того, что терпеть не могу зависимостей, что в жизни , что в soft-e ...
     

  • 1.96, Попугай Кеша (?), 09:44, 29/11/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересный тут ср@ч развели, конечно. Но речь вот о чем. Веб-приложения на Node, либо на браузере обычно тянут сотни зависимостей.

    Если условно выбрать какую-то версию и зафризиться на ней (но все сторонние компоненты проверить), то есть шанс потом вообще никуда не обновиться. Другой вопрос - а надо ли? Иногда проще с нуля все переписать.

    Вообще в университете физик говорил: "Парни, запомните! Чем больше зависимостей - тем меньше степеней свободы )".

    Вот и получается, что по-хорошему надо этих самых зависимостей делать меньше. Потому что их надо: a) проверять, б) апдейтить, в) следить, чтобы ничего не сломалось. А на поддержку всего этого тратится уйма времени.

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

    Это как с AppStore от Apple и их системой модерации, или PlayMarket от Google. Где меньше порядка и слабее модерация - больше вирусни.

    В общем и целом, да, надо следить за сторонними изменениями, либо же делать свой NPM c блекджеком и репозиториями

     
     
  • 2.100, Аноним (100), 11:50, 29/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Корень еще в том, что вендоры библиотек не заботятся о выпуске стабильных релизов, а считают, что все можно поправить, закоммитив в мастер на следующий день быстрофикс.

    Просто надо настроить себя не рваться за большим колисчеством и свежестью 3rd-party либ для своего проекта. Взял либу - так и сиди на ней. Что касается безопасности, то дыр в ней, как мы видим наглядно, меньше, если её не обновлять.

     
     
  • 3.101, Попугай Кеша (?), 12:04, 29/11/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > Корень еще в том, что вендоры библиотек не заботятся о выпуске стабильных
    > релизов, а считают, что все можно поправить, закоммитив в мастер на
    > следующий день быстрофикс.
    > Просто надо настроить себя не рваться за большим колисчеством и свежестью 3rd-party
    > либ для своего проекта. Взял либу - так и сиди на
    > ней. Что касается безопасности, то дыр в ней, как мы видим
    > наглядно, меньше, если её не обновлять.

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

     

  • 1.103, Aqueelone (?), 12:57, 03/12/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    NPM? ...да здравствует YARN... (https://yarnpkg.com/lang/en/)
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру