В зависимостях к npm-пакету с установщиком PureScript выявлен (https://harry.garrood.me/blog/malicious-code-in-purescript-n.../) вредоносный код, проявляющийся при попытке установки пакета purescript (https://www.npmjs.com/package/purescript). Вредоносный код встроен через зависимости load-from-cwd-or-npm (https://npmjs.com/package/load-from-cwd-or-npm) и rate-map (https://npmjs.com/package/rate-map). Примечательно, что сопровождением пакетов с данными зависимостями занимается изначальный автор npm-пакета с инсталлятором PureScript, который до недавних пор занимался сопровождением данного npm-пакета, но около месяца назад пакет перешёл к другим сопровождающим.Проблему обнаружил один из новых мэйтейнеров пакета, которому права на сопровождение были переданы после многих разногласий и неприятных обсуждений с изначальным автором npm-пакета purescript. Новые мэйнтейнеры отвечают за компилятор PureScript и настаивали, что NPM-пакет с его установщиком должен обслуживаться теми же сопровождающими, а не посторонним лицом. Автор npm-пакета с установщиком PureScript долго не соглашался, но затем уступил и передал доступ к репозиторию. При этом некоторые зависимости остались под его управлением.
На прошлой неделе был выпущен релиз компилятора PureScript 0.13.2 и
новыми сопровождающими было подготовлено соответствующее обновление npm-пакета с установщиком, в зависимостях к которому был выявлен вредоносный код. Смещённый с поста сопровождающего автор npm-пакета с установщиком PureScript заявил, что его учётная запись была скомпрометирована неизвестными атакующими. Тем не менее, в текущем виде действия вредоносного кода ограничивались лишь саботажем установки пакета, который стал первой версией от новых сопровождающих. Вредоносные действия сводились к зацикливанию с выводом ошибки при попытке установить пакет командой "npm i -g purescript" без выполнения явной вредоносной активности.Были выявлены две атаки. Через несколько часов после официального выхода новой версии npm-пакета purescript кем-то была сформирована новая версия зависимости load-from-cwd-or-npm 3.0.2, изменения в которой привели к тому, что вызов loadFromCwdOrNpm() вместо списка необходимых для установи бинарных файлов возвращал поток PassThrough (https://nodejs.org/api/stream.html#stream_class_stream_passt...), зеркалирующий входные запросы в качестве выходных значений.
Спустя 4 дня, после того как разработчики разобрались в источнике сбоев и готовились выпустить обновление для исключения load-from-cwd-or-npm из зависимостей, злоумышленниками было выпущено ещё одно обновление load-from-cwd-or-npm 3.0.4, в котором вредоносный код был убран. Тем не менее, почти сразу было выпущено обновление другой зависимости rate-map 1.0.3, в которой было добавлено исправление, блокирующее callback-вызов для загрузки. Т.е. в обоих случаях изменения в новых версиях load-from-cwd-or-npm и rate-map носили характер явной диверсии.
Разработчики решили проблему выпуском обновления, в котором проблемные зависимости были удалены. Для того чтобы исключить оседание скомпрометированного кода на системах пользователей после попытки установки проблемной версии PureScript рекомендуется удалить содержимое каталогов node_modules и файлов package-lock.json, после чего выставить в качестве нижнего лимита версию purescript 0.13.2.
URL: https://www.theregister.co.uk/2019/07/15/purescripts_npm_ins.../не
Новость: https://www.opennet.dev/opennews/art.shtml?num=51093
Ух, прямо Санта-Барбара какая-то.
> Ух, прямо Санта-Барбара какая-то.Вы переоцениваете драматичность происходящего.... бега по граблям.
Улыбнуло.
Забег по расставленным жюри граблям.
> Ух, прямо Санта-Барбара какая-тоА написано, как будто Арменфильм постарался:
> Примечательно, что сопровождением пакетов с данными зависимостями занимается изначальный автор npm-пакета с инсталлятором PureScript, который до недавних пор занимался сопровождением данного npm-пакета, но около месяца назад пакет перешёл к другим сопровождающим.
Пакет с того берега интернета, который хакеру не перелететь, опсу не перебежать. Хоть мейнтейнер не мейнтейнер, так сеть от блекаута на город упала и насмерть убила. А из оптоволокна хороший букет вышел. Тут автор кааааак подпрыгнет!
Шо, опять!!!когда же появятся обязательные подписи в NPM ???
чем тебе подписи или гитхляп помогут от ситуации "разработчик зависимости стопиццотого уровня вложенности (помнити npm leftpad!) засунул в нее трояна"?просто он будет врать не "акаунт на npm скомпроментировали враги", а "враги украли подпись, вместе с симкой, и вот, накоммитили и подписали".
это ваш жабоскриптик, с зависимостями всего от всего, он так работает, это не лечится.
> это не лечится.Ты болен, неуважаемый.
Почему? Всё правильно, «лечится» без мягкого знака.
Таки не лечится. За всю историю человечества. )))
> это ваш жабоскриптик, с зависимостями всего от всего, он так работает, это не лечитсяВпрочем, как и любой другой язык с внешними пакетами.
как и любой другой язык "быстрого прототипирования", да.фикcация версий зависимостей, разумная осторожность при обновлениях, иногда и замена чужого универсального комбайна своей мелкой открывашкой - это не про них.
Даже фиксация версий зависимостей не спасёт. Нужно зависимости с собой бандлить.
> Даже фиксация версий зависимостей не спасёт. Нужно зависимости с собой бандлить."Стабильный Дебиан не достаточно Прогрессивен"-- говорили они...
"...вынуждены его, и его ошибки, повторять"-- говорили им...
, но они не слушали и не слышали.
ну вот в рамках одного хаба - остальное решается технико-административными путями.а так да, правильно именно бандлить, зафиксируешь версию - а leftpad выпилен разработчиком целиком и со всеми версиями сразу.
Так Дмитрий-то так и спрашивает: а ты зависимости сам собираешь ли. Да.
> как и любой другой язык "быстрого прототипирования", да.
> фикcация версий зависимостей, разумная осторожность при обновлениях, иногда и замена чужого универсального комбайна своей мелкой открывашкой - это не про них.Там есть фиксация зависимостей. И задействовать мелкую открывашку вместо универсального комбайна никто не запрещает.
Что является наиболее узким местом web-приложения? Неужели код на языке "быстрого прототипирования"?
Расскажи, кем ты работаешь? Можно одной ссылкой на linkedin. Меня не перестаёт удивлять узость твоего мышления и активность комментирования
Или у тебя много сторонних библиотек и мало кода, или у тебя мало сторонних библиотек и куча говнокода
> Или у тебя много сторонних библиотек с говнокодом и мало своего говнокода, или у тебя мало сторонних библиотек с говнокодом и куча своего говнокодаПоправил.
Если у тебя много сторонних библиотек - то много чужого говнокода, а если мало - то некоторое количество своего. Но по крайней мере ты точно знаешь, что вставить в него rm -rf / можешь только ты сам
Вывод: заменять версии надо запретить, а новые версии билдить из исходников и только после ревью несколькими независимыми разработчиками. Прям на уровне центральной свалки откуда все качают.
Правда, тогда надо ещё придумать защиту от новых аккаунтов которые могут фейково сделать ревью.
Нет, нужно код новой версии смерживать вручную со старой. Смотреть построчно новую писанину. Очевидно, что мутный код должен быть заметен компетентному глазу.
Всем известно где у вэб-макаки находится этот "компетентный глаз".
Не вижу связи между сферой человеческой деятельности и качеством его работы. Любая дистрибьюция кода подвержена подобным вещам. Нужен контроль кто и что добавляет в код. Под другому никак.Просто видать тем, у кого на сайте написано крупных шрифтом "Build amazing things" наплевать кто и что заливает им пока ты не заплатил и не получил:
Security expertisenpm is the central authority on JavaScript security. Find — and fix — JavaScript security vulnerabilities before they make it to production, with nothing to set up or install.
> Не вижу связи между сферой человеческой деятельности и качеством его работы.+
> Просто видать тем, у кого на сайте написано крупных шрифтом "Build amazing
> things" наплевать кто и что заливает им пока ты не заплатилВот же связь.
Они как раз просто считают деньги, ничего личного. Должны происходить подобные инциденты, как напоминание всем халявщикам, что они живут в непростом мирке и за спокойствие надо платить.Не сильно удивлюсь, если они сами разыгрывают этот цирк. Мы же на знаем сколько к ним приходит платных подписчиков после подобных шоу.
> куча говнокода, которую можно подрихтовать до библиотеки и выложить в npm :^)
До библиотеки? Одной?Не... Надо кучу разложить по маленьким баночкам и коробкам от спичек. Так, чтобы не больше лефтпада. Будет сразу пара тыщ библиотек!
И чем они помогут, когда "злоумышленник" - это сам мейнтенер? Меньше поверят, что "аккаунт воз хакд"? :-)
когда же появятся обязательные подписи в NPM ???а зачем, разве кому то нужен порядок в этом болоте ?
Да запретить аплоадить пакеты в npm - и всё. Разработчик должен сам запушить в гитхаб изменения, затегать релиз, а npm бы автоматом запаковал. Ну или предоставил бы кнопку "Чекнуть мой гитхаб на предмет новых релизов".То же касается остальных пакетных репозиториев по ссылкам к новости.
>запретить аплоадить пакеты
>должен сам
> запушить в гитхаб
>npm бы автоматом запаковал.
>гитхаб на предмет новых
> релизов".Сим запрещаю тебе камментиь на опенете про пакеты и йих манагемент, и гидхаю заодно.
Выполняй?
TL;DRУ автора пакета отжали пакет и он стал мелко пакостить.
> У автора пакета отжали пакет и он стал мелко пакостить.Или враг автора пакета вовремя воспользовался случаем.
Так или иначе, автор дескредитирован донельзя.
> автор дескредитирован донельзя.Как можно дИскредИтировать вэб-макаку?
А ты какая *-макака будешь?
Какой смысл автору заниматься подобным?
Неразвитые социальные навыки и общая неадекватность.
А как же веселье?
А как же осуществить акт дефекации на стол?
Я вот в больничках, где разгреб все говно и поднял k8s, на прощанье все положил и сломал.
Это уже граничит с криминалом.Веселье - это когда т.н. разработчики Росы сначала принимают мои решения их недоделок в свой т.н. продукт, а потом удаляют исходники в моих репозиториях, потому что "мы не знаем что ждать от этого неадеквата". Я вот тоже не знаю, что же я мог такое учудить в персональном git, кроме как пробить кое-кому шапочку из фольги. ;-)
Это граничит с идиотизмом, ибо нефиг выкидывать админа, если все работает.
> Это граничит с идиотизмом, ибо нефиг выкидывать админа, если все работает.Это банальная жадность, которая мешает принимать верные решения. Дайте-ка угадаю. Взяли на место админа племянничка-студента, а вторую пол-ставки оприходовали. Таких великих комбинаторов достаточно лишь подтолкнуть в нужном направлении, и новоиспечённый гений сам всё испортит.
А что это вообще за пюре-скрипт, зачем он?
Горе-скрипт
Это такой язык, похожий на Haskell, но не Haskell, компилирующийся в JavaScript. Кроме двух с половиной энтузиастов, не нужен никому.
Я один из таких энтузиастов, не на жопоскрипте же в конце-концов фронтенд хаскелисту писать! Не солидно, стыдно и унизительно.А PureScript очень даже хорош, там и тайплевел и всякое разное есть, и кое-что даже лучше и изящнее, чем в Haskell сделано (например partial constraints для рекордов с одинаковыми именами полей и типами), впрочем не удивительно, это молодой язык, который писался на самом Haskell с оглядкой на его недостатки, который имеет на сегодняшний день почти 30-и летнюю историю развития. Правда одно из главных отличий PureScript-а, что он НЕ ленивый, и это иногда боль в жопе, когда тебе например приходится избегать "when" в монадках в пользу "if-then-else", как и думать, объявлять ли переменную через let/where лишний раз, т.к. все частичные применения функций будут вычислены, независимо от ого, использовано имя или нет. Haskell своей ленивостью делает программистов такими же ленивыми, "за меня конпелятор разберётся".
Остальные полтора энтузиаста, дайте знак, что вы живы, ну или остальные два (если меня считать за половинку).
Что же за неприятные обсуждения такие, с которыми передавали власть?
Жил_был_пёс.jpg
npm - это троян
> npm - это трояни броузер - троян,
и интнернет - троян,
и общество - троян,
и его экономмодель - троян,
и ....покайтеся, грешниуи, конь бледный на колёсиках -- у ворот. <><><<>
>> npm - это троян
> и броузер - троян,
> и интнернет - троян,
> и общество - троян,
> и его экономмодель - троян,
> и ....http://techrights.org/wp-content/uploads/2019/05/microsoft-b...
http://techrights.org/2019/07/14/sociopathy-incompetence-and.../“The choice for mankind lies between freedom and happiness and for the great bulk of mankind, happiness is better.”
― George Orwell, 1984
Зачем сразу обновляться до последней версии?
Странные проблемы у людей, только выложили корявый пакет, сразу напарываются, будто сидят и ждут когда выйдет обновление.
Работает на старой, и пусть работает.Хотя конечно может так и есть
с этими обновлениями у них как шило в опе.
мне тут давеча надо было на первую малинку установить пакет. пишу апт-гет инсталл, а оно мне 404. лезу на archive.raspbian.org а там от папки wheezy и след простыл. и нафига надо было называть сайт archive ? :D из-за хипстеров, мне теперь на эту рухлядь, которая и так по скорости как пень1 нужно что-то обновлять... железка только для spi используется, там новое ничего не нужно, вообще.