The OpenNET Project / Index page

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

В зависимостях к npm-пакету с установщиком PureScript выявлены вредоносные изменения

15.07.2019 13:43

В зависимостях к npm-пакету с установщиком PureScript выявлен вредоносный код, проявляющийся при попытке установки пакета purescript. Вредоносный код встроен через зависимости load-from-cwd-or-npm и 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, зеркалирующий входные запросы в качестве выходных значений.

Спустя 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.

  1. Главная ссылка к новости (https://harry.garrood.me/blog/...)
  2. OpenNews: Зафиксирована подстановка вредоносного кода в Ruby-пакет Strong_password
  3. OpenNews: В каталоге PyPI выявлены вредоносные пакеты
  4. OpenNews: Компрометация репозиториев дополнений к Kodi привела к распространению вредоносного кода
  5. OpenNews: В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации
  6. OpenNews: Из каталога Docker Hub удалено 17 образов контейнеров с вредоносным кодом
Лицензия: CC-BY
Тип: Проблемы безопасности
Ключевые слова: npm, malware
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (53) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.2, Аноним (2), 14:05, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +16 +/
    Ух, прямо Санта-Барбара какая-то.
     
     
  • 2.8, Andrey Mitrofanov_N0 (??), 14:28, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Ух, прямо Санта-Барбара какая-то.

    Вы переоцениваете драматичность происходящего.... бега по граблям.

     
     
  • 3.32, Аноним (32), 20:52, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Улыбнуло.
    Забег по расставленным жюри граблям.
     
  • 2.30, freehck (ok), 18:43, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +10 +/
    > Ух, прямо Санта-Барбара какая-то

    А написано, как будто Арменфильм постарался:

    > Примечательно, что сопровождением пакетов с данными зависимостями занимается изначальный автор npm-пакета с инсталлятором PureScript, который до недавних пор занимался сопровождением данного npm-пакета, но около месяца назад пакет перешёл к другим сопровождающим.

    Пакет с того берега интернета, который хакеру не перелететь, опсу не перебежать. Хоть мейнтейнер не мейнтейнер, так сеть от блекаута на город упала и насмерть убила. А из оптоволокна хороший букет вышел. Тут автор кааааак подпрыгнет!

     

  • 1.3, fi2fi (?), 14:09, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Шо, опять!!!

    когда же появятся обязательные подписи в NPM ???

     
     
  • 2.6, пох. (?), 14:15, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +14 +/
    чем тебе подписи или гитхляп помогут от ситуации "разработчик зависимости стопиццотого уровня вложенности (помнити npm leftpad!) засунул в нее трояна"?

    просто он будет врать не "акаунт на npm скомпроментировали враги", а "враги украли подпись, вместе с симкой, и вот, накоммитили и подписали".

    это ваш жабоскриптик, с зависимостями всего от всего, он так работает, это не лечится.

     
     
  • 3.7, Аноним (7), 14:24, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >  это не лечится.

    Ты болен, неуважаемый.

     
     
  • 4.14, Wilem (?), 15:16, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Почему? Всё правильно, «лечится» без мягкого знака.
     
  • 4.33, Аноним (32), 20:54, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Таки не лечится. За всю историю человечества. )))
     
  • 3.12, Аноним (12), 14:54, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > это ваш жабоскриптик, с зависимостями всего от всего, он так работает, это не лечится

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

     
     
  • 4.16, пох. (?), 15:33, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    как и любой другой язык "быстрого прототипирования", да.

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

     
     
  • 5.19, НяшМяш (ok), 16:33, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Даже фиксация версий зависимостей не спасёт. Нужно зависимости с собой бандлить.
     
     
  • 6.21, Andrey Mitrofanov_N0 (??), 16:42, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Даже фиксация версий зависимостей не спасёт. Нужно зависимости с собой бандлить.

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

     
  • 6.29, пох. (?), 18:11, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    ну вот в рамках одного хаба - остальное решается технико-административными путями.

    а так да, правильно именно бандлить, зафиксируешь версию - а leftpad выпилен разработчиком целиком и со всеми версиями сразу.

     
  • 6.34, Аноним (32), 20:55, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Так Дмитрий-то так и спрашивает: а ты зависимости сам собираешь ли. Да.
     
  • 5.36, kai3341 (ok), 23:10, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >  как и любой другой язык "быстрого прототипирования", да.
    > фикcация версий зависимостей, разумная осторожность при обновлениях, иногда и замена чужого универсального комбайна своей мелкой открывашкой - это не про них.

    Там есть фиксация зависимостей. И задействовать мелкую открывашку вместо универсального комбайна никто не запрещает.

    Что является наиболее узким местом web-приложения? Неужели код на языке "быстрого прототипирования"?

    Расскажи, кем ты работаешь? Можно одной ссылкой на linkedin. Меня не перестаёт удивлять узость твоего мышления и активность комментирования

     
  • 3.13, kai3341 (ok), 14:56, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Или у тебя много сторонних библиотек и мало кода, или у тебя мало сторонних библиотек и куча говнокода
     
     
  • 4.15, Wilem (?), 15:18, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Или у тебя много сторонних библиотек с говнокодом и мало своего говнокода, или у тебя мало сторонних библиотек с говнокодом и куча своего говнокода

    Поправил.

     
     
  • 5.18, vitalif (ok), 16:17, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Если у тебя много сторонних библиотек - то много чужого говнокода, а если мало - то некоторое количество своего. Но по крайней мере ты точно знаешь, что вставить в него rm -rf / можешь только ты сам
     
     
  • 6.22, Wilem (?), 16:54, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вывод: заменять версии надо запретить, а новые версии билдить из исходников и только после ревью несколькими независимыми разработчиками. Прям на уровне центральной свалки откуда все качают.
     
     
  • 7.25, Wilem (?), 17:15, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Правда, тогда надо ещё придумать защиту от новых аккаунтов которые могут фейково сделать ревью.
     
  • 7.35, Хипстер Ведерный (?), 23:02, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, нужно код новой версии смерживать вручную со старой. Смотреть построчно новую писанину. Очевидно, что мутный код должен быть заметен компетентному глазу.
     
     
  • 8.37, Led (ok), 23:59, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Всем известно где у вэб-макаки находится этот компетентный глаз ... текст свёрнут, показать
     
     
  • 9.39, Хипстер Ведерный (?), 02:08, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Не вижу связи между сферой человеческой деятельности и качеством его работы Люб... текст свёрнут, показать
     
     
  • 10.44, Аноним (44), 06:52, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вот же связь ... текст свёрнут, показать
     
     
  • 11.48, Хипстер Ведерный (?), 10:26, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Они как раз просто считают деньги, ничего личного Должны происходить подобные и... текст свёрнут, показать
     
  • 4.31, Аноним (31), 19:14, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > куча говнокода

    , которую можно подрихтовать до библиотеки и выложить в npm :^)

     
     
  • 5.42, KonstantinB (ok), 03:59, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    До библиотеки? Одной?

    Не... Надо кучу разложить по маленьким баночкам и коробкам от спичек. Так, чтобы не больше лефтпада. Будет сразу пара тыщ библиотек!

     
  • 2.41, KonstantinB (ok), 03:56, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И чем они помогут, когда "злоумышленник" - это сам мейнтенер? Меньше поверят, что "аккаунт воз хакд"? :-)
     

  • 1.4, Аноним (4), 14:10, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    когда же появятся обязательные подписи в NPM ???

    а зачем, разве кому то нужен порядок в этом болоте ?

     
  • 1.5, Аноним (5), 14:10, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Да запретить аплоадить пакеты в npm - и всё. Разработчик должен сам запушить в гитхаб изменения, затегать релиз, а npm бы автоматом запаковал. Ну или предоставил бы кнопку "Чекнуть мой гитхаб на предмет новых релизов".

    То же касается остальных пакетных репозиториев по ссылкам к новости.

     
     
  • 2.9, Andrey Mitrofanov_N0 (??), 14:31, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >запретить аплоадить пакеты
    >должен сам
    > запушить в гитхаб
    >npm бы автоматом запаковал.
    >гитхаб на предмет новых
    > релизов".

    Сим запрещаю тебе камментиь на опенете про пакеты и йих манагемент, и гидхаю заодно.

    Выполняй?

     

  • 1.10, AnonPlus (?), 14:41, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    TL;DR

    У автора пакета отжали пакет и он стал мелко пакостить.

     
     
  • 2.11, Дворник (??), 14:51, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > У автора пакета отжали пакет и он стал мелко пакостить.

    Или враг автора пакета вовремя воспользовался случаем.
    Так или иначе, автор дескредитирован донельзя.

      

     
     
  • 3.38, Led (ok), 00:02, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > автор дескредитирован донельзя.

    Как можно дИскредИтировать вэб-макаку?

     
     
  • 4.52, CryNet (?), 09:35, 17/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А ты какая *-макака будешь?
     
  • 2.17, Аноним (44), 15:52, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Какой смысл автору заниматься подобным?
     
     
  • 3.28, Аноним (28), 18:09, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Неразвитые социальные навыки и общая неадекватность.
     
     
  • 4.45, анон (?), 08:01, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    А как же веселье?
    А как же осуществить акт дефекации на стол?
    Я вот в больничках, где разгреб все говно и поднял k8s, на прощанье все положил и сломал.
     
     
  • 5.47, Аноним (44), 09:55, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это уже граничит с криминалом.

    Веселье - это когда т.н. разработчики Росы сначала принимают мои решения их недоделок в свой т.н. продукт, а потом удаляют исходники в моих репозиториях, потому что "мы не знаем что ждать от этого неадеквата". Я вот тоже не знаю, что же я мог такое учудить в персональном git, кроме как пробить кое-кому шапочку из фольги. ;-)

     
     
  • 6.50, админ (?), 13:56, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это граничит с идиотизмом, ибо нефиг выкидывать админа, если все работает.
     
     
  • 7.51, Аноним (44), 14:51, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Это граничит с идиотизмом, ибо нефиг выкидывать админа, если все работает.

    Это банальная жадность, которая мешает принимать верные решения. Дайте-ка угадаю. Взяли на место админа племянничка-студента, а вторую пол-ставки оприходовали. Таких великих комбинаторов достаточно лишь подтолкнуть в нужном направлении, и новоиспечённый гений сам всё испортит.

     

  • 1.20, Аноним (20), 16:39, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что это вообще за пюре-скрипт, зачем он?
     
     
  • 2.23, Аноним (23), 16:55, 15/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Горе-скрипт
     
  • 2.40, KonstantinB (ok), 03:52, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это такой язык, похожий на Haskell, но не Haskell, компилирующийся в JavaScript. Кроме двух с половиной энтузиастов, не нужен никому.
     

  • 1.24, Аноним (24), 16:55, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Что же за неприятные обсуждения такие, с которыми передавали власть?
     
  • 1.26, Ilya Indigo (ok), 17:43, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Жил_был_пёс.jpg
     
  • 1.27, Аноним (27), 17:47, 15/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    npm - это троян
     
     
  • 2.46, Andrey Mitrofanov_N0 (??), 09:26, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > npm - это троян

    и броузер - троян,
    и интнернет - троян,
    и общество - троян,
    и его экономмодель - троян,
    и ....

    покайтеся, грешниуи, конь бледный на колёсиках -- у ворот.  <><><<>

     
     
  • 3.53, Andrey Mitrofanov_N0 (??), 10:11, 17/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> npm - это троян
    > и броузер - троян,
    > и интнернет - троян,
    > и общество - троян,
    > и его экономмодель - троян,
    > и ....

    http://techrights.org/wp-content/uploads/2019/05/microsoft-borg.jpg
    http://techrights.org/2019/07/14/sociopathy-incompetence-and-intolerance/

    [I] “The choice for mankind lies between freedom and happiness and for the great bulk of mankind, happiness is better.” [/I]
    ― George Orwell, 1984

     

  • 1.43, Пейтонист (?), 05:47, 16/07/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем сразу обновляться до последней версии?
    Странные проблемы у людей, только выложили корявый пакет, сразу напарываются, будто сидят и ждут когда выйдет обновление.
    Работает на старой, и пусть работает.

    Хотя конечно может так и есть

     
     
  • 2.49, Аноним (49), 12:50, 16/07/2019 [^] [^^] [^^^] [ответить]  
  • +/
    с этими обновлениями у них как шило в опе.
    мне тут давеча надо было на первую малинку установить пакет. пишу апт-гет инсталл, а оно мне 404. лезу на archive.raspbian.org а там от папки wheezy и след простыл. и нафига надо было называть сайт archive ? :D   из-за хипстеров, мне теперь на эту рухлядь, которая и так по скорости как пень1 нужно что-то обновлять... железка только для spi используется, там новое ничего не нужно, вообще.
     

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



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

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