Size: a a a

2020 May 26

EL

Evgeniy Lazarev in BeerJS Summit
я имею в виду, в какой момент он придёт?
источник

AR

Alexey Raspopov in BeerJS Summit
В момент следующей загрузки зависимостей без кеша
источник

EL

Evgeniy Lazarev in BeerJS Summit
Alexey Raspopov
В момент следующей загрузки зависимостей без кеша
почему может произойти загрузка зависимостей?
источник

AR

Alexey Raspopov in BeerJS Summit
Новая машина, другая машина, зависимость подключенная кем-то другим
источник

JF

Jelly Fish in BeerJS Summit
источник

EL

Evgeniy Lazarev in BeerJS Summit
Alexey Raspopov
Новая машина, другая машина, зависимость подключенная кем-то другим
так а package-lock не лочит хэш кода что ли?
источник

EL

Evgeniy Lazarev in BeerJS Summit
он же коммитится
источник

JF

Jelly Fish in BeerJS Summit
Evgeniy Lazarev
так а package-lock не лочит хэш кода что ли?
перед тем как отправить в прод ребята из npm рекомендуют делать shrinkwrap
источник

AR

Alexey Raspopov in BeerJS Summit
Evgeniy Lazarev
так а package-lock не лочит хэш кода что ли?
У тебя на всех машинах и все в команде пишут npm ci?
источник

EL

Evgeniy Lazarev in BeerJS Summit
Alexey Raspopov
У тебя на всех машинах и все в команде пишут npm ci?
если в мире зависимостей существует такой бэкдор, то, конечно, нужно использовать все доступные практики и способы защиты, какие только возможны. это же полное днище
источник

EL

Evgeniy Lazarev in BeerJS Summit
Jelly Fish
перед тем как отправить в прод ребята из npm рекомендуют делать shrinkwrap
зловредный код на компе разработчика тоже неприятен. конечно не так, как на проде
источник

Sergey Фrolov in BeerJS Summit
Подпись пакетов
источник

Sergey Фrolov in BeerJS Summit
Смотрим в сторону дебиана
источник

Sergey Фrolov in BeerJS Summit
И других
источник

EL

Evgeniy Lazarev in BeerJS Summit
Я вижу воркфлоу таким:

1. Разработчик ставит какую-то зависимость: npm install --save beerjsplugin
2. Зависимость добавляется в основной package.json проекта
3. Зависимость скачивает свои зависимости
4. После установки запрошенной зависимости и всех её зависимостей автоматически запускается npm audit, который чернокоробочно что-то проверяет и даёт уверенный ответ, всё ли в коде нормально. Если не нормально — зовёт человека и не даёт ничего сделать, пока человек не подтвердит, что всё подозрительное проверил лично
5. В package-lock.json проекта прописываются все жёстко зафиксированные (установленные только что) версии каждой зависимости, у каждой зависимости считается хэш кода и тоже остаётся в package-lock.json

Не понимаю, как в этом воркфлоу можно получить вредоносный код. Расскажите, пожалуйста?
источник

AR

Alexey Raspopov in BeerJS Summit
Evgeniy Lazarev
Я вижу воркфлоу таким:

1. Разработчик ставит какую-то зависимость: npm install --save beerjsplugin
2. Зависимость добавляется в основной package.json проекта
3. Зависимость скачивает свои зависимости
4. После установки запрошенной зависимости и всех её зависимостей автоматически запускается npm audit, который чернокоробочно что-то проверяет и даёт уверенный ответ, всё ли в коде нормально. Если не нормально — зовёт человека и не даёт ничего сделать, пока человек не подтвердит, что всё подозрительное проверил лично
5. В package-lock.json проекта прописываются все жёстко зафиксированные (установленные только что) версии каждой зависимости, у каждой зависимости считается хэш кода и тоже остаётся в package-lock.json

Не понимаю, как в этом воркфлоу можно получить вредоносный код. Расскажите, пожалуйста?
Следующий человек делает пулл и npm install вместо npm ci
источник

EL

Evgeniy Lazarev in BeerJS Summit
Alexey Raspopov
Следующий человек делает пулл и npm install вместо npm ci
И что? Почему скачивается не то, что записано в package-lock.json?
источник

AR

Alexey Raspopov in BeerJS Summit
Хз, спроси npm install
источник

EL

Evgeniy Lazarev in BeerJS Summit
Alexey Raspopov
Хз, спроси npm install
Ну так это дырища и надо её срочно чинить
источник

EL

Evgeniy Lazarev in BeerJS Summit
Если есть package-lock.json, естественно, должно скачиваться ТОЛЬКО то, что там есть и проверено
источник