The OpenNET Project / Index page

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

Уязвимость в NPM, позволяющая изменить произвольные файлы при установке пакета

16.12.2019 12:14

В обновлении пакетного менеджера NPM 6.13.4, входящего в поставку Node.js и применяемого для распространения модулей на языке JavaScript, устранены три уязвимости (CVE-2019-16775, CVE-2019-16776 и CVE-2019-16777), позволяющие модифицировать или перезаписать произвольные системные файлы при установке пакета, подготовленного злоумышленником. В качестве обходного пути защиты может быть установка с опцией "--ignore-scripts", запрещающей выполнение встроенных пакеты обработчиков. Разработчики NPM проанализировали имеющиеся в репозитории пакеты и не нашли следов использования выявленных проблем для совершения атак.

  • CVE-2019-16777 проявляется в выпусках до 6.13.4 и позволяет перезаписать системные исполняемые файлы в процессе глобальной установки пакета. Подменить можно только файлы в целевом каталоге, куда устанавливаются исполняемые файлы (обычно /usr/local/bin).
  • CVE-2019-16775 и CVE-2019-16776 проявляются в выпусках до 6.13.3 и позволяют записать произвольный файл через создание символической ссылки на файлы вне каталога с модулями (node_modules) или через манипуляции с полем bin в package.json (в поле bin допускалось использование путей с "/../").

    Дополнение: Раскрыты подробности эксплуатации уязвимости.

    1. Главная ссылка к новости (https://blog.npmjs.org/post/18...)
    2. OpenNews: В пакетный менеджер NPM 6.13 добавлены инструменты для финансирования разработчиков
    3. OpenNews: В репозитории NPM выявлен вредоносный пакет bb-builder. Выпуск NPM 6.11
    4. OpenNews: В зависимостях к npm-пакету с установщиком PureScript выявлены вредоносные изменения
    5. OpenNews: Бывший техдиректор NPM развивает распределённый репозиторий пакетов Entropic
    6. OpenNews: В популярный NPM-модуль внедрено вредоносное ПО, копирующее параметры аутентификации
    Лицензия: CC BY 3.0
    Короткая ссылка: https://opennet.ru/52043-npm
    Ключевые слова: npm
    При перепечатке указание ссылки на opennet.ru обязательно


    Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, JL2001 (ok), 12:57, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    ненене, репозиториям мы доверяем! и без запуска установочных скриптов в пакетах никак не возможно устанавливать пакеты!! только так!!!
    а то иначе получатся какие-то простигоспади rpm-юнит-файлы и installd, а этого мы допустить никак не можем!!
     
     
  • 2.2, Аноним (2), 13:04, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +13 +/
    Как будто в .rpm нет скриптов.
     
     
  • 3.16, JL2001 (ok), 16:00, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Как будто в .rpm нет скриптов.

    как будто это что-то хорошее

    лучше бы возразили что в юнитфайлах иногда таки не удаётся без скриптов

     
     
  • 4.25, Аноним (25), 16:37, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > как будто это что-то хорошее

    как будто это что-то плохое

     
  • 2.29, Crazy Alex (ok), 17:27, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Ну да, доверяем, а что? Правда, между репозиториями и NPM всё-таки, видать, есть какое-то различие - что-то я о зловредах в дебиане или там центоси не слышал.
     
     
  • 3.31, Аноним (31), 17:55, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Нет антивируса - нет вируса. Пока гром не грянет мужик не узнает про существование грома. Незнание - сила.
     
  • 3.37, JL2001 (ok), 20:22, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну да, доверяем, а что? Правда, между репозиториями и NPM всё-таки, видать,
    > есть какое-то различие - что-то я о зловредах в дебиане или
    > там центоси не слышал.

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

     

  • 1.3, Грусть (?), 13:05, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    Ха, а то, что эти скрипты зачастую блоб не пойми откуда скачивают - это уже мелочи :)
     
     
  • 2.15, Аноним (15), 15:08, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Блоб не пойми откуда ничем не хуже обычного JS-кода не пойми откуда. И то и то требует доверия к разработчику модуля. На этом доверии всё и строится
     

  • 1.4, Грусть (?), 13:07, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Скриптов быть не должно. Если надо что-то заскриптовать, это должно делаться при запуске сервиса или ином использовании пакета. Как IPS в солярке или как всё в nixos.
     
     
  • 2.8, ЧЯДНТ (?), 13:53, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Сейчас придут адепты GNU Guix.
     
     
  • 3.19, JL2001 (ok), 16:04, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Сейчас придут адепты GNU Guix.

    и что они раскажут?

     
     
  • 4.39, Аноним (39), 21:24, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Что всё есть guile.
     
  • 2.10, Аноним (15), 14:32, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В npm не только скрипты на JS, но и нативные модули/библиотеки, которым требуется компиляция
     
     
  • 3.11, Тоска (?), 14:37, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Поэтому они и тянут блобы. NPM не может заменить системный пакетный менеджер. А они пытается. Результат - на лице.
     
     
  • 4.13, Аноним (15), 14:51, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Пытается заменить только при глобальной установке с '-g', и тут я с вами в основном согласен.

    Но основной кейс иcпользования npm - локальная установка в каталог проекта в 'node_modules' и локальный bin в 'node_modules/.bin' и тут пакетный менеджер никак не может быть заменой с учётом транзитивных зависимостей разных версий в пределах одного проекта, а это распространённое явление при использовании "больших" зависимостей типа реакта, бабеля и т.п.

     
  • 4.20, JL2001 (ok), 16:08, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Поэтому они и тянут блобы. NPM не может заменить системный пакетный менеджер.
    > А они пытается. Результат - на лице.

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

     

  • 1.5, Аноним (5), 13:23, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Запускать npm с sudo - это выстрел в ногу.
    Node с npm должны быть установлены только в хомяке (через nvm).
    Никогда не понимал установку ноды из репозиториев.
     
     
  • 2.6, ЧЯДНТ (?), 13:36, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ... в контейнере на вриталке без доступа к локальной сети
     
  • 2.9, Антон (??), 14:25, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    это скорее не проблема npm, а sudo, который слишком много позволяет
     
  • 2.17, JL2001 (ok), 16:01, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Запускать npm с sudo - это выстрел в ногу.
    > Node с npm должны быть установлены только в хомяке (через nvm).
    > Никогда не понимал установку ноды из репозиториев.

    а rpm с sudo значит можно?

     
     
  • 3.22, Аноним (5), 16:20, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    NPM та еще помойка, оф.репы как-то больше вызывают доверия.
     
     
  • 4.33, JL2001 (ok), 18:25, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > NPM та еще помойка, оф.репы как-то больше вызывают доверия.

    но почему? люди и там и там - уходят проверенные и приходят новые
    а ещё у них время выплаты кредита тикает

     
     
  • 5.40, Аноним (39), 21:27, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    В npm отсутствует вообще какой-либо контроль приходящих людей. В дистрибутивах с этим получше, там доказать квалификацию нужно, и, зачастую, личность подтвердить. Все майнтейнеры Debian, скажем, известны поимённо, а что за васян очередной лефтпад в npm залил — поди разберись.
     
  • 2.34, Аноним (34), 18:58, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Какая разница? Вы полагаете у юзера мало прав? У типичного юзер 99% прав рута и это хорошо если судо ещё не используется для всего, с судо и последний процент исчезает.
     

  • 1.7, Аноним (7), 13:46, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Если к npm-пакетам нет доверия, так что нельзя позволять им работать с произвольными файлами в установочных скриптах, значит не следует вообще устанавливать npm-пакеты.
     
     
  • 2.18, JL2001 (ok), 16:03, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Если к npm-пакетам нет доверия, так что нельзя позволять им работать с
    > произвольными файлами в установочных скриптах, значит не следует вообще устанавливать
    > npm-пакеты.

    а как вы вообще определяете каким пакетам доверять, а каким - нет?
    зы: из зала ещё подсказывают, что скрипты при установке можно и из сети скачать

     
     
  • 3.26, Аноним (25), 16:38, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > а как вы вообще определяете каким пакетам доверять, а каким - нет?

    По исходному коду

     
     
  • 4.28, Аноним (15), 16:49, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Часть пакетов написана на TypeScript и перед публикацией в npm транспилится в JS и минифицируется. Такой транспилированный код вы тоже проверяете на соответствие TypeScript-коду?
    Не говоря о том, что в npm можно залить совсем не тот код, который лежит в VCS.
     
     
  • 5.41, К.О. (?), 21:29, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если проверить нельзя, значит, и доверять такому коду нельзя.
     
  • 5.46, Аноним (46), 23:08, 17/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    транспишяция должна быть частью npm, а не говноскриптами. Скажу больше, по-моему node должен уметь в typescript без транспиляции, нативно. Как и JS-движки. Это позволит им лучше оптимизировать код.
     
  • 4.35, JL2001 (ok), 20:14, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    >> а как вы вообще определяете каким пакетам доверять, а каким - нет?
    > По исходному коду

    серьёзно?
    можно я буду Вам поклоняться, мой Бог? Всезнающий и Всепонимающий

     

  • 1.12, anonymous (??), 14:40, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Какой-то идиотизм. Очевидное же решение - распаковать файлы внутри firejail, там же скомпилять, а потом готовое скопировать, при попытке переписать существующий файл - откат копирования и фейл. Давно уже все необходимые утилиты существуют, почему дистрописатели не используют их?
     
     
  • 2.14, Аноним (14), 14:57, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Это молодая система, подождите...
     
  • 2.24, Аноним (15), 16:32, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Сам npm cli не сказать что быстро развивается в плане новых фич. Не думаю, что сейчас есть ресурсы на это, особенно если учесть, что npm кроссплатформенный.
     
  • 2.27, Аноним (25), 16:39, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что firejail не обязан быть везде установлен.
     
     
  • 3.30, Аноним (30), 17:46, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    мало того, что у них какие то пакеты для жыеса устанавливаются в обход системного менеджера, так еще и сам установщик устанавливается в обход установщика?
     
  • 3.36, JL2001 (ok), 20:18, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Потому что firejail не обязан быть везде установлен.

    а жаль

     
  • 2.45, gogo (?), 23:38, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Какой jail? Какого перца тащить в систему все говно без разбору, а потом разбирать, что за говно притащили?..
     

  • 1.21, Аноним (21), 16:12, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Помнити лифпад!
     
     
  • 2.23, Аноним (5), 16:21, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ловите С89-хипстера!
     

  • 1.32, Аноним (31), 17:58, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Может кто-то уже догадается сделать npm с пакетами проверенными вручную. Да даже за деньги. Red Hat IBM NPM Registry Cloud Enterprise Services. Идею дарю.
     
     
  • 2.44, gogo (?), 23:35, 16/12/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Наверняка кто-то пробовал. И наверняка они разорились на мятно-имбирных таблетках от тошноты для проверяющих...
     

  • 1.42, Michael Shigorin (ok), 22:42, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Шо, опять?!

    // серебряные пули, небитые, некрашеные, пользовалась девушка...

     
  • 1.43, gogo (?), 23:33, 16/12/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Проблема ведь не в том, что скрипт пакета может что-то злонамеренно переписать.
    Проблема в том, что такую возможность рассматривают как вполне вероятную и пытаются от неё защититься!
    Сравнивая с .rpm, КАК можно пользоваться системой, где вероятность распространения злонамеренного кода _теоретически_ НЕ может быть сведена к нулю?
     

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



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

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