Pull to refresh

Comments 27

Иногда кажется, что одно из предназначений экосистемы NodeJS/NPM — это пособие для изучения ИБ))

Так он безобидный вроде:)
Но код почитаешь — пугает. Пусть и закомментарено все что нужно — но все равно пугает. Особенно порадовали сообщения в консоль:)
закрадывается мысль делать npm install и npm uninstall на специальной виртуальной машине, которая создается с доступом только к определенным папкам

в идеале, это могли бы реализовать на уровне npm — автоматически запускается виртуальная машина с минимальным линухом на борту, к ней подключается папка проекта как жесткий диск — и после install все отключается, ты работаешь в обычной среде
UFO just landed and posted this here
Тут по идее система прав доступа нужна: на системные пакеты типа fs или http, на доступ к глобальному объекту, на установку бинарных пакетов. Причем на зависимости по умолчанию нужно распространять права пакета, который их подтянул.
Тут вариантов не так много, т.к. тот же пакет будет крутиться у вас на проде

Один из вариантов — не использовать сторонние пакеты в рантайме без крайней необходимости.

В сочетании с iframe ваш совет хорошо работает для форм авторизации и платежных форм, но слабо применим для всего остального.
Не понял причем тут iframe и остальное. Я имел ввиду, можно делать клиентское приложение без использования сторонних библиотек и фреймворков в рантайме. Во многих ситуациях такой вариант вполне подходит.
UFO just landed and posted this here
мои приложения работают только в браузере и не используют пользовательские данные, поэтому для меня критична только фаза инсталла

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

Приложения не используют, а входящие в них пакеты?

логику понял, в пакетах могут быть зловреды, то есть безопасность пользователей под вопросом, но доступ к файловой системе разработческой машины на этапе инсталла — это вообще самая большая дыра, так как может разрушить кучу вещей, включая другие проекты. При установке через виртуальную систему я могу закрыть хотя бы ее — и, вероятно, в будущем так и сделаю.
пробовали Qubes OS? там это всё по-умолчанию.
очень интересный проект, мечта параноика )
Кста-ати в докере так и делают, делать установку в одном образе и переносить всё установленное в другой — не редкость.
UFO just landed and posted this here

С другой стороны всё распространяется исходниками и в теории можно накручивать автоматику с проверками. А в nuget распространяют бинари, которым надо доверять. Хорошо хоть отказались от скриптов в новых версиях

Исходники это конечно хорошо. Но ведь и язык прямо создан для обфускации.

У автора fake-template нет времени, чтобы отделять тесты от непосредственного кода

Видимо, автор любит Rust, в котором это распространенная практика.

Несмотря на всё это npm отлично справляется. Есть система безопасности, пакеты мониторятся.


Все пакеты найденные в статье имеют 0 а то и меньше установок. Учитывая популярность npm не стоит этому удивляться. Конечно бывают и большие хаки (как с eslint) и они являются желаймой целью хакеров.


Думаю централизованность npm тут выигрывает у например децентрализованого go. Кто будет проверять все сущ репы? А если популярная репа окажется хакнута?

Думаю централизованность npm тут выигрывает у например децентрализованого go. Кто будет проверять все сущ репы? А если популярная репа окажется хакнута?

В чем же выигрывает?


  • В том, что есть какие-то парни в npm, на которых в случае взлома можно спихнуть вину?
  • В том, что твоим пакетом управляет какая-то левая компания? Вспомните историю с leftpad.
  • В том, что пакет != код из репозитория, и уязвимости как с тем же eslint в принципе возможны?

Кто будет проверять все сущ репы?

Это задача инженера, который подключает пакет.


А если популярная репа окажется хакнута?

В полной мере от этого никто не застрахован. У того же Go и в случае mod и в случае dep отсутствуют preisntall, postinstall и вот это вот все, что закрывает довольно большой источник уязвимостей.

В том, что есть какие-то парни в npm, на которых в случае взлома можно спихнуть вину?

Это плюс npm что есть хотя бы кто-то кто проверяет и дорожит своей репутацией.


В том, что твоим пакетом управляет какая-то левая компания? Вспомните историю с leftpad.

Вспомнил. Что дальше? Из-за того что есть npm пакет бытро вернули, убрали возможность удалять пакеты.


А что было бы если кто-то удалить свою Go репу? А если она была бы такая же популярная как left-pad? Думаю прошло бы приличное количество времени прежде чем все зависимые репы обновились бы и сколько всё было бы сломано никто не знает.


История с left-pad стала такой знаменитой благодоря размером npm.


Это задача инженера, который подключает пакет.

Это справедливо как для npm, так и для go.


В полной мере от этого никто не застрахован. У того же Go и в случае mod и в случае dep отсутствуют preisntall, postinstall и вот это вот все, что закрывает довольно большой источник уязвимостей.

Тут согласен, это минус npm.

Это плюс npm что есть хотя бы кто-то кто проверяет и дорожит своей репутацией.

Ок, вот смотрите: есть github на нем есть проект MyVendor\MyProject. Проект дико популярен, все здорово, его аудитом, пусть и косвенно занимаются люди, которые его используют. То, что я вижу в репозитории и то, что загрузится в зависимости — одно и то же.


Теперь берем npm. Так же с пакетом MyProject. Как я могу посмотреть код пакета? Только установив его через npm. Потому, что содержимое пакета и содержимое репозитория — это разные вещи.


Теперь вернемся к аудиту, который администрация npm вынуждена делать, что бы оставаться востребованной. Этот самый аудит когда происходит? Постфактум, в зависимости от популярности пакета. Это значит, что от момента публикации до нахождения проблем может пройти довольно много времени. Если проект не популярен — до него могут руки и не дойти.


Теперь вопрос, а за что они (npm) отвечают, особенно с учетом того, что большинство пакетов под MIT/BSD/WTFPL?


Вспомнил. Что дальше? Из-за того что есть npm пакет бытро вернули, убрали возможность удалять пакеты.

Не вспомнили. Причина удаления leftpad автором заключается в том, что другой пакет (kik) этого же автора администрация npm отозвала, поставив перед фактом, нарушая собственные правила.

Ну так представьте что тот же github точно так же удалит чужой репозиторий из-за юридических проблем, а автор обидится и удалит вообще все свои репозитории…
Sign up to leave a comment.

Articles