Крайне неприятная ошибка закралась в код обновленной версии популярнейшего JavaScript-менеджера пакетов npm (Node Package Manager). Из-за бага изменяется владелец таких критически важных папок, как /etc, /usr, /boot и так далее, после чего Linux-системы фактически теряют работоспособность.
Первые жалобы начали поступать от пользователей (в основном это разработчики ПО и инженеры) около недели назад, еще до релиза, однако разработчики npm, очевидно, не заметили первое предупреждение о проблеме. Непосредственно после выхода обновленной версии был заполнен еще один баг-репорт, а также к нему прибавился шквал сообщений в социальных сетях от возмущенных пользователей.
Dear god... bug in npm changes permissions on / file system destroys productions linux or unix boxes. “sudo npm” will chown “/“. https://t.co/94j5uRNTaf
— nixCraft: The Best Linux Blog In the Unixverse (@nixcraft) February 22, 2018
Would hate to be a Nope.js developer today, sounds like latest NPM fucks your box up pretty bad.
— Bobby 'Tables (@info_dox) February 22, 2018
??? https://t.co/O8BQU4wvhm
К сожалению, после того как обновление npm изменило владельца для критически важных системных папок, у пострадавших переставали работать не только приложения, но и ОС вообще. Многие не нашли иного выхода, кроме повторной установки операционной системы с нуля или «отката» к старому образу. В комментариях на GitHub можно увидеть, как некоторые пользователи сокрушаются о том, что npm «уничтожил три рабочих сервера одним махом».
Проблема не коснулась пользователей Mac и Windows, только пользователей *NIX-систем, в частности FreeBSD.
В настоящее время разработчики менеджера пакетов уже выпустили «безопасную» версию npm 5.7.1, где ошибка в коде была устранена. «Запуск sudo npm от лица пользователя, не имеющего root-прав (root-пользователи не имели подобных проблем), приводил к тому, что разрешения файловой системы претерпевали серьезные изменения», — признали разработчики.