Pull to refresh

Comments 10

Кажется, единственный правильный способ — вводить в менеджер пакетов (npm в данном случае) систему контроля прав доступа, которая бы, например, не давала бы выполнить curl на произвольный хост. Что-то в духе Linux file permissions, как сделано в Android или java security manager.
Статический анализ кода пакетов напоминает подход антивирусов, а потому столь же ненадежен и, скорее всего, столь же провален.
Этого далеко не достаточно. С npm никогда не работал, и не уверен что такой пример сработает, но думаю что должно: имеем пакет от которого зависит какой-нибудь http-сервер, проверяем наличие данного сервера в текущей установке и колбэками, манкипатчингом или еще какими-нибудь ухищрениями заставляем http-сервер добавить в кукисы пользователя те же переменные окружения.
Для защиты от таких атак нужно полностью изолировать пакеты и реализовать аутентификацию/авторизацию на уровне public API пакетов (фактически использовать пакеты в качестве микросервисов).
Ну в дополнение к вышеописанной проблеме, модуль может нести в себе вредную нагрузку, про которую не написали в ридми (например, майнинг биткойнов), и скрыть её обфускацией.
Можно ещё вспомнить https://habrahabr.ru/post/307822/
На всякий случай обращаю внимание, что по вашей ссылке находится статья с тегом «юмор». Шутка плохо вяжется с возможностью вредной нагрузки.
Думаю самый эффективный способ борьбы с данной проблемой — введение какой-либо сертификации на пакеты. То есть предполагаю возникновение какой-либо организации которая будет давать устанавливать оценку «надежности» пакета. Все что не обладает соответствующим сертификатом все еще можно использовать, но на свой страх и риск.

РосПакетНадзор? Не, спасибо, нам одного одобренного пакета хватило.
Хотите помочь в решении — присоединяйтесь, пишите тесты, рассылайте пулл-реквесты в крупные проекты, добавляющие защиту. Не верите, что такое возможно — предъявите способ обойти paraquire.

Причем здесь надзоры какие-либо? Что из себя представляют собой большинство современных linux-дистрибутивов? Это как раз таки пакетный менеджер + репозиторий с рекоммендуемыми или нерекоммендуемыми пакетами. Кто выбирает какие пакеты можно безопасно устанавливать, а какие можно ставить только на свой страх и риск? Никто не запретит вам установить в убунту какой-нибудь странный пакет, но в стандартном репозитории его не появится
По сути, эти же pre/post можно также позаражать bower/composer
Sign up to leave a comment.