The OpenNET Project / Index page

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

23.02.2018 08:54  Критическая проблема в NPM 5.7, приводящая к смене прав доступа на системные каталоги

В опубликованном вчера выпуске пакетного менеджера NPM 5.7.0 выявлена серьёзная проблема, которая может привести к нарушению нормальной работы компонентов операционной системы. При запуске npm с использованием утилиты sudo (не важно, какая команда выполняется, достаточно запустить "sudo npm --help" или "npm update -g") рекурсивно меняются права доступа на каталоги, относительно корневого префикса npm. Судя по отчётам пострадавших пользователей, после подобного изменения могут возникнуть проблемы с загрузкой операционной системы и работой локальных приложений. Проблема проявляется только при запуске npm с использованием утилиты sudo.

При запуске с применением sudo вместо root в качестве владельца для системных каталогов, включая всё содержимое /etc, /usr и /boot, устанавливается текущий непривилегированный пользователь. Источником проблемы стал переход версии 5.7.0 на новую реализацию mkdir, сохраняющую исходные права доступа и владельца при запуске с правами root с использованием sudo.

Проблема уже решена в обновлении 5.7.1. Массовых проблем удалось избежать благодаря тому, что в репозитории выпуски npm 5.7.x были помечены как экспериментальные и не доставлялись через каналы обновления стабильных релизов. При этом на сайте анонс был опубликован в форме, не отличающейся от объявлений стабильных релизов, что ввело в заблуждение некоторых пользователей, которые попытались перевести на NPM 5.7 свои рабочие системы. Также интересно, что сообщение об ошибке с описанием проблемы было отправлено за неделю до релиза 5.7.0, но осталось без внимания разработчиков.

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



RPM:
   for p in $(rpm -qa); do rpm --setperms $p; do rpm --setugids $p; done

DEB:
   dpkg --get-selections | grep install | grep -v deinstall | cut -f1 | xargs apt-get --reinstall -y --force-yes install

FreeBSD:
   mtree -U -f /etc/mtree/BSD.root.dist
   mtree -U -f /etc/mtree/BSD.var.dist
   mtree -U -f /etc/mtree/BSD.include.dist
   mtree -U -f /etc/mtree/BSD.sendmail.dist
   mtree -U -f /etc/mtree/BSD.usr.dist




  1. Главная ссылка к новости (http://blog.npmjs.org/post/171...)
  2. OpenNews: Сбой антиспам-системы привёл к коллапсу в репозитории NPM
  3. OpenNews: Более половины npm-пакетов могли быть скомпрометированы из-за ненадёжных паролей доступа
  4. OpenNews: Незащищённость NPM к атакам по внедрению вредоносных модулей-червей
  5. OpenNews: Применение тайпсквоттинга для распространения вредоносных модулей NPM, PyPI и Gems
  6. OpenNews: Инцидент с захватом прав на NPM-модуль привёл к сбою в работе проектов, использующих NPM
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: npm
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (-), 09:22, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Почему не православный Yarn? npm кто-то еще используем в вменяемом состоянии?
     
     
  • 2.3, Аноним (-), 09:43, 23/02/2018 [^] [ответить]    [к модератору]
  • +/
    Ярн тоже баги выдаёт, правда не такие лютые
     
     
  • 3.60, Аноним (-), 03:47, 24/02/2018 [^] [ответить]    [к модератору]
  • +3 +/
    > Ярн тоже баги выдаёт, правда не такие лютые

    Можно подумать вебмакаки перестанут быть вебмакаками и научатся софт писать нормально, а не так как они обычно кодят для своей клиентуры.

     
  • 2.22, й (?), 13:17, 23/02/2018 [^] [ответить]    [к модератору]
  • +/
    там речь про -g, который в yarn вообще выпилили
     
     
  • 3.29, НяшМяш (ok), 14:44, 23/02/2018 [^] [ответить]    [к модератору]
  • +1 +/
    потому что вместо него есть ключевое слово global
     
     
  • 4.70, Prototik (?), 16:53, 25/02/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Который, однако, не лезет в систему, а складывает всё в домике пользователя.
     
  • 3.30, Аноним (-), 14:50, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    https://yarnpkg.com/en/docs/migrating-from-npm#toc-cli-commands-comparison
     
  • 2.35, KonstantinB (ok), 17:41, 23/02/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Да. Потому что лень мигрировать и объяснять всем, что поменялось и что теперь запускать.

    Хотя надо бы.

     
  • 2.72, Аноним (-), 20:36, 28/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Впервые попробовать решил для установки фреймворка Semantic UI. Не шмогло.
     
  • 1.2, Аноним (-), 09:37, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +10 +/
    Что-то я давно его не видел, так что побуду за него, кхм.. node js не нужен, вспомнити npm left pad
     
     
  • 2.5, Аноним (-), 10:35, 23/02/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    Он говорил вообще жс не нужен, вроде.
     
  • 1.4, ПользовательНПМ (?), 10:14, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +2 +/
    К слову, чтобы не запускать npm с рут правами:
    mkdir ~/.node
    echo 'prefix = ~/.node ' >> ~/.npmrc
    echo 'export NPM_PACKAGES="$HOME/.node"' >> ~/.bashrc
    echo 'export PATH="$NPM_PACKAGES/bin:${PATH}"' >> ~/.bashrc
    echo 'export NODE_PATH="$NPM_PACKAGES/lib/node_modules"' >> ~/.bashrc
    echo 'unset MANPATH' >> ~/.bashrc
    echo 'export MANPATH="$NODE_PARENT/share/man:$(manpath)"' >> ~/.bashrc
     
     
  • 2.6, Аноним (-), 10:37, 23/02/2018 [^] [ответить]    [к модератору]  
  • –12 +/
    Bash/ZSH - фу
    NPM - фу
    env export - фэ
     
     
  • 3.12, Аноним (-), 11:04, 23/02/2018 [^] [ответить]    [к модератору]  
  • +4 +/
    batfile рулез, да. echo %~dp0
     
  • 2.13, Michael Shigorin (ok), 11:06, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    > unset MANPATH
    > export MANPATH=...

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

     
     
  • 3.16, EHLO (?), 12:32, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Зависит от того что будет делать manpath , очевидно втч читать MANPATH ... весь текст скрыт [показать]
     
     
  • 4.46, angra (ok), 20:41, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Ну тут всё-таки стоило объяснить подробней, что manpath в случае непустой переме... весь текст скрыт [показать]
     
  • 4.49, Аноним (-), 22:13, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    [code]$ manpath
    bash: manpath: command not found[/code]Что за manpath?
     
     
  • 5.52, angra (ok), 00:26, 24/02/2018 [^] [ответить]     [к модератору]  
  • +1 +/
    В debian и rhel дистрах идет в составе пакета man-db вместе с собственно man, а ... весь текст скрыт [показать]
     
  • 3.27, Аноним (-), 14:33, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Тю, обычная практика. Так во многих конфигах делают: сначала все разбиндить, а потом уже свое.
     
     
  • 4.45, angra (ok), 20:20, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Копипастить не думая Да, это обычная практика дурачков Они ведь даже не пытают... весь текст скрыт [показать]
     
  • 3.47, Ne01eX (ok), 20:58, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Миша, ну от кого, так от тебя такой хни не ожидал -D Наивно полагать что кто-т... весь текст скрыт [показать]
     
     
  • 4.48, Аноним (-), 22:11, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    > Но я бы порекомендовал всем совсем не использовать ни NPM ни Node.js. Без объяснения причин. Без смайлов.

    А что взамен? (тоже серьёзно спрашиваю)

     
     
  • 5.63, Ne01eX (ok), 13:13, 24/02/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    Для управления пакетами вполне хватит системы управления пакетами того дистрибут... весь текст скрыт [показать]
     
     
  • 6.66, Ne01eX (ok), 17:38, 24/02/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    У drupal, кстати, тоже есть свой менеджер модулей и тем Но обновлять теже модул... весь текст скрыт [показать]
     
  • 4.51, angra (ok), 00:20, 24/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Очень даже важно Например в Go инициализация пустым значением при создании пере... весь текст скрыт [показать]
     
     
  • 5.59, Аноним (-), 03:45, 24/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Если подумать, NPM и все для чего он нужен - одно большое минное поле Кто ж вин... весь текст скрыт [показать]
     
  • 5.65, Ne01eX (ok), 17:34, 24/02/2018 [^] [ответить]    [к модератору]  
  • +/
    /me махнул рукой...

    Да, делайте как хотите...

     
  • 4.54, Кабан ЛяЛя (?), 02:25, 24/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Хаскела на Вас нет...
     
  • 4.69, Аноним (-), 10:06, 25/02/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Сколько лет уже скрипты пишу, bash, dash, sh перезаписывают уже существующее значение, так что Михаил прав, нунужные итерации.
     
  • 2.14, Аноним (-), 11:39, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    > echo 'unset MANPATH' >> ~/.bashrc

    А вы смелый! вы забыли еще rm rf...

     
  • 2.56, qsdg (ok), 03:37, 24/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Для этого уже давно есть NVM С ним и рута не нужно, и всё хранится в одной папк... весь текст скрыт [показать]
     
  • 1.11, Michael Shigorin (ok), 11:04, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Эк издевательски-то очередную кривулину назвали: correct-mkdir.js.

    И вот всё у них в песочнице так :-/

     
  • 1.15, Аноним (-), 12:16, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    осталось блокчейн к этому всему прикрутить и совсем казуально будет.
     
     
  • 2.17, Аноним (-), 12:39, 23/02/2018 [^] [ответить]    [к модератору]  
  • +7 +/
    Поедемте на гироскутерах, отвеадаем смузи в барбершопе, дружище.
     
     
  • 3.23, fail_ (?), 13:34, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    > Поедемте на гироскутерах, отвеадаем смузи в барбершопе, дружище.

    -1
    не раскрыта тем барбершопофф

     
  • 1.18, index0h (ok), 12:40, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +6 +/
    Традиционные факапы npm не прекращают удивлять))
     
  • 1.19, Аноним (-), 12:56, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Зачем npm install -g вообще нужен? По идее можно же в любую папку вытянуть npm пакет со всеми необходимыми зависимостями?
     
     
  • 2.20, Бог Смузихлебов (?), 12:58, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Это что бы без песочницы уничтожать хостовый сервер ;)
     
  • 2.24, Сергей (??), 13:45, 23/02/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Кто то использует инструменты написаные на ноде, а их нужно устанавливать глобально
     
     
  • 3.26, Аноним (-), 14:21, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Для глобальной установки есть пакетный менеджер Всё слаку ругили за make instal... весь текст скрыт [показать]
     
     
  • 4.33, Аноним (-), 15:40, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Так ведь при sudo и global пакетный манагер не спасёт ибо npm даже системные бинарники может переписывать
     
     
  • 5.50, Аноним (-), 22:19, 23/02/2018 [^] [ответить]     [к модератору]  
  • +/
    Зачем sudo и global, если есть пакетный менеджер, как раз и нужный для того, что... весь текст скрыт [показать]
     
     
  • 6.71, й (?), 14:02, 26/02/2018 [^] [ответить]    [к модератору]  
  • +/
    а вот теперь покажи jshint, gulp, lesscss и bower в твоём yum. в rh7+epel нету, в ubuntu тоже, в homebrew тоже. никто так js-пакеты не пакетирует (и я даже знаю, почему).
     
  • 1.21, Аноним (-), 13:12, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    Кто-то запускает npm не в контейнере?
     
     
  • 2.42, Аноним (-), 19:37, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    страдальцы, которым приходится кодировать код или учиться этому
     
  • 1.25, Аноним (-), 14:02, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Какие есть варианты пробросить PATH внутрь контейнера с нодой и тулкитом глобальным?
     
     
  • 2.34, имя (?), 16:22, 23/02/2018 [^] [ответить]     [к модератору]  
  • –1 +/
    https docs docker com engine reference builder env https docs docker com en... весь текст скрыт [показать]
     
  • 1.28, Аноним (-), 14:40, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –2 +/
    Дорогие анонимы, а расскажите чем так плох npm?
    Я вот пользуюсь npm и да, некоторые пакеты требуют установки с -g.
    Брат жив, ярн - не пробовал, чем он лучше?
    npm - стандарт.
     
     
  • 2.43, Аноним (-), 19:38, 23/02/2018 [^] [ответить]     [к модератору]  
  • +2 +/
    ты новость-то читал ... весь текст скрыт [показать]
     
  • 2.61, Аноним (-), 06:44, 24/02/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    ты npm leftpad-то вспомнил? Вот вначале вспомни npm leftpad, а потом уже спрашивай. Null undefined. 0.1 + 0.2 = 0.30000000000000004.
     
     
  • 3.62, Аноним (-), 11:38, 24/02/2018 [^] [ответить]    [к модератору]  
  • +1 +/
    Ураааа, двоечник вернулся!!!
     
  • 1.31, Аноним (-), 15:03, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Вот еще на посмотреть как альтернатива webpack https://parceljs.org
     
     
  • 2.39, Аноним (-), 17:55, 23/02/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    Логично: "Вэб-пак для вэб-макак".
     
  • 2.58, Аноним (-), 03:40, 24/02/2018 [^] [ответить]    [к модератору]  
  • –1 +/
    > Вот еще на посмотреть как альтернатива webpack https://parceljs.org

    Недостаточно XMRов! Нужно больше кривой хни от вебмакак, милорд!

     
  • 1.40, vitalif (ok), 18:02, 23/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Почитать комменты опеннета, так всё сплошь суровые барадатые дятьки, пищущие на сях и только на сях )))

    А кто ж блин npm-модули то пишет? Ёжики?))

     
     
  • 2.41, Аноним (-), 19:30, 23/02/2018 [^] [ответить]    [к модератору]  
  • +2 +/
    > А кто ж блин npm-модули то пишет? Ёжики?))

    Вэб-макаки.

     
  • 2.44, Аноне (?), 19:51, 23/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Кто робко или в тряске жалуется на минусы PHP
     
  • 2.53, Анонимусис (?), 00:51, 24/02/2018 [^] [ответить]    [к модератору]  
  • +/
    пишу на сях и плюсах под убунты и не только за деньги

    спрашивайте свои ответы

     
  • 2.55, arisu (ok), 03:03, 24/02/2018 [^] [ответить]    [к модератору]  
  • –2 +/
    такие же дeбилы, которые потом это используют.
     
     
  • 3.57, Аноним (-), 03:38, 24/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Хипстопроблемы. Как пишут софт, так и тестируют.
     
  • 1.64, sleeply4cat (ok), 14:37, 24/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Зачем вообще npm лапает эти директории?
     
     
  • 2.67, Аноним (-), 21:11, 24/02/2018 [^] [ответить]    [к модератору]  
  • +/
    Потому что может.
     
  • 1.68, Димон (??), 22:07, 24/02/2018 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    это какими придурками нужно быть, чтобы спроектировать программу, которая при выполнении пути программы --help меняет права каких-то там директорий?

    Жаваскриптуны и все им сочувствующие (типа Mozilla) не должны заниматься программированием.

     

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


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